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..ab9b13e 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/platformActivityTheme"
                 android:label="@string/english_ime_settings"
                 android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
@@ -91,6 +95,7 @@
         </activity>
 
         <activity android:name=".spellcheck.SpellCheckerSettingsActivity"
+                  android:theme="@style/platformActivityTheme"
                   android:label="@string/android_spell_checker_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -98,6 +103,7 @@
         </activity>
 
         <activity android:name=".settings.DebugSettingsActivity"
+                android:theme="@style/platformActivityTheme"
                 android:label="@string/english_ime_debug_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -110,13 +116,14 @@
             </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 +150,8 @@
         </receiver>
 
         <activity android:name="com.android.inputmethod.dictionarypack.DictionarySettingsActivity"
+                android:theme="@style/platformActivityTheme"
                 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 +159,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..82e850c
--- /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_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..e2b9e3d
--- /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_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..2e6489c
--- /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_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..0b14822
--- /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_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..4bf38fc
--- /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_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..ea12c77
--- /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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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..9d6514b
--- /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_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..8ad54f6
--- /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_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..f9dd3b8
--- /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_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/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..5f5eb3f
--- /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_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_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
index d75fcac..d85663b 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
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_language_switch_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..edf9a20
--- /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_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..8a88a90
--- /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_previous_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..ee804ab
--- /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_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_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_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_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..f261302
--- /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_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_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..cb03e55
--- /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_smiley_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..3999d1e
--- /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_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..f344dee
--- /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_voice_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..6b68c8a
--- /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_off_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..e67697b
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.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..281b5d3
--- /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_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..eb15643
--- /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_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..9f244f2
--- /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_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..c5b3fbb
--- /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_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..66824cf
--- /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_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..527dfd0
--- /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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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..d320092
--- /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_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..60a3633
--- /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_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..8965055
--- /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_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/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..2d3ac97
--- /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_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_feedback_tab.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
index a10dc8f..fee1580 100644
--- a/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
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_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..a90bf75
--- /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_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..414cb0d
--- /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_previous_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..40655ca
--- /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_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_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_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_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..dea7add
--- /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_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_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..c10066e
--- /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_smiley_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..8276d99
--- /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_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..ed32cf6
--- /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_voice_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..5661f6b
--- /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_off_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..5182f1e
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.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..0f6a3e1
--- /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_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..44c84f1
--- /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_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..98c085b
--- /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_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..f0c1328
--- /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_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..a2b17ba
--- /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_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..99ff0af
--- /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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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..d40afeb
--- /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_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..d1a2f75
--- /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_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..36df715
--- /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_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/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..7c9f34f
--- /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_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_feedback_tab.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
index 0650e01..b0ee35d 100644
--- a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
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_language_switch_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..f964346
--- /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_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..8b5b0b4
--- /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_previous_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..9bc4fc8
--- /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_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_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_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_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..8c83d9f
--- /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_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_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..19acffa
--- /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_smiley_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..78923fa
--- /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_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..71234e5
--- /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_voice_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..4e9631e
--- /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_off_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..66c0e3c
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.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..dc67c6f
--- /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_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..2e12dd1
--- /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_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..4ec5864
--- /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_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..6b5c0c0
--- /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_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..6fd8eed
--- /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_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..9132288
--- /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/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_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_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_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_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_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_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_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_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_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_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_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_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_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_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..f781491
--- /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_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..a79499f
--- /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_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..91d5d7f
--- /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/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..dd95be6
--- /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_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_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_language_switch_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..fc85e51
--- /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_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..1e2819b
--- /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_previous_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..bae6cb1
--- /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_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_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_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_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..d513ad9
--- /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_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_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..ddfc1a9
--- /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_smiley_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..a4df3bb
--- /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_spacebar_lxx_dark.9.png b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png
new file mode 100644
index 0000000..01075eb
--- /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_voice_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..a36724c
--- /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_off_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..2706dca
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.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_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_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_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_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/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_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_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_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_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_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_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/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/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..9ff090a 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,7 @@
     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/suggestions_strip_height"
+        android:layout_height="@dimen/config_suggestions_strip_height"
     >
         <TabHost
             android:id="@+id/emoji_category_tabhost"
@@ -41,11 +41,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"
@@ -65,23 +61,26 @@
             android:layout_width="2dip"
             android:layout_height="match_parent"
             android:background="@drawable/suggestions_strip_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 +88,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..563599d 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:src="@drawable/suggestions_strip_divider"
+    android:contentDescription="@null"
+    android:clickable="false"
+    android:longClickable="false"
+    android:hapticFeedbackEnabled="false"
+    android:soundEffectsEnabled="false" />
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-bn-rWB/strings-action-keys.xml b/java/res/values-bn-rWB/strings-action-keys.xml
new file mode 100644
index 0000000..ca2e0eb
--- /dev/null
+++ b/java/res/values-bn-rWB/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-rWB/strings-appname.xml b/java/res/values-bn-rWB/strings-appname.xml
new file mode 100644
index 0000000..8efa51e
--- /dev/null
+++ b/java/res/values-bn-rWB/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-rWB/strings-config-important-notice.xml b/java/res/values-bn-rWB/strings-config-important-notice.xml
new file mode 100644
index 0000000..9bc815c
--- /dev/null
+++ b/java/res/values-bn-rWB/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-rWB/strings-letter-descriptions.xml b/java/res/values-bn-rWB/strings-letter-descriptions.xml
new file mode 100644
index 0000000..37879f3
--- /dev/null
+++ b/java/res/values-bn-rWB/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-rWB/strings-talkback-descriptions.xml b/java/res/values-bn-rWB/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..7cf17a1
--- /dev/null
+++ b/java/res/values-bn-rWB/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-rWB/strings.xml b/java/res/values-bn-rWB/strings.xml
new file mode 100644
index 0000000..21cfe5f
--- /dev/null
+++ b/java/res/values-bn-rWB/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">"ইংরেজি (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>
+    <!-- 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; মেনুতে &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-eu-rPV/strings-action-keys.xml b/java/res/values-eu-rPV/strings-action-keys.xml
new file mode 100644
index 0000000..1fba550
--- /dev/null
+++ b/java/res/values-eu-rPV/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-rPV/strings-appname.xml b/java/res/values-eu-rPV/strings-appname.xml
new file mode 100644
index 0000000..41ec09b
--- /dev/null
+++ b/java/res/values-eu-rPV/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-rPV/strings-config-important-notice.xml b/java/res/values-eu-rPV/strings-config-important-notice.xml
new file mode 100644
index 0000000..83d8fe5
--- /dev/null
+++ b/java/res/values-eu-rPV/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-rPV/strings-letter-descriptions.xml b/java/res/values-eu-rPV/strings-letter-descriptions.xml
new file mode 100644
index 0000000..11636cc
--- /dev/null
+++ b/java/res/values-eu-rPV/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-rPV/strings-talkback-descriptions.xml b/java/res/values-eu-rPV/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..949195d
--- /dev/null
+++ b/java/res/values-eu-rPV/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-rPV/strings.xml b/java/res/values-eu-rPV/strings.xml
new file mode 100644
index 0000000..5db18a9
--- /dev/null
+++ b/java/res/values-eu-rPV/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-gl-rGA/strings-action-keys.xml b/java/res/values-gl-rGA/strings-action-keys.xml
new file mode 100644
index 0000000..5ce96e6
--- /dev/null
+++ b/java/res/values-gl-rGA/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-rGA/strings-appname.xml b/java/res/values-gl-rGA/strings-appname.xml
new file mode 100644
index 0000000..df9e1f4
--- /dev/null
+++ b/java/res/values-gl-rGA/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-rGA/strings-config-important-notice.xml b/java/res/values-gl-rGA/strings-config-important-notice.xml
new file mode 100644
index 0000000..11f697d
--- /dev/null
+++ b/java/res/values-gl-rGA/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-rGA/strings-letter-descriptions.xml b/java/res/values-gl-rGA/strings-letter-descriptions.xml
new file mode 100644
index 0000000..d09e5c9
--- /dev/null
+++ b/java/res/values-gl-rGA/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-rGA/strings-talkback-descriptions.xml b/java/res/values-gl-rGA/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..d253d34
--- /dev/null
+++ b/java/res/values-gl-rGA/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-rGA/strings.xml b/java/res/values-gl-rGA/strings.xml
new file mode 100644
index 0000000..5ae06c3
--- /dev/null
+++ b/java/res/values-gl-rGA/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."</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 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&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/strings-talkback-descriptions.xml b/java/res/values-is/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..05b816a
--- /dev/null
+++ b/java/res/values-is/strings-talkback-descriptions.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.
+*/
+ -->
+
+<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 (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 />
+</resources>
diff --git a/java/res/values-is/strings.xml b/java/res/values-is/strings.xml
index 6f685d3..ab2f262 100644
--- a/java/res/values-is/strings.xml
+++ b/java/res/values-is/strings.xml
@@ -22,7 +22,6 @@
     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 />
@@ -126,106 +125,8 @@
     <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) -->
@@ -238,9 +139,7 @@
     <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 />
@@ -296,7 +195,6 @@
     <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 />
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-rKZ/strings-appname.xml b/java/res/values-kk-rKZ/strings-appname.xml
new file mode 100644
index 0000000..1e201fa
--- /dev/null
+++ b/java/res/values-kk-rKZ/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-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-talkback-descriptions.xml b/java/res/values-kk/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..39388a4
--- /dev/null
+++ b/java/res/values-kk/strings-talkback-descriptions.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.
+*/
+ -->
+
+<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="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 />
+    <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
+    <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">"Жою"</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>
+</resources>
diff --git a/java/res/values-kk/strings.xml b/java/res/values-kk/strings.xml
index 947ff2f..2978051 100644
--- a/java/res/values-kk/strings.xml
+++ b/java/res/values-kk/strings.xml
@@ -21,7 +21,6 @@
 <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>
@@ -73,66 +72,15 @@
     <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="gesture_space_aware" msgid="8244483979855138643">"Фраза қимылы"</string>
+    <string name="gesture_space_aware_summary" msgid="3226298212755100667">"Бос орын пернесін жанау арқылы қимылдар барысында бос орындарды енгізу"</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>
@@ -162,7 +110,6 @@
     <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>
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-kn-rKA/strings-action-keys.xml b/java/res/values-kn-rKA/strings-action-keys.xml
new file mode 100644
index 0000000..d54cbda
--- /dev/null
+++ b/java/res/values-kn-rKA/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-rKA/strings-appname.xml b/java/res/values-kn-rKA/strings-appname.xml
new file mode 100644
index 0000000..180915a
--- /dev/null
+++ b/java/res/values-kn-rKA/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-rKA/strings-config-important-notice.xml b/java/res/values-kn-rKA/strings-config-important-notice.xml
new file mode 100644
index 0000000..1ac5a29
--- /dev/null
+++ b/java/res/values-kn-rKA/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-rKA/strings-letter-descriptions.xml b/java/res/values-kn-rKA/strings-letter-descriptions.xml
new file mode 100644
index 0000000..90e7d2c
--- /dev/null
+++ b/java/res/values-kn-rKA/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-rKA/strings-talkback-descriptions.xml b/java/res/values-kn-rKA/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..15cef7c
--- /dev/null
+++ b/java/res/values-kn-rKA/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-rKA/strings.xml b/java/res/values-kn-rKA/strings.xml
new file mode 100644
index 0000000..6cc78ec
--- /dev/null
+++ b/java/res/values-kn-rKA/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/strings-talkback-descriptions.xml b/java/res/values-ky/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..f218bfe
--- /dev/null
+++ b/java/res/values-ky/strings-talkback-descriptions.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR 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 (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 />
+</resources>
diff --git a/java/res/values-ky/strings.xml b/java/res/values-ky/strings.xml
index e30c4b9..8165a3c 100644
--- a/java/res/values-ky/strings.xml
+++ b/java/res/values-ky/strings.xml
@@ -110,76 +110,12 @@
     <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) -->
@@ -190,9 +126,7 @@
     <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 />
@@ -202,7 +136,6 @@
     <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 />
diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml
index 7d93cc2..9ee4300 100644
--- a/java/res/values-land/config.xml
+++ b/java/res/values-land/config.xml
@@ -18,6 +18,61 @@
 */
 -->
 
+<!-- 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>
+    <!-- left or right padding of label alignment -->
+    <dimen name="config_key_label_horizontal_padding">8dp</dimen>
+
+    <!-- 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/strings-talkback-descriptions.xml b/java/res/values-mk/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..05b816a
--- /dev/null
+++ b/java/res/values-mk/strings-talkback-descriptions.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.
+*/
+ -->
+
+<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 (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 />
+</resources>
diff --git a/java/res/values-mk/strings.xml b/java/res/values-mk/strings.xml
index 6f685d3..ab2f262 100644
--- a/java/res/values-mk/strings.xml
+++ b/java/res/values-mk/strings.xml
@@ -22,7 +22,6 @@
     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 />
@@ -126,106 +125,8 @@
     <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) -->
@@ -238,9 +139,7 @@
     <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 />
@@ -296,7 +195,6 @@
     <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 />
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-ml-rKL/strings-action-keys.xml b/java/res/values-ml-rKL/strings-action-keys.xml
new file mode 100644
index 0000000..46a8cfc
--- /dev/null
+++ b/java/res/values-ml-rKL/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-rKL/strings-appname.xml b/java/res/values-ml-rKL/strings-appname.xml
new file mode 100644
index 0000000..940ee81
--- /dev/null
+++ b/java/res/values-ml-rKL/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-rKL/strings-config-important-notice.xml b/java/res/values-ml-rKL/strings-config-important-notice.xml
new file mode 100644
index 0000000..7cdc17b
--- /dev/null
+++ b/java/res/values-ml-rKL/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-rKL/strings-letter-descriptions.xml b/java/res/values-ml-rKL/strings-letter-descriptions.xml
new file mode 100644
index 0000000..0a845df
--- /dev/null
+++ b/java/res/values-ml-rKL/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-rKL/strings-talkback-descriptions.xml b/java/res/values-ml-rKL/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..3577bbb
--- /dev/null
+++ b/java/res/values-ml-rKL/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-rKL/strings.xml b/java/res/values-ml-rKL/strings.xml
new file mode 100644
index 0000000..e27df48
--- /dev/null
+++ b/java/res/values-ml-rKL/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-mr-rMH/strings-action-keys.xml b/java/res/values-mr-rMH/strings-action-keys.xml
new file mode 100644
index 0000000..4dadfea
--- /dev/null
+++ b/java/res/values-mr-rMH/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-rMH/strings-appname.xml b/java/res/values-mr-rMH/strings-appname.xml
new file mode 100644
index 0000000..80f11e7
--- /dev/null
+++ b/java/res/values-mr-rMH/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-rMH/strings-config-important-notice.xml b/java/res/values-mr-rMH/strings-config-important-notice.xml
new file mode 100644
index 0000000..3ec6e26
--- /dev/null
+++ b/java/res/values-mr-rMH/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-rMH/strings-letter-descriptions.xml b/java/res/values-mr-rMH/strings-letter-descriptions.xml
new file mode 100644
index 0000000..995aa25
--- /dev/null
+++ b/java/res/values-mr-rMH/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-rMH/strings-talkback-descriptions.xml b/java/res/values-mr-rMH/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..41c64f4
--- /dev/null
+++ b/java/res/values-mr-rMH/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-rMH/strings.xml b/java/res/values-mr-rMH/strings.xml
new file mode 100644
index 0000000..3ef3cf2
--- /dev/null
+++ b/java/res/values-mr-rMH/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-talkback-descriptions.xml b/java/res/values-rm/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..05b816a
--- /dev/null
+++ b/java/res/values-rm/strings-talkback-descriptions.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.
+*/
+ -->
+
+<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 (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 />
+</resources>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index 3f0bab9..526ec73 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -22,7 +22,6 @@
     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 />
@@ -122,105 +121,8 @@
     <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>
@@ -231,8 +133,6 @@
     <!-- 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 />
@@ -288,7 +188,6 @@
     <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 />
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..ba8b52f
--- /dev/null
+++ b/java/res/values-sw600dp-land/config.xml
@@ -0,0 +1,68 @@
+<?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>
+    <!-- left or right padding of label alignment -->
+    <dimen name="config_key_label_horizontal_padding">18dp</dimen>
+    <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..d97538d 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,71 @@
 */
 -->
 
+<!-- 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>
+    <!-- left or right padding of label alignment -->
+    <dimen name="config_key_label_horizontal_padding">6dp</dimen>
+    <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..63f86ba 100644
--- a/java/res/values-sw768dp-land/config.xml
+++ b/java/res/values-sw768dp-land/config.xml
@@ -18,6 +18,51 @@
 */
 -->
 
+<!-- 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>
+    <!-- left or right padding of label alignment -->
+    <dimen name="config_key_label_horizontal_padding">18dp</dimen>
+
+    <!-- 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..94b38d8 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -18,28 +18,69 @@
 */
 -->
 
+<!-- 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>
+    <!-- left or right padding of label alignment -->
+    <dimen name="config_key_label_horizontal_padding">6dp</dimen>
+    <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-ta-rTN/strings-action-keys.xml b/java/res/values-ta-rTN/strings-action-keys.xml
new file mode 100644
index 0000000..c07de35
--- /dev/null
+++ b/java/res/values-ta-rTN/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-rTN/strings-appname.xml b/java/res/values-ta-rTN/strings-appname.xml
new file mode 100644
index 0000000..5ad5eae
--- /dev/null
+++ b/java/res/values-ta-rTN/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-rTN/strings-config-important-notice.xml b/java/res/values-ta-rTN/strings-config-important-notice.xml
new file mode 100644
index 0000000..ae9a4ca
--- /dev/null
+++ b/java/res/values-ta-rTN/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-rTN/strings-letter-descriptions.xml b/java/res/values-ta-rTN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..e1254aa
--- /dev/null
+++ b/java/res/values-ta-rTN/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-rTN/strings-talkback-descriptions.xml b/java/res/values-ta-rTN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..a65c8de
--- /dev/null
+++ b/java/res/values-ta-rTN/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-rTN/strings.xml b/java/res/values-ta-rTN/strings.xml
new file mode 100644
index 0000000..14f64c6
--- /dev/null
+++ b/java/res/values-ta-rTN/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-rAP/strings-action-keys.xml b/java/res/values-te-rAP/strings-action-keys.xml
new file mode 100644
index 0000000..279b7fd
--- /dev/null
+++ b/java/res/values-te-rAP/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-rAP/strings-appname.xml b/java/res/values-te-rAP/strings-appname.xml
new file mode 100644
index 0000000..c644e5f
--- /dev/null
+++ b/java/res/values-te-rAP/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-rAP/strings-config-important-notice.xml b/java/res/values-te-rAP/strings-config-important-notice.xml
new file mode 100644
index 0000000..92ea883
--- /dev/null
+++ b/java/res/values-te-rAP/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-rAP/strings-letter-descriptions.xml b/java/res/values-te-rAP/strings-letter-descriptions.xml
new file mode 100644
index 0000000..a1d0258
--- /dev/null
+++ b/java/res/values-te-rAP/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-rAP/strings-talkback-descriptions.xml b/java/res/values-te-rAP/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..175b13e
--- /dev/null
+++ b/java/res/values-te-rAP/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-rAP/strings.xml b/java/res/values-te-rAP/strings.xml
new file mode 100644
index 0000000..fa46f64
--- /dev/null
+++ b/java/res/values-te-rAP/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-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-v20/platform-theme.xml b/java/res/values-v20/platform-theme.xml
new file mode 100644
index 0000000..52e7f35
--- /dev/null
+++ b/java/res/values-v20/platform-theme.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.
+*/
+-->
+
+<!-- TODO: This file is temporarily placed under values-v20. -->
+<!-- TODO: It might be moved under values-v21. -->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="platformActivityTheme" parent="@android:style/Theme.Material.Light" />
+    <style name="platformDialogTheme" parent="@android:style/Theme.Material.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..396c166 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,13 +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" />
-
+        <!-- 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" />
         <!-- Horizontal padding of left/right aligned key label to the edge of the key. -->
         <attr name="keyLabelHorizontalPadding" format="dimension" />
         <!-- Right padding of hint letter to the edge of the key.-->
@@ -69,12 +71,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 +90,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 +104,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 +170,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,10 +227,14 @@
         <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" />
@@ -235,10 +252,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 +283,22 @@
             <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="alignButtom" value="0x04" />
             <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,24 +307,28 @@
             <flag name="hasPopupHint" value="0x200" />
             <flag name="hasShiftedLetterHint" value="0x400" />
             <flag name="hasHintLabel" value="0x800" />
+            <!-- These two flags are currently unused. Leave these for possible future use. -->
             <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. -->
@@ -361,6 +380,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 +436,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 +452,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 +489,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..0eee08d 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,31 @@
     <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 theme. Base color = F0F0F0 -->
+    <color name="key_text_color_lxx_dark">#FFFFFF</color>
+    <color name="key_text_inactive_color_lxx_dark">#808184</color>
+    <color name="key_hint_letter_color_lxx_dark">#808184</color>
+    <color name="highlight_color_lxx_dark">#7FCAC3</color>
+    <color name="typed_word_color_lxx_dark">#D87FCAC3</color>
+    <color name="suggested_word_color_lxx_dark">#B27FCAC3</color>
+    <color name="highlight_translucent_color_lxx_dark">#997FCAC3</color>
+    <color name="keyboard_background_lxx_dark">#384248</color>
+    <color name="key_background_lxx_dark">#384248</color>
+    <color name="key_background_pressed_lxx_dark">#546872</color>
+    <color name="suggestions_strip_background_lxx_dark">#263238</color>
+    <color name="suggested_word_background_selected_lxx_dark">#384248</color>
+    <color name="gesture_floating_preview_color_lxx_dark">#C0000000</color>
+    <color name="emoji_tab_page_indicator_background_lxx_dark">#263238</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..7091213 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -18,120 +18,72 @@
 */
 -->
 
+<!-- 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_label_horizontal_padding">4dp</dimen>
+    <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..669d2c0 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,7 +29,6 @@
         <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>
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..6e9c4d1
--- /dev/null
+++ b/java/res/values/keyboard-icons-lxx-dark.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.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardIcons.LXX_Dark">
+        <!-- Keyboard icons -->
+        <!-- TODO: Update those icons for LXX theme. -->
+        <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_holo_dark</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_lxx_dark</item>
+        <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="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_lxx_dark</item>
+        <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_lxx_dark</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..28a34c3
--- /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">
+        <!-- TODO: Implement Material Light theme. -->
+        <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">
+        <!-- TODO: Implement Material Light theme. -->
+        <item>3</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..8e131a2
--- /dev/null
+++ b/java/res/values/platform-theme.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">
+    <style name="platformActivityTheme" parent="@android:style/Theme.Holo" />
+    <style name="platformDialogTheme" parent="@android:style/Theme.Holo.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..9ec3f46 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=25]-->
+    <string name="settings_screen_input">Input preferences</string>
+    <!-- Settings screen title for appearance preferences [CHAR LIMIT=25] -->
+    <string name="settings_screen_appearances">Appearance</string>
+    <!-- Settings screen title for multi lingual options [CHAR_LIMIT=25] -->
+    <string name="settings_screen_multi_lingual">Multi lingual options</string>
+    <!-- Settings screen title for gesture typing preferences [CHAR_LIMIT=25] -->
+    <string name="settings_screen_gesture">Gesture typing preferences</string>
+    <!-- Settings screen title for text correction options [CHAR_LIMIT=25] -->
+    <string name="settings_screen_correction">Text correction</string>
+    <!-- Settings screen title for advanced settings [CHAR LIMIT=25] -->
+    <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 [CHAR LIMIT=25] -->
+    <string name="keyboard_theme_holo_white">Holo White</string>
+    <!-- The keyboard theme name, Holo Blue [CHAR LIMIT=25] -->
+    <string name="keyboard_theme_holo_blue">Holo Blue</string>
+    <!-- The keyboard theme name, Material Dark [CHAR LIMIT=25] -->
+    <string name="keyboard_theme_material_dark">Material Dark</string>
+    <!-- The keyboard theme name, Material Light [CHAR LIMIT=25] -->
+    <string name="keyboard_theme_material_light">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..2b2a80a 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -25,49 +25,49 @@
         <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="keyLabelHorizontalPadding">@dimen/config_key_label_horizontal_padding</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 +75,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 +107,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..073ae90 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,32 @@
         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="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..f895de5 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,32 @@
         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="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..1db8f42
--- /dev/null
+++ b/java/res/values/themes-lxx-dark.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_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">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_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_text_inactive_color_lxx_dark</item>
+        <item name="functionalTextColor">@color/key_hint_letter_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/highlight_color_lxx_dark</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_lxx_dark</item>
+        <item name="gestureTrailColor">@color/highlight_color_lxx_dark</item>
+        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_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>
+        <!-- TODO: Update those icons to LXX_Dark theme. -->
+        <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.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>
+        <!-- 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_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="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/highlight_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/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..71ae5fd 100644
--- a/java/res/xml-sw600dp/key_space_5kw.xml
+++ b/java/res/xml-sw600dp/key_space_5kw.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:languageCode="fa"
+            latin:languageCode="fa|ne"
             latin:languageSwitchKeyEnabled="true"
         >
             <Key
@@ -35,7 +35,7 @@
                 latin:keyStyle="zwnjKeyStyle" />
         </case>
         <case
-            latin:languageCode="fa"
+            latin:languageCode="fa|ne"
             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..7de2769 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,8 +120,7 @@
         >
             <key-style
                 latin:styleName="tabKeyStyle"
-                latin:code="!code/key_action_previous"
-                latin:keyIcon="!icon/tab_key"
+                latin:keySpec="!icon/tab_key|!code/key_action_previous"
                 latin:keyIconPreview="!icon/tab_key_preview"
                 latin:backgroundType="functional" />
         </case>
@@ -149,49 +130,42 @@
         >
             <key-style
                 latin:styleName="tabKeyStyle"
-                latin:code="!code/key_action_next"
-                latin:keyIcon="!icon/tab_key"
+                latin:keySpec="!icon/tab_key|!code/key_action_next"
                 latin:keyIconPreview="!icon/tab_key_preview"
                 latin:backgroundType="functional" />
         </case>
         <default>
             <key-style
                 latin:styleName="tabKeyStyle"
-                latin:code="!code/key_tab"
-                latin:keyIcon="!icon/tab_key"
+                latin:keySpec="!icon/tab_key|!code/key_tab"
                 latin:keyIconPreview="!icon/tab_key_preview"
                 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_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_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_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..0300e4a 100644
--- a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
+++ b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
@@ -22,12 +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_compact">
+            <!-- U+094D: "्" DEVANAGARI SIGN VIRAMA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x094D;" />
+        </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_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_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_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_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..8b3bb2e 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,98 @@
         >
             <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:keySpec="!icon/tab_key|!code/key_tab"
         latin:keyIconPreview="!icon/tab_key_preview"
         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:keySpec="!icon/tab_key|!code/key_tab"
         latin:keyIconPreview="!icon/tab_key_preview" />
     <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..f576d04 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -50,7 +50,7 @@
              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"
@@ -92,7 +92,34 @@
             <include
                 latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
-        <!-- fa: Persian (Rial and Afgahni)
+        <!-- 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>
+        <!-- bn: Bengali (Bangladesh Taka)
+             fa: Persian (Rial and Afgahni)
              hi: Hindi (Indian Rupee)
              iw: Hebrew (New Sheqel)
              lo: Lao (Kip)
@@ -106,28 +133,28 @@
         <!-- 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"
+            latin:languageCode="bn|fa|hi|iw|lo|mn|ne|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>
         <!-- GB: United Kingdom (Pound) -->
         <case
@@ -140,21 +167,21 @@
                  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>
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..8a76fe3 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,14 @@
         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:keyLabelFlags="alignButtom"
         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_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/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..a7c5998 100644
--- a/java/res/xml/keystyle_devanagari_sign_virama.xml
+++ b/java/res/xml/keystyle_devanagari_sign_virama.xml
@@ -22,14 +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_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+094D: "्" DEVANAGARI SIGN VIRAMA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x25CC;&#x094D;|&#x094D;" />
+        </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..67be242 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -24,54 +24,65 @@
     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
     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
+    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
@@ -88,19 +99,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 +122,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 +130,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 +138,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 +162,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 +170,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 +188,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 +196,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 +204,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 +212,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 +228,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 +244,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 +252,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 +260,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 +292,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 +300,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 +308,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 +316,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 +340,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 +358,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 +366,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 +374,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 +383,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 +391,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 +399,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 +416,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 +424,23 @@
             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"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -340,6 +448,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 +456,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 +464,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 +472,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 +480,7 @@
             android:imeSubtypeLocale="mk"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=south_slavic,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -375,6 +488,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 +506,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 +524,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 +556,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 +564,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 +572,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 +580,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 +588,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 +596,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 +614,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 +622,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 +630,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 +639,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 +647,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 +656,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 +664,7 @@
             android:imeSubtypeLocale="sw"
             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"
@@ -512,6 +672,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 +680,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 +688,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 +696,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 +704,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 +712,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 +720,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 +731,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..e71d951 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,67 @@
         <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" />
+    </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 +127,74 @@
             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: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
index 8d9508e..ae29a8a 100644
--- a/java/res/xml/prefs_for_debug.xml
+++ b/java/res/xml/prefs_for_debug.xml
@@ -14,51 +14,55 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+<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: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" />
-
+        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..c1fd8b4
--- /dev/null
+++ b/java/res/xml/rowkeys_bengali1.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">
+    <!-- U+0994: "ঔ" BENGALI LETTER AU
+         U+09E7: "১" BENGALI DIGIT ONE -->
+    <Key
+        latin:keySpec="&#x0994;"
+        latin:keyHintLabel="&#x09E7;"
+        latin:additionalMoreKeys="&#x09E7;,1" />
+    <!-- U+0990: "ঐ" BENGALI LETTER AI
+         U+09E8: "২" BENGALI DIGIT TWO -->
+    <Key
+        latin:keySpec="&#x0990;"
+        latin:keyHintLabel="&#x09E8;"
+        latin:additionalMoreKeys="&#x09E8;,2" />
+    <!-- U+0986: "আ" BENGALI LETTER AA
+         U+09E9: "৩" BENGALI DIGIT THREE -->
+    <Key
+        latin:keySpec="&#x0986;"
+        latin:keyHintLabel="&#x09E9;"
+        latin:additionalMoreKeys="&#x09E9;,3" />
+    <!-- U+0988: "ঈ" BENGALI LETTER II
+         U+09EA: "৪" BENGALI DIGIT FOUR -->
+    <Key
+        latin:keySpec="&#x0988;"
+        latin:keyHintLabel="&#x09EA;"
+        latin:additionalMoreKeys="&#x09EA;,4" />
+    <!-- U+098A: "ঊ" BENGALI LETTER UU
+         U+09EB: "৫" BENGALI DIGIT FIVE -->
+    <Key
+        latin:keySpec="&#x098A;"
+        latin:keyHintLabel="&#x09EB;"
+        latin:additionalMoreKeys="&#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..7cbe5ef
--- /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="moreKeysDevanagariSignVirama" />
+    <!-- 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..89a9f9d
--- /dev/null
+++ b/java/res/xml/rowkeys_hindi_compact3.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">
+    <!-- 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_vowel_sign_candra_e" />
+    <!-- U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+    <Key
+        latin:keySpec="&#x090D;"
+        latin:keyStyle="moreKeysDevanagariVowelSignCandraE" />
+    <!-- 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_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_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..d7aca00
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar2.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">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+1017: "ဗ" MYANMAR LETTER BA -->
+            <Key latin:keySpec="&#x1017;" />
+            <!-- U+1012: "ဒ" MYANMAR LETTER DA -->
+            <Key latin:keySpec="&#x1012;" />
+            <!-- U+1013: "ဓ" MYANMAR LETTER DHA -->
+            <Key latin:keySpec="&#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 -->
+            <Key latin:keySpec="&#x1008;" />
+            <!-- U+1007: "ဇ" MYANMAR LETTER JA -->
+            <Key latin:keySpec="&#x1007;" />
+            <!-- U+1002: "ဂ" MYANMAR LETTER GA -->
+            <Key latin:keySpec="&#x1002;" />
+        </case>
+        <default>
+            <!-- U+1006: "ဆ" MYANMAR LETTER CHA -->
+            <Key latin:keySpec="&#x1006;" />
+            <!-- U+1010: "တ" MYANMAR LETTER TA -->
+            <Key latin:keySpec="&#x1010;" />
+            <!-- U+1014: "န" MYANMAR LETTER NA -->
+            <Key latin:keySpec="&#x1014;" />
+            <!-- U+1019: "မ" MYANMAR LETTER MA -->
+            <Key latin:keySpec="&#x1019;" />
+            <!-- U+1021: "အ" MYANMAR LETTER A -->
+            <Key latin:keySpec="&#x1021;" />
+            <!-- U+1015: "ပ" MYANMAR LETTER PA -->
+            <Key latin:keySpec="&#x1015;" />
+            <!-- U+1000: "က" MYANMAR LETTER KA -->
+            <Key latin:keySpec="&#x1000;" />
+            <!-- U+1004: "င" MYANMAR LETTER NGA -->
+            <Key latin:keySpec="&#x1004;" />
+            <!-- U+101E: "သ" MYANMAR LETTER SA -->
+            <Key latin:keySpec="&#x101E;" />
+            <!-- U+1005: "စ" MYANMAR LETTER CA -->
+            <Key latin:keySpec="&#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..c585068
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar3.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT 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 -->
+            <Key latin:keySpec="&#x102C;" />
+            <!-- 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..210ebaa
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar4.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">
+    <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 -->
+            <Key latin:keySpec="&#x1011;" />
+            <!-- U+1001: "ခ" MYANMAR LETTER KHA -->
+            <Key latin:keySpec="&#x1001;" />
+            <!-- U+101C: "လ" MYANMAR LETTER LA -->
+            <Key latin:keySpec="&#x101C;" />
+            <!-- U+1018: "ဘ" MYANMAR LETTER BHA -->
+            <Key latin:keySpec="&#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..fcad5ea
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala1.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT 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;"
+                latin:keyLabelFlags="autoXScale" />
+        </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_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_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_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_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/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..81df171 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
@@ -17,11 +17,12 @@
 package com.android.inputmethod.compat;
 
 import android.inputmethodservice.InputMethodService;
+import com.android.inputmethod.latin.define.ProductionFlag;
 
 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");
@@ -34,4 +35,30 @@
         return (Boolean)CompatUtils.invoke(ims, false /* defaultValue */,
                 METHOD_enableHardwareAcceleration);
     }
+
+    public static void setCursorAnchorMonitorMode(final InputMethodService ims, final int mode) {
+        if (ProductionFlag.USES_CURSOR_ANCHOR_MONITOR) {
+            ExperimentalAPIUtils.setCursorAnchorMonitorMode(ims, mode);
+        }
+    }
+
+    /*
+     * For unreleased APIs. ProGuard will strip this class entirely, unless used explicitly.
+     */
+    private static final class ExperimentalAPIUtils {
+        // Note that {@link InputMethodManager#setCursorAnchorMonitorMode} is not yet available as
+        // an official API as of API level 19 (Build.VERSION_CODES.KITKAT).
+        private static final Method METHOD_setCursorAnchorMonitorMode = CompatUtils.getMethod(
+                InputMethodService.class, "setCursorAnchorMonitorMode", int.class);
+
+        private ExperimentalAPIUtils() {
+            // This utility class is not publicly instantiable.
+        }
+
+        public static void setCursorAnchorMonitorMode(final InputMethodService ims,
+                final int mode) {
+            CompatUtils.invoke(ims, null /* defaultValue */,
+                    METHOD_setCursorAnchorMonitorMode, mode);
+        }
+    }
 }
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..4d51821 100644
--- a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
+++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
@@ -25,8 +25,8 @@
 
 import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
@@ -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/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..ed3b2b3 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.
      */
@@ -68,9 +60,13 @@
     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_BUTTOM = 0x04;
     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;
@@ -84,10 +80,17 @@
     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,8 +142,6 @@
 
     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;
@@ -185,26 +186,20 @@
     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;
@@ -215,7 +210,7 @@
         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 +219,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 +256,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 +267,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 +291,25 @@
             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 previewIconId = KeySpecParser.getIconId(style.getString(keyAttr,
+                R.styleable.Keyboard_Key_keyIconPreview));
+
+        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 +318,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 +354,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);
         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 +471,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 +570,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 +600,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) {
@@ -678,6 +662,10 @@
         return (mLabelFlags & LABEL_FLAGS_ALIGN_RIGHT) != 0;
     }
 
+    public final boolean isAlignButtom() {
+        return (mLabelFlags & LABEL_FLAGS_ALIGN_BUTTOM) != 0;
+    }
+
     public final boolean isAlignLeftOfCenter() {
         return (mLabelFlags & LABEL_FLAGS_ALIGN_LEFT_OF_CENTER) != 0;
     }
@@ -687,7 +675,8 @@
     }
 
     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() {
@@ -702,12 +691,17 @@
         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 +740,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);
@@ -761,7 +759,7 @@
         final OptionalAttributes attrs = mOptionalAttributes;
         final int previewIconId = (attrs != null) ? attrs.mPreviewIconId : ICON_UNDEFINED;
         return previewIconId != ICON_UNDEFINED
-                ? iconSet.getIconDrawable(previewIconId) : iconSet.getIconDrawable(mIconId);
+                ? iconSet.getIconDrawable(previewIconId) : iconSet.getIconDrawable(getIconId());
     }
 
     public int getWidth() {
@@ -883,17 +881,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 +893,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 +943,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..d01c4cc 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,6 +31,7 @@
 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;
@@ -41,8 +39,8 @@
 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.utils.InputTypeUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 import com.android.inputmethod.latin.utils.XmlParseUtils;
 
@@ -66,6 +64,7 @@
 
     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..7b41dfe
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -0,0 +1,182 @@
+/*
+ * 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_DARK = 3;
+    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_DARK, R.style.KeyboardTheme_LXX_Dark,
+                // Default theme for LXX.
+                // TODO: Update this constant once the *next* version becomes available.
+                VERSION_CODES.CUR_DEVELOPMENT),
+    };
+
+    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..c4ca1c4 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,6 +44,9 @@
  * A view that renders a virtual {@link Keyboard}.
  *
  * @attr ref R.styleable#KeyboardView_keyBackground
+ * @attr ref R.styleable#KeyboardView_functionalKeyBackground
+ * @attr ref R.styleable#KeyboardView_spacebarBackground
+ * @attr ref R.styleable#KeyboardView_spacebarIconWidthRatio
  * @attr ref R.styleable#KeyboardView_keyLabelHorizontalPadding
  * @attr ref R.styleable#KeyboardView_keyHintLetterPadding
  * @attr ref R.styleable#KeyboardView_keyPopupHintLetterPadding
@@ -81,7 +81,11 @@
     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";
@@ -102,7 +106,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 +117,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,6 +128,15 @@
                 R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
         mKeyBackground = keyboardViewAttr.getDrawable(R.styleable.KeyboardView_keyBackground);
         mKeyBackground.getPadding(mKeyBackgroundPadding);
+        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);
         mKeyLabelHorizontalPadding = keyboardViewAttr.getDimensionPixelOffset(
                 R.styleable.KeyboardView_keyLabelHorizontalPadding, 0);
         mKeyHintLetterPadding = keyboardViewAttr.getDimension(
@@ -136,7 +146,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 +159,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 +184,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 +301,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 +313,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 +328,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 +338,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 +362,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,10 +369,8 @@
         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;
@@ -391,12 +388,12 @@
                 positionX = centerX - labelCharWidth * 7.0f / 4.0f;
                 paint.setTextAlign(Align.LEFT);
             } else if (key.hasLabelWithIconLeft() && icon != null) {
-                labelWidth = TypefaceUtils.getLabelWidth(label, paint) + icon.getIntrinsicWidth()
+                labelWidth = TypefaceUtils.getStringWidth(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()
+                labelWidth = TypefaceUtils.getStringWidth(label, paint) + icon.getIntrinsicWidth()
                         + LABEL_ICON_MARGIN * keyWidth;
                 positionX = centerX - labelWidth / 2.0f;
                 paint.setTextAlign(Align.LEFT);
@@ -404,23 +401,34 @@
                 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) {
@@ -435,12 +443,6 @@
                     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 +453,57 @@
             // 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;
-            final int iconY = (keyHeight - iconHeight) / 2;
+            final int iconY = key.isAlignButtom() ? keyHeight - iconHeight
+                    : (keyHeight - iconHeight) / 2;
+            final int iconX;
             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;
             }
             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 +522,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 +535,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 +542,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..b6905bc 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.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();
-    }
-
     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..e0589fc
--- /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.LatinImeLogger;
+import com.android.inputmethod.latin.R;
+
+// 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 = LatinImeLogger.sDBG;
+
+    // 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..0b0e761 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,15 +134,12 @@
 
         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);
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..7146deb 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -23,45 +23,73 @@
 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 NANE_TAB_KEY_PREVIEW = "tab_key_preview";
+    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,
+        NANE_TAB_KEY_PREVIEW,             R.styleable.Keyboard_iconTabKeyPreview,
+        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 +97,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 +114,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 +131,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 +139,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..6afc621
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -0,0 +1,3892 @@
+/*
+ * 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:24 */ "keylabel_to_alpha",
+        /*   6:23 */ "morekeys_c",
+        /*   7:23 */ "double_quotes",
+        /*   8:22 */ "morekeys_n",
+        /*   9:22 */ "single_quotes",
+        /*  10:20 */ "morekeys_s",
+        /*  11:14 */ "morekeys_y",
+        /*  12:13 */ "morekeys_d",
+        /*  13:12 */ "morekeys_z",
+        /*  14:11 */ "keyspec_currency",
+        /*  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 */ "morekeys_tablet_comma",
+        /*  78: 3 */ "keyhintlabel_period",
+        /*  79: 3 */ "morekeys_tablet_period",
+        /*  80: 3 */ "morekeys_question",
+        /*  81: 2 */ "morekeys_h",
+        /*  82: 2 */ "morekeys_w",
+        /*  83: 2 */ "morekeys_east_slavic_row2_2",
+        /*  84: 2 */ "morekeys_cyrillic_u",
+        /*  85: 2 */ "morekeys_cyrillic_en",
+        /*  86: 2 */ "morekeys_cyrillic_ghe",
+        /*  87: 2 */ "morekeys_cyrillic_o",
+        /*  88: 2 */ "morekeys_cyrillic_i",
+        /*  89: 2 */ "keyspec_south_slavic_row1_6",
+        /*  90: 2 */ "keyspec_south_slavic_row2_11",
+        /*  91: 2 */ "keyspec_south_slavic_row3_1",
+        /*  92: 2 */ "keyspec_south_slavic_row3_8",
+        /*  93: 2 */ "morekeys_tablet_punctuation",
+        /*  94: 2 */ "keyspec_spanish_row2_10",
+        /*  95: 2 */ "morekeys_bullet",
+        /*  96: 2 */ "morekeys_left_parenthesis",
+        /*  97: 2 */ "morekeys_right_parenthesis",
+        /*  98: 2 */ "morekeys_arabic_diacritics",
+        /*  99: 2 */ "keyspec_comma",
+        /* 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, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_z */
+        /* keyspec_currency */ "$",
+        /* morekeys_t ~ */
+        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",
+        /* 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,
+        // Comma key
+        /* keyspec_comma */ ",",
+        /* 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,
+        /* morekeys_s */ null,
+        // 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",
+        /* 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",
+        // U+060C: "،" ARABIC COMMA
+        /* keyspec_comma */ "\u060C",
+        /* 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",
+        /* morekeys_y ~ */
+        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: Bengali */
+    private static final String[] TEXTS_bn = {
+        /* 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, null, null, null,
+        /* ~ morekeys_z */
+        // 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,
+        /* ~ 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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",
+        // 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, null, null,
+        /* ~ morekeys_t */
+        // 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",
+        /* morekeys_y ~ */
+        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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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,
+        /* ~ 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, 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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, null, null, null,
+        /* ~ morekeys_z */
+        // U+FDFC: "﷼" RIAL SIGN
+        /* keyspec_currency */ "\uFDFC",
+        /* morekeys_t ~ */
+        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",
+        /* 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",
+        // U+060C: "،" ARABIC COMMA
+        /* keyspec_comma */ "\u060C",
+        /* 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",
+        /* morekeys_y */ null,
+        /* morekeys_d */ 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
+        /* morekeys_z */ "\u017E,\u017A,\u017C",
+        /* keyspec_currency ~ */
+        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+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,
+        /* ~ morekeys_s */
+        // 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, 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, null, null, null,
+        /* ~ morekeys_z */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+        /* morekeys_t ~ */
+        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",
+        /* 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",
+        /* keyspec_currency ~ */
+        null, 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,;,:",
+        // 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_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, null, null,
+        /* ~ keyhintlabel_period */
+        /* 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, 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,
+        // 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,
+        /* keyspec_currency */ 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, null, null, null,
+        /* ~ morekeys_z */
+        // U+20AA: "₪" NEW SHEQEL SIGN
+        /* keyspec_currency */ "\u20AA",
+        /* morekeys_t ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, 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",
+        /* morekeys_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, 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,
+        /* ~ 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, 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 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,
+        /* ~ 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, null, null, null,
+        /* ~ morekeys_z */
+        // 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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,
+        /* ~ 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 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, null, null, null,
+        /* ~ morekeys_z */
+        // 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, null, null, null,
+        /* ~ morekeys_z */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+        /* morekeys_t ~ */
+        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,
+        /* ~ keyspec_right_single_angle_quote */
+        /* 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, 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, null, null, null,
+        /* ~ morekeys_z */
+        // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
+        /* keyspec_currency */ "\u0930\u0941.",
+        /* morekeys_t ~ */
+        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,
+        // 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",
+        /* morekeys_y */ null,
+        /* morekeys_d */ null,
+        // 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",
+        /* keyspec_currency */ null,
+        /* 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",
+        /* morekeys_y ~ */
+        null, null, null, null,
+        /* ~ keyspec_currency */
+        // 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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",
+        /* 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",
+        /* keyspec_currency ~ */
+        null, 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,
+        /* ~ 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_l */
+        /* morekeys_g */ "g\'",
+    };
+
+    /* 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, null, null, null,
+        /* ~ morekeys_z */
+        // 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",
+        /* morekeys_y ~ */
+        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, null, null, null,
+        /* ~ morekeys_z */
+        // U+20B4: "₴" HRYVNIA SIGN
+        /* keyspec_currency */ "\u20B4",
+        /* morekeys_t ~ */
+        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,
+        /* ~ 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+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",
+        /* morekeys_z */ null,
+        // U+20AB: "₫" DONG SIGN
+        /* keyspec_currency */ "\u20AB",
+    };
+
+    /* 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",
+        // 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",
+        /* keyspec_currency */ null,
+        // 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,
+        /* ~ 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, 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/ 12 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"     , TEXTS_bn,    /*   2/ 15 Bengali */
+        "ca"     , TEXTS_ca,    /*  11/ 95 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, /*   8/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) */
+        "ky"     , TEXTS_ky,    /*  10/ 88 Kirghiz */
+        "lo_LA"  , TEXTS_lo_LA, /*   2/ 15 Lao (Laos) */
+        "lt"     , TEXTS_lt,    /*  18/ 22 Lithuanian */
+        "lv"     , TEXTS_lv,    /*  18/ 22 Latvian */
+        "mk"     , TEXTS_mk,    /*   9/ 93 Macedonian */
+        "mn_MN"  , TEXTS_mn_MN, /*   2/ 15 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/ 12 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/ 93 Serbian */
+        "sv"     , TEXTS_sv,    /*  21/ 54 Swedish */
+        "sw"     , TEXTS_sw,    /*   9/ 18 Swahili */
+        "th"     , TEXTS_th,    /*   2/ 15 Thai */
+        "tl"     , TEXTS_tl,    /*   7/  9 Tagalog */
+        "tr"     , TEXTS_tr,    /*   7/ 18 Turkish */
+        "uk"     , TEXTS_uk,    /*  11/ 87 Ukrainian */
+        "vi"     , TEXTS_vi,    /*   8/ 15 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..e0d5173 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.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 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 = LatinImeLogger.sDBG;
+    // 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/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..1b57918 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -17,19 +17,27 @@
 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.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 +48,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 +61,34 @@
     @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";
+
     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 +96,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 +119,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 +152,168 @@
             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 PrevWordsInfo prevWordsInfo, 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 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(blockOffensiveWords);
+        session.mNativeSuggestOptions.setAdditionalFeaturesOptions(additionalFeaturesOptions);
+        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 +323,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 +550,30 @@
         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 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;
     }
 
     @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..b55ed12 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 
@@ -27,6 +28,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 +54,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 +70,44 @@
      * 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 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);
-
-    // 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 PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
             final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
-            final int sessionId) {
-        return getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions);
+            final int sessionId, final float[] inOutLanguageWeight);
+
+    /**
+     * 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 boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+                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..89d61ce 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -20,7 +20,6 @@
 
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -36,49 +35,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 boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+            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, blockOffensiveWords, additionalFeaturesOptions,
+                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, blockOffensiveWords, additionalFeaturesOptions,
+                    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 +89,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..b8feb22
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -0,0 +1,658 @@
+/*
+ * 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.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 boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+            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,
+                            blockOffensiveWords, additionalFeaturesOptions, 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..37879cf 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -17,69 +17,57 @@
 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.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 +78,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 +180,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 +192,482 @@
     }
 
     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 boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+            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,
+                                blockOffensiveWords, additionalFeaturesOptions, 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..47bc6b0 100644
--- a/java/src/com/android/inputmethod/latin/InputPointers.java
+++ b/java/src/com/android/inputmethod/latin/InputPointers.java
@@ -16,14 +16,17 @@
 
 package com.android.inputmethod.latin;
 
+import android.util.Log;
+import android.util.SparseIntArray;
+
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.utils.ResizableIntArray;
 
-import android.util.Log;
-
 // 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 +41,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 (LatinImeLogger.sDBG || DEBUG_TIME) {
+            fillWithLastTimeUntil(index);
+        }
+        mTimes.addAt(index, time);
     }
 
     @UsedForTesting
@@ -68,23 +89,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 +145,7 @@
     }
 
     public int[] getTimes() {
-        if (LatinImeLogger.sDBG) {
+        if (LatinImeLogger.sDBG || DEBUG_TIME) {
             if (!isValidTimeStamps()) {
                 throw new RuntimeException("Time stamps are invalid.");
             }
@@ -157,14 +161,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..d2c4ca7 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,31 @@
 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.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;
@@ -77,63 +68,53 @@
 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.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 +122,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 +270,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 +299,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 +329,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 +343,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 +368,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 +385,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 +407,17 @@
                     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 (ProductionFlag.USES_CURSOR_ANCHOR_MONITOR) {
+                        // Currently we need to call this every time when the IME is attached to
+                        // new application.
+                        // TODO: Consider if we can do this automatically in the framework.
+                        InputMethodServiceCompatUtils.setCursorAnchorMonitorMode(latinIme, 1);
+                    }
+                }
             }
         }
 
@@ -453,10 +434,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 +448,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 +461,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);
@@ -536,7 +523,7 @@
         KeyboardSwitcher.init(this);
         AudioAndHapticFeedbackManager.init(this);
         AccessibilityUtils.init(this);
-        PersonalizationDictionarySessionRegister.init(this);
+        StatsUtils.init(this);
 
         super.onCreate();
 
@@ -545,19 +532,14 @@
 
         // 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 +551,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 +628,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 +707,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 +743,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();
     }
 
@@ -834,30 +780,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 +812,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 +871,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 +897,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 +914,6 @@
     private void onFinishInputInternal() {
         super.onFinishInput();
 
-        LatinImeLogger.commit();
         final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
         if (mainKeyboardView != null) {
             mainKeyboardView.closing();
@@ -1057,18 +922,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 +936,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 +971,9 @@
      */
     @Override
     public void onExtractedTextClicked() {
-        if (mSettings.getCurrent().isSuggestionsRequested(mDisplayOrientation)) return;
+        if (mSettings.getCurrent().isSuggestionsRequested()) {
+            return;
+        }
 
         super.onExtractedTextClicked();
     }
@@ -1202,22 +989,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 +1018,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 +1070,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 +1106,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 +1130,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 +1165,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 +1217,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 +1326,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 +1341,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 +1476,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 +1537,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 +1546,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 (!ProductionFlag.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 +1595,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 +1609,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 +1632,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 +1643,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 +1653,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 +1682,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 +1737,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
index 3f2b0a3..8fd36b9 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -16,76 +16,12 @@
 
 package com.android.inputmethod.latin;
 
-import android.content.SharedPreferences;
-import android.view.inputmethod.EditorInfo;
+import android.content.Context;
 
-import com.android.inputmethod.keyboard.Keyboard;
+// TODO: Rename this class name to make it more relevant.
+public final class LatinImeLogger {
+    public static final boolean sDBG = false;
 
-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() {
+    public static void init(Context context) {
     }
 }
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..f45c73f
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
@@ -0,0 +1,162 @@
+/*
+ * 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.Arrays;
+
+import com.android.inputmethod.latin.utils.StringUtils;
+
+/**
+ * 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 string when mIsBeginningOfSentence is true.
+        public final String 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 String 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 mWord.equals(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..e59ef75 100644
--- a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
@@ -50,21 +50,14 @@
 
     @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 PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
             final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
-            final int sessionId) {
+            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,
+                        blockOffensiveWords, additionalFeaturesOptions, 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..a3d0956 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -32,12 +32,17 @@
 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.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;
@@ -47,49 +52,43 @@
 
     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 +110,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 +127,7 @@
     public void updateParametersOnStartInputView() {
         final List<InputMethodSubtype> enabledSubtypesOfThisIme =
                 mRichImm.getMyEnabledInputMethodSubtypeList(true);
-        mNeedsToDisplayLanguage.updateEnabledSubtypeCount(enabledSubtypesOfThisIme.size());
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(enabledSubtypesOfThisIme);
         updateShortcutIME();
     }
 
@@ -177,7 +176,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 +212,7 @@
     }
 
     public boolean isShortcutImeEnabled() {
+        updateShortcutIME();
         if (mShortcutInputMethodInfo == null) {
             return false;
         }
@@ -224,10 +224,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 +249,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 +306,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 +320,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..c347f69 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -16,28 +16,18 @@
 
 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.ProductionFlag;
 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 +50,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 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 +72,84 @@
     }
 
     public void getSuggestedWords(final WordComposer wordComposer,
-            final String prevWordForBigram, final ProximityInfo proximityInfo,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
             final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
             final int[] additionalFeaturesOptions, final int sessionId, final int sequenceNumber,
             final OnGetSuggestedWordsCallback callback) {
-        LatinImeLogger.onStartSuggestion(prevWordForBigram);
         if (wordComposer.isBatchMode()) {
-            getSuggestedWordsForBatchInput(wordComposer, prevWordForBigram, proximityInfo,
+            getSuggestedWordsForBatchInput(wordComposer, prevWordsInfo, proximityInfo,
                     blockOffensiveWords, additionalFeaturesOptions, sessionId, sequenceNumber,
                     callback);
         } else {
-            getSuggestedWordsForTypingInput(wordComposer, prevWordForBigram, proximityInfo,
+            getSuggestedWordsForTypingInput(wordComposer, prevWordsInfo, proximityInfo,
                     blockOffensiveWords, isCorrectionEnabled, additionalFeaturesOptions,
                     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 PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
             final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
             final int[] additionalFeaturesOptions, 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, blockOffensiveWords,
+                additionalFeaturesOptions, 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 +157,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 +173,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 +183,6 @@
                     SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
                     SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
         }
-        SuggestedWordInfo.removeDups(suggestionsContainer);
 
         final ArrayList<SuggestedWordInfo> suggestionsList;
         if (DBG && !suggestionsContainer.isEmpty()) {
@@ -343,40 +192,27 @@
         }
 
         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 PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
             final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
             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, blockOffensiveWords,
+                additionalFeaturesOptions, 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 +220,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 +231,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 +244,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 +256,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 +278,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 +297,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..e587b18 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -19,58 +19,76 @@
 import android.text.TextUtils;
 import android.view.inputmethod.CompletionInfo;
 
-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.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,10 +99,32 @@
         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);
     }
@@ -104,8 +144,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 +158,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 +177,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 +188,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 +207,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 +223,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 +248,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 +316,6 @@
             return mDebugString;
         }
 
-        public int codePointCount() {
-            return mCodePointCount;
-        }
-
         public int codePointAt(int i) {
             return mWord.codePointAt(i);
         }
@@ -253,42 +329,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 +391,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/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..21fe7e0 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -16,11 +16,13 @@
 
 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.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
@@ -37,17 +39,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 +57,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 +69,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 +239,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 +280,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 +359,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 +372,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 +416,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 +433,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 +447,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/ProductionFlag.java b/java/src/com/android/inputmethod/latin/define/ProductionFlag.java
index dc937fb..9725802 100644
--- a/java/src/com/android/inputmethod/latin/define/ProductionFlag.java
+++ b/java/src/com/android/inputmethod/latin/define/ProductionFlag.java
@@ -21,12 +21,17 @@
         // 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;
+
+    // When true, enable {@link InputMethodService#onUpdateCursor} callback with
+    // {@link InputMethodService#setCursorAnchorMonitorMode}, which is not yet available in
+    // API level 19. Do not turn this on in production until the new API becomes publicly
+    // available.
+    public static final boolean USES_CURSOR_ANCHOR_MONITOR = 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..5ab7db8
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -0,0 +1,2006 @@
+/*
+ * 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.LatinImeLogger;
+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.settings.SettingsValues;
+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 (LatinImeLogger.sDBG) {
+            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, settingsValues.mBlockPotentiallyOffensive,
+                settingsValues.mAutoCorrectionEnabled,
+                settingsValues.mAdditionalFeaturesSettingValues,
+                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..a98b0f1 100644
--- a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
@@ -16,25 +16,72 @@
 
 package com.android.inputmethod.latin.personalization;
 
+import android.content.Context;
+
+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 String 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 (word.equals(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..c17e868 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
@@ -16,37 +16,47 @@
 
 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) {
@@ -55,21 +65,6 @@
         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 +80,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 +167,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/NativeSuggestOptions.java b/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
index cd726c9..04a2ee3 100644
--- a/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
+++ b/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
@@ -20,7 +20,8 @@
     // 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 OPTIONS_SIZE = 3;
 
     private final int[] mOptions = new int[OPTIONS_SIZE
             + AdditionalFeaturesSettingUtils.ADDITIONAL_FEATURES_SETTINGS_SIZE];
@@ -33,6 +34,10 @@
         setBooleanOption(USE_FULL_EDIT_DISTANCE, value);
     }
 
+    public void setBlockOffensiveWords(final boolean value) {
+        setBooleanOption(BLOCK_OFFENSIVE_WORDS, 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..689f878 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -27,16 +27,19 @@
 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;
@@ -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,13 +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));
+                    ApplicationUtils.getActivityTitleResId(getActivity(), SettingsActivity.class));
         }
 
         final Resources res = getResources();
@@ -107,115 +119,99 @@
         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)) {
+            final Intent debugSettingsIntent = new Intent(Intent.ACTION_MAIN);
+            debugSettingsIntent.setClassName(
+                    context.getPackageName(), DebugSettingsActivity.class.getName());
+            debugScreen.setIntent(debugSettingsIntent);
+        } else {
+            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 (ProductionFlag.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 +225,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 +238,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 +300,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 +335,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 +386,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 +463,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/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/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..90c8f61 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -27,18 +27,17 @@
 import android.view.textservice.SuggestionsInfo;
 
 import com.android.inputmethod.keyboard.KeyboardLayoutSet;
-import com.android.inputmethod.latin.BinaryDictionary;
 import com.android.inputmethod.latin.ContactsBinaryDictionary;
 import com.android.inputmethod.latin.Dictionary;
 import com.android.inputmethod.latin.DictionaryCollection;
 import com.android.inputmethod.latin.DictionaryFactory;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.SynchronouslyLoadedContactsBinaryDictionary;
-import com.android.inputmethod.latin.SynchronouslyLoadedUserBinaryDictionary;
 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 java.lang.ref.WeakReference;
@@ -49,7 +48,6 @@
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
-import java.util.TreeMap;
 
 /**
  * Service for spell checking, using LatinIME's dictionaries and mechanisms.
@@ -78,42 +76,10 @@
     private final Object mUseContactsLock = new Object();
 
     private final HashSet<WeakReference<DictionaryCollection>> mDictionaryCollectionsList =
-            CollectionUtils.newHashSet();
+            new HashSet<>();
 
-    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);
-    }
 
     @Override public void onCreate() {
         super.onCreate();
@@ -124,22 +90,13 @@
         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;
-    }
-
     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);
@@ -256,7 +213,7 @@
             mOriginalText = originalText;
             mRecommendedThreshold = recommendedThreshold;
             mMaxLength = maxLength;
-            mSuggestions = CollectionUtils.newArrayList(maxLength + 1);
+            mSuggestions = new ArrayList<>(maxLength + 1);
             mScores = new int[mMaxLength];
         }
 
@@ -267,6 +224,7 @@
             // if it doesn't. See documentation for binarySearch.
             final int insertIndex = positionIndex >= 0 ? positionIndex : -positionIndex - 1;
 
+            // Weak <- insertIndex == 0, ..., insertIndex == mLength -> Strong
             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
@@ -284,11 +242,6 @@
                 // }
                 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) {
@@ -296,12 +249,13 @@
                 ++mLength;
                 System.arraycopy(mScores, insertIndex, mScores, insertIndex + 1, copyLen);
                 mSuggestions.add(insertIndex, wordString);
+                mScores[insertIndex] = score;
             } else {
-                System.arraycopy(mScores, 1, mScores, 0, insertIndex);
+                System.arraycopy(mScores, 1, mScores, 0, insertIndex - 1);
                 mSuggestions.add(insertIndex, wordString);
                 mSuggestions.remove(0);
+                mScores[insertIndex - 1] = score;
             }
-            mScores[insertIndex] = score;
 
             return true;
         }
@@ -320,7 +274,7 @@
                     hasRecommendedSuggestions = false;
                 } else {
                     gatheredSuggestions = EMPTY_STRING_ARRAY;
-                    final float normalizedScore = BinaryDictionary.calcNormalizedScore(
+                    final float normalizedScore = BinaryDictionaryUtils.calcNormalizedScore(
                             mOriginalText, mBestSuggestion, mBestScore);
                     hasRecommendedSuggestions = (normalizedScore > mRecommendedThreshold);
                 }
@@ -355,7 +309,7 @@
                 final int bestScore = mScores[mLength - 1];
                 final String bestSuggestion = mSuggestions.get(0);
                 final float normalizedScore =
-                        BinaryDictionary.calcNormalizedScore(
+                        BinaryDictionaryUtils.calcNormalizedScore(
                                 mOriginalText, bestSuggestion.toString(), bestScore);
                 hasRecommendedSuggestions = (normalizedScore > mRecommendedThreshold);
                 if (DBG) {
@@ -383,6 +337,8 @@
         new Thread("spellchecker_close_dicts") {
             @Override
             public void run() {
+                // Contacts dictionary can be closed multiple times here. If the dictionary is
+                // already closed, extra closings are no-ops, so it's safe.
                 for (DictionaryPool pool : oldPools.values()) {
                     pool.close();
                 }
@@ -416,10 +372,10 @@
     }
 
     public DictAndKeyboard createDictAndKeyboard(final Locale locale) {
-        final int script = getScriptFromLocale(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 =
@@ -428,7 +384,7 @@
         final String localeStr = locale.toString();
         UserBinaryDictionary userDictionary = mUserDictionaries.get(localeStr);
         if (null == userDictionary) {
-            userDictionary = new SynchronouslyLoadedUserBinaryDictionary(this, localeStr, true);
+            userDictionary = new SynchronouslyLoadedUserBinaryDictionary(this, locale, true);
             mUserDictionaries.put(localeStr, userDictionary);
         }
         dictionaryCollection.addDictionary(userDictionary);
@@ -443,8 +399,7 @@
                 }
             }
             dictionaryCollection.addDictionary(mContactsDictionary);
-            mDictionaryCollectionsList.add(
-                    new WeakReference<DictionaryCollection>(dictionaryCollection));
+            mDictionaryCollectionsList.add(new WeakReference<>(dictionaryCollection));
         }
         return new DictAndKeyboard(dictionaryCollection, keyboardLayoutSet);
     }
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
index ddda52d..6bfd354 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,17 +24,21 @@
 import android.view.textservice.SuggestionsInfo;
 import android.view.textservice.TextInfo;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.PrevWordsInfo;
 
 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,
@@ -43,10 +48,9 @@
             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();
+        final ArrayList<Integer> additionalOffsets = new ArrayList<>();
+        final ArrayList<Integer> additionalLengths = new ArrayList<>();
+        final ArrayList<SuggestionsInfo> additionalSuggestionsInfos = new ArrayList<>();
         String currentWord = null;
         for (int i = 0; i < N; ++i) {
             final SuggestionsInfo si = ssi.getSuggestionsInfoAt(i);
@@ -57,7 +61,8 @@
             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 PrevWordsInfo prevWordsInfo =
+                    new PrevWordsInfo(new PrevWordsInfo.WordInfo(currentWord));
             currentWord = subText;
             if (!subText.contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
                 continue;
@@ -73,7 +78,7 @@
                 if (TextUtils.isEmpty(splitText)) {
                     continue;
                 }
-                if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWord) == null) {
+                if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWordsInfo) == null) {
                     continue;
                 }
                 final int newLength = splitText.length();
@@ -116,8 +121,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 +135,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) {
@@ -148,7 +204,9 @@
                 } else {
                     prevWord = null;
                 }
-                retval[i] = onGetSuggestionsInternal(textInfos[i], prevWord, suggestionsLimit);
+                final PrevWordsInfo prevWordsInfo =
+                        new PrevWordsInfo(new PrevWordsInfo.WordInfo(prevWord));
+                retval[i] = onGetSuggestionsInternal(textInfos[i], prevWordsInfo, suggestionsLimit);
                 retval[i].setCookieAndSequence(textInfos[i].getCookie(),
                         textInfos[i].getSequence());
             }
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index d6e5b75..4825b9e 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -30,10 +30,13 @@
 import com.android.inputmethod.compat.SuggestionsInfoCompatUtils;
 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.CoordinateUtils;
 import com.android.inputmethod.latin.utils.LocaleUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
 import java.util.ArrayList;
@@ -66,29 +69,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() {
@@ -114,7 +117,7 @@
         final String localeString = getLocale();
         mDictionaryPool = mService.getDictionaryPool(localeString);
         mLocale = LocaleUtils.constructLocaleFromString(localeString);
-        mScript = AndroidSpellCheckerService.getScriptFromLocale(mLocale);
+        mScript = ScriptUtils.getScriptFromSpellCheckerLocale(mLocale);
     }
 
     @Override
@@ -123,44 +126,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 +152,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 +173,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
@@ -257,11 +222,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);
@@ -279,6 +245,24 @@
                         return AndroidSpellCheckerService.getNotInDictEmptySuggestions(
                                 false /* reportAsTypo */);
                     }
+                    if (CHECKABILITY_CONTAINS_PERIOD == checkability) {
+                        final String[] splitText = inText.split(Constants.REGEXP_PERIOD);
+                        boolean allWordsAreValid = true;
+                        for (final String word : splitText) {
+                            if (!dictInfo.mDictionary.isValidWord(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),
+                                            TextUtils.join(Constants.STRING_PERIOD_AND_SPACE,
+                                                    splitText) });
+                        }
+                    }
                     return dictInfo.mDictionary.isValidWord(inText)
                             ? AndroidSpellCheckerService.getInDictEmptySuggestions()
                             : AndroidSpellCheckerService.getNotInDictEmptySuggestions(
@@ -312,16 +296,21 @@
                             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));
+                final int[] codePoints = StringUtils.toCodePointArray(text);
+                final int[] coordinates;
+                if (null == dictInfo.mKeyboard) {
+                    coordinates = CoordinateUtils.newCoordinateArray(codePoints.length,
+                            Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+                } else {
+                    coordinates = dictInfo.mKeyboard.getCoordinates(codePoints);
                 }
+                composer.setComposingWord(codePoints, coordinates);
                 // TODO: make a spell checker option to block offensive words or not
                 final ArrayList<SuggestedWordInfo> suggestions =
-                        dictInfo.mDictionary.getSuggestions(composer, prevWord,
+                        dictInfo.mDictionary.getSuggestions(composer, prevWordsInfo,
                                 dictInfo.getProximityInfo(), true /* blockOffensiveWords */,
-                                null /* additionalFeaturesOptions */);
+                                null /* additionalFeaturesOptions */, 0 /* sessionId */,
+                                null /* inOutLanguageWeight */);
                 if (suggestions != null) {
                     for (final SuggestedWordInfo suggestion : suggestions) {
                         final String suggestionStr = suggestion.mWord;
@@ -362,7 +351,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
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java b/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java
index b77f3e2..b33739f 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java
@@ -16,38 +16,27 @@
 
 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;
+import com.android.inputmethod.latin.Dictionary;
 
 /**
  * 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 final Keyboard mKeyboard;
 
     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() {
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
index a0aed28..cc52a3e 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
@@ -20,9 +20,9 @@
 
 import com.android.inputmethod.keyboard.ProximityInfo;
 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.utils.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.Locale;
@@ -46,17 +46,19 @@
     private final Locale mLocale;
     private int mSize;
     private volatile boolean mClosed;
-    final static ArrayList<SuggestedWordInfo> noSuggestions = CollectionUtils.newArrayList();
+    final static ArrayList<SuggestedWordInfo> noSuggestions = new ArrayList<>();
     private final static DictAndKeyboard dummyDict = new DictAndKeyboard(
             new Dictionary(Dictionary.TYPE_MAIN) {
+                // TODO: this dummy dictionary should be a singleton in the Dictionary class.
                 @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 boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+                        final int sessionId, final float[] inOutLanguageWeight) {
                     return noSuggestions;
                 }
                 @Override
-                public boolean isValidWord(final String word) {
+                public boolean isInDictionary(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).
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..13352f3
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SentenceLevelAdapter.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.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.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 = originalTextInfo.getText();
+        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) {
+                final String query = originalText.subSequence(wordStart, wordEnd).toString();
+                final TextInfo ti = new TextInfo(query, cookie, query.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..186dafd 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java
@@ -39,7 +39,7 @@
         addPreferencesFromResource(R.xml.spell_checker_settings);
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
         if (preferenceScreen != null) {
-            preferenceScreen.setTitle(ApplicationUtils.getAcitivityTitleResId(
+            preferenceScreen.setTitle(ApplicationUtils.getActivityTitleResId(
                     getActivity(), SpellCheckerSettingsActivity.class));
         }
     }
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
new file mode 100644
index 0000000..a6437ba
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
@@ -0,0 +1,55 @@
+/*
+ * 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.spellcheck;
+
+import android.content.Context;
+
+import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.ContactsBinaryDictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.WordComposer;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+public final class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryDictionary {
+    private static final String NAME = "spellcheck_contacts";
+    private final Object mLock = new Object();
+
+    public SynchronouslyLoadedContactsBinaryDictionary(final Context context, final Locale locale) {
+        super(context, locale, null /* dictFile */, NAME);
+    }
+
+    @Override
+    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+            final int sessionId, final float[] inOutLanguageWeight) {
+        synchronized (mLock) {
+            return super.getSuggestions(codes, prevWordsInfo, proximityInfo,
+                    blockOffensiveWords, additionalFeaturesOptions, sessionId, inOutLanguageWeight);
+        }
+    }
+
+    @Override
+    public boolean isInDictionary(final String word) {
+        synchronized (mLock) {
+            return super.isInDictionary(word);
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
new file mode 100644
index 0000000..8c9d5d6
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
@@ -0,0 +1,60 @@
+/*
+ * 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.spellcheck;
+
+import android.content.Context;
+
+import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.UserBinaryDictionary;
+import com.android.inputmethod.latin.WordComposer;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+public final class SynchronouslyLoadedUserBinaryDictionary extends UserBinaryDictionary {
+    private static final String NAME = "spellcheck_user";
+    private final Object mLock = new Object();
+
+    public SynchronouslyLoadedUserBinaryDictionary(final Context context, final Locale locale) {
+        this(context, locale, false /* alsoUseMoreRestrictiveLocales */);
+    }
+
+    public SynchronouslyLoadedUserBinaryDictionary(final Context context, final Locale locale,
+            final boolean alsoUseMoreRestrictiveLocales) {
+        super(context, locale, alsoUseMoreRestrictiveLocales, null /* dictFile */, NAME);
+    }
+
+    @Override
+    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+            final int sessionId, final float[] inOutLanguageWeight) {
+        synchronized (mLock) {
+            return super.getSuggestions(codes, prevWordsInfo, proximityInfo,
+                    blockOffensiveWords, additionalFeaturesOptions, sessionId, inOutLanguageWeight);
+        }
+    }
+
+    @Override
+    public boolean isInDictionary(final String word) {
+        synchronized (mLock) {
+            return super.isInDictionary(word);
+        }
+    }
+}
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..ad5aad7 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.accessibility.AccessibilityUtils;
 import com.android.inputmethod.latin.LatinImeLogger;
+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.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 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..8654e12 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,11 +32,13 @@
 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;
@@ -39,10 +47,10 @@
 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.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;
+    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..34ee215 100644
--- a/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java
@@ -16,16 +16,10 @@
 
 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.LatinImeLogger;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 
 public final class AutoCorrectionUtils {
     private static final boolean DBG = LatinImeLogger.sDBG;
@@ -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/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..e3aef29 100644
--- a/java/src/com/android/inputmethod/latin/utils/CollectionUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CollectionUtils.java
@@ -16,90 +16,33 @@
 
 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 <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();
+        final TreeMap<K,V> treeMap = new TreeMap<>();
         return Collections.synchronizedMap(treeMap);
     }
 
-    public static <K,V> ConcurrentHashMap<K,V> newConcurrentHashMap() {
-        return new ConcurrentHashMap<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 <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
index 36b927e..a21a137 100644
--- a/java/src/com/android/inputmethod/latin/utils/CsvUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CsvUtils.java
@@ -17,6 +17,7 @@
 package com.android.inputmethod.latin.utils;
 
 import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Constants;
 
 import java.util.ArrayList;
 
@@ -57,9 +58,9 @@
 
     // 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 = '"';
+    private static final char COMMA = Constants.CODE_COMMA;
+    private static final char SPACE = Constants.CODE_SPACE;
+    private static final char QUOTE = Constants.CODE_DOUBLE_QUOTE;
 
     @SuppressWarnings("serial")
     public static class CsvParseException extends RuntimeException {
@@ -208,7 +209,7 @@
     @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 ArrayList<String> fields = new ArrayList<>();
         final int length = line.length();
         int start = 0;
         do {
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..9ec19ef
--- /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 String 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 String 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 String word0, final String 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..ceb0383 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -16,29 +16,24 @@
 
 package com.android.inputmethod.latin.utils;
 
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.settings.SettingsValues;
+import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
 
 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 com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Constants;
+
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.Arrays;
 import java.util.Locale;
 
 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 +45,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 +75,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 +146,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 +290,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 +354,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 +393,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 +446,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 +461,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 +478,68 @@
         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);
-                }
-                writer.endObject();
-            }
-            writer.endArray();
-            return sw.toString();
-        } catch (IOException e) {
-        } finally {
-            try {
-                if (writer != null) {
-                    writer.close();
-                }
-            } catch (IOException e) {
-            }
+        return lastIndex - i;
+    }
+
+    @UsedForTesting
+    public static class Stringizer<E> {
+        public String stringize(final E element) {
+            return element != null ? element.toString() : "null";
         }
-        return "";
+
+        @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..5c109a6
--- /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.ProductionFlag;
+
+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 (ProductionFlag.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..72f8f87 100644
--- a/native/jni/Android.mk
+++ b/native/jni/Android.mk
@@ -28,77 +28,13 @@
 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
-
-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 +57,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 +81,17 @@
 LOCAL_MODULE := libjni_latinime
 LOCAL_MODULE_TAGS := optional
 
+LOCAL_CLANG := true
 LOCAL_SDK_VERSION := 14
-LOCAL_NDK_STL_VARIANT := stlport_static
-LOCAL_LDFLAGS += -ldl
+LOCAL_NDK_STL_VARIANT := c++_static
+LOCAL_LDFLAGS += -ldl -fuse-ld=mcld
 
 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..bc9d576 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
@@ -30,6 +30,11 @@
               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..1052241 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,75 @@
 // 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) {
+    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());
+    }
+}
+
+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;
+    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);
+}
+
 } // 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..b726011 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,10 @@
 #ifndef LATINIME_DICTIONARY_STRUCTURE_POLICY_H
 #define LATINIME_DICTIONARY_STRUCTURE_POLICY_H
 
+#include <memory>
+
 #include "defines.h"
+#include "suggest/core/dictionary/property/word_property.h"
 
 namespace latinime {
 
@@ -26,25 +29,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,
@@ -63,28 +70,45 @@
     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..e350c69
--- /dev/null
+++ b/native/jni/src/suggest/core/session/prev_words_info.h
@@ -0,0 +1,211 @@
+/*
+ * 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 {
+        const int bigramListPos = getBigramListPositionForWordWithTryingLowerCaseSearch(
+                dictStructurePolicy, mPrevWordCodePoints[0], mPrevWordCodePointCount[0],
+                mIsBeginningOfSentence[0]);
+        return BinaryDictionaryBigramsIterator(dictStructurePolicy->getBigramsStructurePolicy(),
+                bigramListPos);
+    }
+
+    // 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 int getBigramListPositionForWordWithTryingLowerCaseSearch(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+            const int *const wordCodePoints, const int wordCodePointCount,
+            const bool isBeginningOfSentence) {
+        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;
+            }
+        }
+        int pos = getBigramListPositionForWord(dictStructurePolicy, codePoints,
+                codePointCount, false /* forceLowerCaseSearch */);
+        // getBigramListPositionForWord returns NOT_A_DICT_POS 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(dictStructurePolicy, codePoints,
+                    codePointCount, true /* forceLowerCaseSearch */);
+        }
+        return pos;
+    }
+
+    static int getBigramListPositionForWord(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+            const int *wordCodePoints, const int wordCodePointCount,
+            const bool forceLowerCaseSearch) {
+        if (!wordCodePoints || wordCodePointCount <= 0) return NOT_A_DICT_POS;
+        const int terminalPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+                wordCodePoints, wordCodePointCount, forceLowerCaseSearch);
+        if (NOT_A_DICT_POS == terminalPtNodePos) return NOT_A_DICT_POS;
+        return dictStructurePolicy->getBigramsPositionOfPtNode(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..2e22a7a 100644
--- a/native/jni/src/suggest/core/suggest_options.h
+++ b/native/jni/src/suggest/core/suggest_options.h
@@ -34,6 +34,10 @@
         return getBoolOption(USE_FULL_EDIT_DISTANCE);
     }
 
+    AK_FORCE_INLINE bool blockOffensiveWords() const {
+        return getBoolOption(BLOCK_OFFENSIVE_WORDS);
+    }
+
     AK_FORCE_INLINE bool getAdditionalFeaturesBoolOption(const int key) const {
         return getBoolOption(key + ADDITIONAL_FEATURES_OPTIONS);
     }
@@ -45,9 +49,10 @@
     // reorder options.
     static const int IS_GESTURE = 0;
     static const int USE_FULL_EDIT_DISTANCE = 1;
+    static const int BLOCK_OFFENSIVE_WORDS = 2;
     // 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 = 3;
 
     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..9780ae0
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp
@@ -0,0 +1,513 @@
+/*
+ * 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());
+}
+
+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..16b1bd2
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h
@@ -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.
+ */
+
+/*
+ * !!!!! 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;
+
+    int getBigramsPositionOfPtNode(const int ptNodePos) const;
+
+    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
+        return mHeaderPolicy;
+    }
+
+    const DictionaryBigramsStructurePolicy *getBigramsStructurePolicy() const {
+        return &mBigramPolicy;
+    }
+
+    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;
+};
+} // 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..002593c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.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.
+ */
+
+
+#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();
+}
+
+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(),
+            getBigramsStructurePolicy(), &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(getBigramsStructurePolicy(), 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..ec84074
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
@@ -0,0 +1,165 @@
+/*
+ * 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;
+
+    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 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 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..146cab6
--- /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 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;
+    }
+    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..033f18e
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
@@ -0,0 +1,131 @@
+/*
+ * 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 "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(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) {}
+
+    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(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);
+
+    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..0c2f470
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/dict_content.h
@@ -0,0 +1,36 @@
+/*
+ * 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() {}
+    virtual bool isValid() const = 0;
+
+ 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..3b7c70e
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.cpp
@@ -0,0 +1,160 @@
+/*
+ * 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(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 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..b065bc9
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.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_PROBABILITY_DICT_CONTENT_H
+#define LATINIME_PROBABILITY_DICT_CONTENT_H
+
+#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(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 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..64d7bc0
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.cpp
@@ -0,0 +1,188 @@
+/*
+ * 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::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 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..eaafc27
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.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.
+ */
+
+#ifndef LATINIME_SHORTCUT_DICT_CONTENT_H
+#define LATINIME_SHORTCUT_DICT_CONTENT_H
+
+#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(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 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..2156422
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h
@@ -0,0 +1,75 @@
+/*
+ * 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 "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"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+
+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 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..63c6ea3
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.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.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h"
+
+namespace latinime {
+
+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 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..fb6c88e
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h
@@ -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.
+ */
+
+#ifndef LATINIME_SPARSE_TABLE_DICT_CONTENT_H
+#define LATINIME_SPARSE_TABLE_DICT_CONTENT_H
+
+#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"
+#include "suggest/policyimpl/dictionary/utils/mmapped_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(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 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..0b17a00
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp
@@ -0,0 +1,100 @@
+/*
+ * 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(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 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..8160595
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
@@ -0,0 +1,62 @@
+/*
+ * 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 <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(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 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..5aa6b9a
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
@@ -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.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/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 {
+
+/* 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 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..df177c1
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
@@ -0,0 +1,141 @@
+/*
+ * 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 <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()
+                && 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 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..345cabb
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.cpp
@@ -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.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+
+namespace latinime {
+
+// 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_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;
+
+} // 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..b4effca
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.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_VER4_DICT_CONSTANTS_H
+#define LATINIME_VER4_DICT_CONSTANTS_H
+
+#include "defines.h"
+
+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 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_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);
+};
+} // 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..46107d9
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
@@ -0,0 +1,522 @@
+/*
+ * 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());
+}
+
+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..5d66a2c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
@@ -0,0 +1,151 @@
+/*
+ * 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;
+
+    int getBigramsPositionOfPtNode(const int ptNodePos) const;
+
+    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
+        return mHeaderPolicy;
+    }
+
+    const DictionaryBigramsStructurePolicy *getBigramsStructurePolicy() const {
+        return &mBigramPolicy;
+    }
+
+    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;
+};
+} // 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..40fdfa0
--- /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 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 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..1d202c3 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,73 +17,96 @@
 #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";
 
 /* 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::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)) {
+        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;
 }
 
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..0dd1256 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,31 @@
 
 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);
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(DictFileWritingUtils);
 
-    static const char *const TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE;
+    static bool createEmptyV401DictFile(const char *const filePath,
+            const std::vector<int> localeAsCodePointVector,
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap,
+            const FormatUtils::FORMAT_VERSION formatVersion);
 
-    static bool createEmptyV3DictFile(const char *const filePath,
-            const HeaderReadWriteUtils::AttributeMap *const attributeMap);
+    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/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..6ee6adb
--- /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 = 73;
+    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..f9d98af
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
@@ -0,0 +1,337 @@
+/*
+ * 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.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";
+    private static final int THEME_ID_ICS = KeyboardTheme.THEME_ID_ICS;
+    private static final int THEME_ID_KLP = KeyboardTheme.THEME_ID_KLP;
+    private static final int THEME_ID_LXX_DARK = KeyboardTheme.THEME_ID_LXX_DARK;
+
+    @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_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_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_DARK;
+        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_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_DARK);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
+    }
+
+    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_DARK);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
+    }
+
+    // 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_DARK);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
+    }
+
+    // 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_DARK);
+        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_LXX_DARK);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
+    }
+}
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..eb64b83
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
@@ -0,0 +1,216 @@
+/*
+ * 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, SymbolsShifted.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+002C: "," COMMA
+            // U+055D: "՝" ARMENIAN COMMA
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
+                    : joinKeys(key("\u055D", SETTINGS_KEY), "_");
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            // U+0589: "։" ARMENIAN FULL STOP
+            // U+055D: "՝" ARMENIAN COMMA
+            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+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();
+        }
+    }
+}
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..79c7d08
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Bengali.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.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+09E7: "১" BENGALI DIGIT ONE
+                    key("\u0994", joinMoreKeys("\u09E7", "1")),
+                    // U+0990: "ঐ" BENGALI LETTER AI
+                    // U+09E8: "২" BENGALI DIGIT TWO
+                    key("\u0990", joinMoreKeys("\u09E8", "2")),
+                    // U+0986: "আ" BENGALI LETTER AA
+                    // U+09E9: "৩" BENGALI DIGIT THREE
+                    key("\u0986", joinMoreKeys("\u09E9", "3")),
+                    // U+0988: "ঈ" BENGALI LETTER II
+                    // U+09EA: "৪" BENGALI DIGIT FOUR
+                    key("\u0988", joinMoreKeys("\u09EA", "4")),
+                    // U+098A: "ঊ" BENGALI LETTER UU
+                    // U+09EB: "৫" BENGALI DIGIT FIVE
+                    key("\u098A", joinMoreKeys("\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..a7f6823
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
@@ -0,0 +1,199 @@
+/*
+ * 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+090D: "ऍ" DEVANAGARI LETTER CANDRA E
+                    // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                    key("\u090D", moreKey(VOWEL_SIGN_CANDRA_E, "\u0945")),
+                    // 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/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/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..1b571ac
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.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.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+1010: "တ" MYANMAR LETTER TA
+                    // U+1014: "န" MYANMAR LETTER NA
+                    // U+1019: "မ" MYANMAR LETTER MA
+                    // U+1021: "အ" MYANMAR LETTER A
+                    // U+1015: "ပ" MYANMAR LETTER PA
+                    // U+1000: "က" MYANMAR LETTER KA
+                    // U+1004: "င" MYANMAR LETTER NGA
+                    // U+101E: "သ" MYANMAR LETTER SA
+                    // U+1005: "စ" MYANMAR LETTER CA
+                    "\u1006", "\u1010", "\u1014", "\u1019", "\u1021", "\u1015", "\u1000", "\u1004",
+                    "\u101E", "\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
+                    "\u102C",
+                    // 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
+                    // U+1011: "ထ" MYANMAR LETTER THA
+                    // U+1001: "ခ" MYANMAR LETTER KHA
+                    // U+101C: "လ" MYANMAR LETTER LA
+                    // U+1018: "ဘ" MYANMAR LETTER BHA
+                    "\u1016", "\u1011", "\u1001", "\u101C", "\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+1012: "ဒ" MYANMAR LETTER DA
+                    // U+1013: "ဓ" MYANMAR LETTER DHA
+                    // U+1003: "ဃ" MYANMAR LETTER GHA
+                    // U+100E: "ဎ" MYANMAR LETTER DDHA
+                    // U+103F: "ဿ" MYANMAR LETTER GREAT SA
+                    // U+100F: "ဏ" MYANMAR LETTER NNA
+                    // U+1008: "ဈ" MYANMAR LETTER JHA
+                    // U+1007: "ဇ" MYANMAR LETTER JA
+                    // U+1002: "ဂ" MYANMAR LETTER GA
+                    "\u1017", "\u1012", "\u1013", "\u1003", "\u100E", "\u103F", "\u100F", "\u1008",
+                    "\u1007", "\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/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/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/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/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/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/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..4448a6b
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java
@@ -0,0 +1,329 @@
+/*
+ * 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 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"));
+    }
+}
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..ce51df1 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,40 @@
 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/LatinImeLogger.java \
+        latin/PrevWordsInfo.java \
+        latin/SuggestedWords.java \
+        latin/WordComposer.java \
+        latin/settings/NativeSuggestOptions.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 +77,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 +91,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 812e76c..028025d 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,23 +24,25 @@
 
 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
-LOCAL_NO_DEFAULT_COMPILER_FLAGS := true
+LOCAL_CLANG := true
+# 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)) \
@@ -46,5 +52,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/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/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-bn/donottranslate-more-keys.xml
new file mode 100644
index 0000000..4955cd4
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-bn/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..1e05119
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
@@ -0,0 +1,53 @@
+<?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_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-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-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-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();
