aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-bn-rWB/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-eu-rPV/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-gl-rGA/strings-talkback-descriptions.xml133
-rw-r--r--java/res/values-is-rIS/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-kk-rKZ/strings-talkback-descriptions.xml133
-rw-r--r--java/res/values-kn-rKA/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-ky-rKG/strings-talkback-descriptions.xml133
-rw-r--r--java/res/values-mk-rMK/strings-talkback-descriptions.xml133
-rw-r--r--java/res/values-ml-rKL/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-mr-rMH/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-my-rMM/strings-talkback-descriptions.xml133
-rw-r--r--java/res/values-si-rLK/strings-talkback-descriptions.xml93
-rw-r--r--java/res/values-ta-rTN/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-te-rAP/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-ur-rPK/strings-talkback-descriptions.xml83
-rw-r--r--java/res/values-uz-rUZ/strings-talkback-descriptions.xml133
-rw-r--r--java/src/com/android/inputmethod/event/InputTransaction.java16
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java4
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java57
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java84
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java57
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java5
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java8
24 files changed, 1781 insertions, 92 deletions
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 000000000..7cf17a1fb
--- /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-eu-rPV/strings-talkback-descriptions.xml b/java/res/values-eu-rPV/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..949195d4c
--- /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-gl-rGA/strings-talkback-descriptions.xml b/java/res/values-gl-rGA/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..d253d349c
--- /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-is-rIS/strings-talkback-descriptions.xml b/java/res/values-is-rIS/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..978b07916
--- /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-kk-rKZ/strings-talkback-descriptions.xml b/java/res/values-kk-rKZ/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..2d61bde13
--- /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-kn-rKA/strings-talkback-descriptions.xml b/java/res/values-kn-rKA/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..15cef7c97
--- /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-ky-rKG/strings-talkback-descriptions.xml b/java/res/values-ky-rKG/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..70c779238
--- /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-mk-rMK/strings-talkback-descriptions.xml b/java/res/values-mk-rMK/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..12a64135a
--- /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-ml-rKL/strings-talkback-descriptions.xml b/java/res/values-ml-rKL/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..3577bbb0c
--- /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-mr-rMH/strings-talkback-descriptions.xml b/java/res/values-mr-rMH/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..41c64f473
--- /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-my-rMM/strings-talkback-descriptions.xml b/java/res/values-my-rMM/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..6908b58ef
--- /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-si-rLK/strings-talkback-descriptions.xml b/java/res/values-si-rLK/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..b3368ea66
--- /dev/null
+++ b/java/res/values-si-rLK/strings-talkback-descriptions.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under 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>
+ <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
+ <skip />
+ <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>
+ <!-- no translation found for spoken_description_upper_case (4904835255229433916) -->
+ <skip />
+ <!-- no translation found for spoken_letter_0049 (4743162182646977944) -->
+ <skip />
+ <!-- no translation found for spoken_letter_0130 (4766619646231612274) -->
+ <skip />
+ <!-- no translation found for spoken_symbol_unknown (717298227061173706) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_unknown (5981009928135394306) -->
+ <skip />
+ <!-- no translation found for spoken_open_more_keys_keyboard (6832897688371903747) -->
+ <skip />
+ <!-- no translation found for spoken_close_more_keys_keyboard (3524914657934712026) -->
+ <skip />
+ <!-- no translation found for spoken_open_more_suggestions (4231720702882969760) -->
+ <skip />
+ <!-- no translation found for spoken_close_more_suggestions (9118455416075032839) -->
+ <skip />
+</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 000000000..a65c8de21
--- /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-te-rAP/strings-talkback-descriptions.xml b/java/res/values-te-rAP/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..175b13e5e
--- /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-ur-rPK/strings-talkback-descriptions.xml b/java/res/values-ur-rPK/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..5820372f5
--- /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-uz-rUZ/strings-talkback-descriptions.xml b/java/res/values-uz-rUZ/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..589790b6f
--- /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/src/com/android/inputmethod/event/InputTransaction.java b/java/src/com/android/inputmethod/event/InputTransaction.java
index 4fe9b403e..cdff265c6 100644
--- a/java/src/com/android/inputmethod/event/InputTransaction.java
+++ b/java/src/com/android/inputmethod/event/InputTransaction.java
@@ -41,6 +41,7 @@ public class InputTransaction {
// 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) {
@@ -81,4 +82,19 @@ public class InputTransaction {
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/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 7ba3b3bd5..d01c4cc8f 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -211,6 +211,10 @@ public final class KeyboardLayoutSet {
return keyboard;
}
+ public int getScriptId() {
+ return mParams.mScriptId;
+ }
+
public static final class Builder {
private final Context mContext;
private final String mPackageName;
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 6aeff189f..dd71e9d4f 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -370,4 +370,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
return WordComposer.CAPS_MODE_OFF;
}
}
+
+ public int getCurrentKeyboardScriptId() {
+ return mKeyboardLayoutSet.getScriptId();
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 6e5e0deaa..865ff07d6 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -227,14 +227,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
case MSG_RESUME_SUGGESTIONS:
latinIme.mInputLogic.restartSuggestionsOnWordTouchedByCursor(
latinIme.mSettings.getCurrent(),
- msg.arg1 == ARG1_TRUE /* shouldIncludeResumedWordInSuggestions */);
+ msg.arg1 == ARG1_TRUE /* shouldIncludeResumedWordInSuggestions */,
+ latinIme.mKeyboardSwitcher.getCurrentKeyboardScriptId());
break;
case MSG_REOPEN_DICTIONARIES:
latinIme.resetSuggest();
- // 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();
+ // We need to re-evaluate the currently composing word in case the script has
+ // changed.
+ postResumeSuggestions(true /* shouldIncludeResumedWordInSuggestions */);
break;
case MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED:
latinIme.mInputLogic.onUpdateTailBatchInputCompleted(
@@ -446,22 +446,22 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
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);
@@ -795,8 +795,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// span, so we should reset our state unconditionally, even if restarting is true.
// We also tell the input logic about the combining rules for the current subtype, so
// it can adjust its combiners if needed.
- mInputLogic.startInput(restarting, editorInfo,
- mSubtypeSwitcher.getCombiningRulesExtraValueOfCurrentSubtype());
+ mInputLogic.startInput(mSubtypeSwitcher.getCombiningRulesExtraValueOfCurrentSubtype());
// Note: the following does a round-trip IPC on the main thread: be careful
final Locale currentLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
@@ -929,12 +928,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
getCurrentRecapitalizeState());
}
-
- mSubtypeState.currentSubtypeUsed();
}
@Override
- public void onUpdateCursor(Rect rect) {
+ public void onUpdateCursor(final Rect rect) {
if (DEBUG) {
Log.i(TAG, "onUpdateCursor:" + rect.toShortString());
}
@@ -1239,7 +1236,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final Event event = createSoftwareKeypressEvent(codeToSend, keyX, keyY, isKeyRepeat);
final InputTransaction completeInputTransaction =
mInputLogic.onCodeInput(mSettings.getCurrent(), event,
- mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
+ mKeyboardSwitcher.getKeyboardShiftMode(),
+ mKeyboardSwitcher.getCurrentKeyboardScriptId(), mHandler);
updateStateAfterInputTransaction(completeInputTransaction);
mKeyboardSwitcher.onCodeInput(codePoint, getCurrentAutoCapsState(),
getCurrentRecapitalizeState());
@@ -1266,9 +1264,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
public void onTextInput(final String rawText) {
// TODO: have the keyboard pass the correct key code when we need it.
final Event event = Event.createSoftwareTextEvent(rawText, Event.NOT_A_KEY_CODE);
- mInputLogic.onTextInput(mSettings.getCurrent(), event, mHandler);
- mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
- getCurrentRecapitalizeState());
+ final InputTransaction completeInputTransaction =
+ mInputLogic.onTextInput(mSettings.getCurrent(), event,
+ mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
+ updateStateAfterInputTransaction(completeInputTransaction);
mKeyboardSwitcher.onCodeInput(Constants.CODE_OUTPUT_TEXT, getCurrentAutoCapsState(),
getCurrentRecapitalizeState());
}
@@ -1423,10 +1422,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Called from {@link SuggestionStripView} through the {@link SuggestionStripView#Listener}
// interface
@Override
- public void pickSuggestionManually(final int index, final SuggestedWordInfo suggestionInfo) {
+ public void pickSuggestionManually(final SuggestedWordInfo suggestionInfo) {
final InputTransaction completeInputTransaction = mInputLogic.onPickSuggestionManually(
- mSettings.getCurrent(), index, suggestionInfo,
- mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
+ mSettings.getCurrent(), suggestionInfo,
+ mKeyboardSwitcher.getKeyboardShiftMode(),
+ mKeyboardSwitcher.getCurrentKeyboardScriptId(),
+ mHandler);
updateStateAfterInputTransaction(completeInputTransaction);
}
@@ -1486,6 +1487,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (inputTransaction.requiresUpdateSuggestions()) {
mHandler.postUpdateSuggestionStrip();
}
+ if (inputTransaction.didAffectContents()) {
+ mSubtypeState.setCurrentSubtypeHasBeenUsed();
+ }
}
private void hapticAndAudioFeedback(final int code, final int repeatCount) {
@@ -1553,7 +1557,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// If it's handled, we return true because we did handle it.
if (event.isHandled()) {
mInputLogic.onCodeInput(mSettings.getCurrent(), event,
- mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
+ mKeyboardSwitcher.getKeyboardShiftMode(),
+ // TODO: this is not necessarily correct for a hardware keyboard right now
+ mKeyboardSwitcher.getCurrentKeyboardScriptId(),
+ mHandler);
return true;
}
return super.onKeyDown(keyCode, keyEvent);
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index e43db352d..c347f69a9 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -87,6 +87,40 @@ public final class Suggest {
}
}
+ 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,
@@ -103,42 +137,14 @@ public final class Suggest {
final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
wordComposer, prevWordsInfo, proximityInfo, blockOffensiveWords,
additionalFeaturesOptions, SESSION_TYPING);
-
- final boolean isPrediction = !wordComposer.isComposingWord();
- final boolean shouldMakeSuggestionsAllUpperCase = wordComposer.isAllUpperCase()
- && !wordComposer.isResumed();
- final boolean isOnlyFirstCharCapitalized =
- wordComposer.isOrWillBeOnlyFirstCharCapitalized();
-
final ArrayList<SuggestedWordInfo> suggestionsContainer =
- new ArrayList<>(suggestionResults);
- 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, suggestionResults.mLocale, shouldMakeSuggestionsAllUpperCase,
- isOnlyFirstCharCapitalized, trailingSingleQuotesCount);
- suggestionsContainer.set(i, transformedWordInfo);
- }
- }
+ getTransformedSuggestedWordInfoList(wordComposer, suggestionResults,
+ trailingSingleQuotesCount);
final boolean didRemoveTypedWord =
- SuggestedWordInfo.removeDups(typedWord, suggestionsContainer);
+ SuggestedWordInfo.removeDups(wordComposer.getTypedWord(), suggestionsContainer);
- final SuggestedWordInfo firstSuggestedWordInfo;
- final String whitelistedWord;
- if (suggestionsContainer.isEmpty()) {
- firstSuggestedWordInfo = null;
- whitelistedWord = null;
- } else {
- firstSuggestedWordInfo = suggestionsContainer.get(0);
- if (!firstSuggestedWordInfo.isKindOf(SuggestedWordInfo.KIND_WHITELIST)) {
- whitelistedWord = null;
- } else {
- whitelistedWord = firstSuggestedWordInfo.mWord;
- }
- }
+ final String whitelistedWord = getWhitelistedWordOrNull(suggestionsContainer);
+ final boolean resultsArePredictions = !wordComposer.isComposingWord();
// We allow auto-correction if we have a whitelisted word, or if the word had more than
// one char and was not suggested.
@@ -151,11 +157,11 @@ public final class Suggest {
// 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 || isPrediction
- || null == firstSuggestedWordInfo || wordComposer.hasDigits()
+ if (!isCorrectionEnabled || !allowsToBeAutoCorrected || resultsArePredictions
+ || suggestionResults.isEmpty() || wordComposer.hasDigits()
|| wordComposer.isMostlyCaps() || wordComposer.isResumed()
|| !mDictionaryFacilitator.hasInitializedMainDictionary()
- || firstSuggestedWordInfo.isKindOf(SuggestedWordInfo.KIND_SHORTCUT)) {
+ || 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
@@ -167,7 +173,7 @@ public final class Suggest {
hasAutoCorrection = false;
} else {
hasAutoCorrection = AutoCorrectionUtils.suggestionExceedsAutoCorrectionThreshold(
- firstSuggestedWordInfo, consideredWord, mAutoCorrectionThreshold);
+ suggestionResults.first(), consideredWord, mAutoCorrectionThreshold);
}
if (!TextUtils.isEmpty(typedWord)) {
@@ -190,9 +196,9 @@ public final class Suggest {
// 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.
- !isPrediction && !allowsToBeAutoCorrected /* typedWordValid */,
+ !resultsArePredictions && !allowsToBeAutoCorrected /* typedWordValid */,
hasAutoCorrection /* willAutoCorrect */,
- false /* isObsoleteSuggestions */, isPrediction, sequenceNumber));
+ false /* isObsoleteSuggestions */, resultsArePredictions, sequenceNumber));
}
// Retrieves suggestions for the batch input
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 15ddcf9ae..8831d36f7 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -119,17 +119,10 @@ public final class InputLogic {
* Initializes the input logic for input in an editor.
*
* Call this when input starts or restarts in some editor (typically, in onStartInputView).
- * If the input is starting in the same field as before, set `restarting' to true. This allows
- * the input logic to reset only necessary stuff and save performance. Also, when restarting
- * some things must not be done (for example, the keyboard should not be reset to the
- * alphabetic layout), so do not send false to this just in case.
*
- * @param restarting whether input is starting in the same field as before. Unused for now.
- * @param editorInfo the editorInfo associated with the editor.
* @param combiningSpec the combining spec string for this subtype
*/
- public void startInput(final boolean restarting, final EditorInfo editorInfo,
- final String combiningSpec) {
+ public void startInput(final String combiningSpec) {
mEnteredText = null;
mWordComposer.restartCombining(combiningSpec);
resetComposingState(true /* alsoResetLastComposedWord */);
@@ -154,7 +147,8 @@ public final class InputLogic {
* @param combiningSpec the spec string for the combining rules
*/
public void onSubtypeChanged(final String combiningSpec) {
- mWordComposer.restartCombining(combiningSpec);
+ finishInput();
+ startInput(combiningSpec);
}
/**
@@ -187,11 +181,16 @@ public final class InputLogic {
*
* @param settingsValues the current values of the settings.
* @param event the input event containing the data.
+ * @return the complete transaction object
*/
- public void onTextInput(final SettingsValues settingsValues, final Event event,
+ 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);
@@ -208,12 +207,14 @@ public final class InputLogic {
// 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 index the index of the suggestion.
* @param suggestionInfo the suggestion info.
* @param keyboardShiftState the shift state of the keyboard, as returned by
* {@link com.android.inputmethod.keyboard.KeyboardSwitcher#getKeyboardShiftMode()}
@@ -222,9 +223,9 @@ public final class InputLogic {
// Called from {@link SuggestionStripView} through the {@link SuggestionStripView#Listener}
// interface
public InputTransaction onPickSuggestionManually(final SettingsValues settingsValues,
- final int index, final SuggestedWordInfo suggestionInfo, final int keyboardShiftState,
- // TODO: remove this argument
- final LatinIME.UIHandler handler) {
+ 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
@@ -232,12 +233,16 @@ public final class InputLogic {
// 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, handler);
+ 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
@@ -378,8 +383,8 @@ public final class InputLogic {
*/
public InputTransaction onCodeInput(final SettingsValues settingsValues, final Event event,
final int keyboardShiftMode,
- // TODO: remove this argument
- final LatinIME.UIHandler handler) {
+ // TODO: remove these arguments
+ final int currentKeyboardScriptId, final LatinIME.UIHandler handler) {
final InputTransaction inputTransaction = new InputTransaction(settingsValues, event,
SystemClock.uptimeMillis(), mSpaceState,
getActualCapsMode(settingsValues, keyboardShiftMode));
@@ -403,7 +408,9 @@ public final class InputLogic {
// A special key, like delete, shift, emoji, or the settings key.
switch (event.mKeyCode) {
case Constants.CODE_DELETE:
- handleBackspace(inputTransaction);
+ 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);
@@ -457,11 +464,15 @@ public final class InputLogic {
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();
@@ -857,7 +868,9 @@ public final class InputLogic {
* Handle a press on the backspace key.
* @param inputTransaction The transaction in progress.
*/
- private void handleBackspace(final InputTransaction inputTransaction) {
+ private void handleBackspace(final InputTransaction inputTransaction,
+ // TODO: remove this argument, put it into settingsValues
+ final int currentKeyboardScriptId) {
mSpaceState = SpaceState.NONE;
mDeleteCount++;
@@ -991,7 +1004,7 @@ public final class InputLogic {
&& !mConnection.isCursorFollowedByWordCharacter(
inputTransaction.mSettingsValues.mSpacingAndPunctuations)) {
restartSuggestionsOnWordTouchedByCursor(inputTransaction.mSettingsValues,
- true /* shouldIncludeResumedWordInSuggestions */);
+ true /* shouldIncludeResumedWordInSuggestions */, currentKeyboardScriptId);
}
}
}
@@ -1244,7 +1257,9 @@ public final class InputLogic {
*/
// TODO: make this private.
public void restartSuggestionsOnWordTouchedByCursor(final SettingsValues settingsValues,
- final boolean shouldIncludeResumedWordInSuggestions) {
+ 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.
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index 47921ca0a..f7b6f919d 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -37,7 +37,7 @@ 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 int index, final SuggestedWordInfo info);
+ public abstract void onSuggestionSelected(final SuggestedWordInfo info);
}
public MoreSuggestionsView(final Context context, final AttributeSet attrs) {
@@ -104,7 +104,6 @@ public final class MoreSuggestionsView extends MoreKeysKeyboardView {
+ 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/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
index aebfb7d4c..8654e12a9 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -59,7 +59,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
public interface Listener {
public void addWordToUserDictionary(String word);
public void showImportantNoticeContents();
- public void pickSuggestionManually(int index, SuggestedWordInfo word);
+ public void pickSuggestionManually(SuggestedWordInfo word);
public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat);
}
@@ -286,8 +286,8 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
private final MoreSuggestionsListener mMoreSuggestionsListener = new MoreSuggestionsListener() {
@Override
- public void onSuggestionSelected(final int index, final SuggestedWordInfo wordInfo) {
- mListener.pickSuggestionManually(index, wordInfo);
+ public void onSuggestionSelected(final SuggestedWordInfo wordInfo) {
+ mListener.pickSuggestionManually(wordInfo);
dismissMoreSuggestionsPanel();
}
@@ -465,7 +465,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
return;
}
final SuggestedWordInfo wordInfo = mSuggestedWords.getInfo(index);
- mListener.pickSuggestionManually(index, wordInfo);
+ mListener.pickSuggestionManually(wordInfo);
}
}