Merge "Import translations. DO NOT MERGE" into jb-ub-latinimegoogle
diff --git a/dictionaries/es_wordlist.combined.gz b/dictionaries/es_wordlist.combined.gz
index c0a5264..41a914c 100644
--- a/dictionaries/es_wordlist.combined.gz
+++ b/dictionaries/es_wordlist.combined.gz
Binary files differ
diff --git a/java/res/raw/main_es.dict b/java/res/raw/main_es.dict
index 0911b70..3c99e73 100644
--- a/java/res/raw/main_es.dict
+++ b/java/res/raw/main_es.dict
Binary files differ
diff --git a/java/res/values-ar/strings-talkback-descriptions.xml b/java/res/values-ar/strings-talkback-descriptions.xml
index b39033a..bd2d7c6 100644
--- a/java/res/values-ar/strings-talkback-descriptions.xml
+++ b/java/res/values-ar/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> كبير"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I كبير"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"رمز غير معروف"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"رمز تعبيري غير معروف"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"تتوفر الأحرف البديلة"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"تم تجاهل الأحرف البديلة"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"تتوفر الاقتراحات البديلة"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"تم تجاهل الاقتراحات البديلة"</string>
</resources>
diff --git a/java/res/values-az-rAZ/strings-talkback-descriptions.xml b/java/res/values-az-rAZ/strings-talkback-descriptions.xml
index 8ba8a6e..8f23627 100644
--- a/java/res/values-az-rAZ/strings-talkback-descriptions.xml
+++ b/java/res/values-az-rAZ/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Mətn daxil edilməyib"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sözünü <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> sözü ilə əvəzləyərək düzəldir"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> avto-korreksiyanı həyata keçirir"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Naməlum simvol"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Sürüşdürmə"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Daha çox simvol"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Sürüşdürmə"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Yerlər"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simvollar"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikonlar"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Böyük <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Böyük I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Böyük I, üstü nöqtəli"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Naməlum rəmz"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Naməlum emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternativ simvollar əlçatandır"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativ simvollar kənarlaşdırılıb"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternativ təkliflər əlçatandır"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativ təkliflər kənarlaşdırılıb"</string>
</resources>
diff --git a/java/res/values-bg/strings-talkback-descriptions.xml b/java/res/values-bg/strings-talkback-descriptions.xml
index edd74b5..c1271bf 100644
--- a/java/res/values-bg/strings-talkback-descriptions.xml
+++ b/java/res/values-bg/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-cs/strings-talkback-descriptions.xml b/java/res/values-cs/strings-talkback-descriptions.xml
index 50cc984..6c9c800 100644
--- a/java/res/values-cs/strings-talkback-descriptions.xml
+++ b/java/res/values-cs/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Není zadán žádný text"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Klávesou <xliff:g id="KEY_NAME">%1$s</xliff:g> opravíte <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Klávesou <xliff:g id="KEY_NAME">%1$s</xliff:g> provedete automatickou opravu"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Neznámý znak"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Další symboly"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Místa"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboly"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikony"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Velký znak <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Velké I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Velké I s tečkou nad"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Neznámý znak"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Neznámý smajlík emodži"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternativní znaky jsou k dispozici"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativní znaky jsou ignorovány"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternativní návrhy jsou k dispozici"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativní návrhy jsou ignorovány"</string>
</resources>
diff --git a/java/res/values-da/strings-talkback-descriptions.xml b/java/res/values-da/strings-talkback-descriptions.xml
index b34650e..5f54004 100644
--- a/java/res/values-da/strings-talkback-descriptions.xml
+++ b/java/res/values-da/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Der er ingen indtastet tekst"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> retter <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> til <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> udfører automatisk stavekontrol"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Ukendt tegn"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Flere symboler"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift-tast"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Steder"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboler"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Humørikoner"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Stort <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Stort I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Stort I med prik over"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ukendt symbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ukendt emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternative tegn er tilgængelige"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternative tegn er deaktiveret"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternative forslag er tilgængelige"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternative forslag er deaktiveret"</string>
</resources>
diff --git a/java/res/values-de/strings-talkback-descriptions.xml b/java/res/values-de/strings-talkback-descriptions.xml
index 3ae6243..27e9ecc 100644
--- a/java/res/values-de/strings-talkback-descriptions.xml
+++ b/java/res/values-de/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Kein Text eingegeben"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> wird \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" in \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\" geändert."</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> erfolgt eine Autokorrektur."</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Unbekanntes Zeichen"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Umschalttaste"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Weitere Symbole"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift-Taste"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Orte"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbole"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Großbuchstabe <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Großbuchstabe I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Großbuchstabe I mit übergesetztem Punkt"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Unbekanntes Symbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Unbekanntes Emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Es sind Alternativzeichen verfügbar."</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativzeichen werden ausgeblendet."</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Es sind Alternativvorschläge verfügbar."</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativvorschläge werden ausgeblendet."</string>
</resources>
diff --git a/java/res/values-el/strings-talkback-descriptions.xml b/java/res/values-el/strings-talkback-descriptions.xml
index bb98757..10df02f 100644
--- a/java/res/values-el/strings-talkback-descriptions.xml
+++ b/java/res/values-el/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Μέρη"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Σύμβολα"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticon"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Κεφαλαίο <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Κεφαλαίο I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Κεφαλαίο I, κουκκίδα από πάνω"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Άγνωστο σύμβολο"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Άγνωστο emoticon"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Διατίθενται εναλλακτικοί χαρακτήρες"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Παράβλεψη εναλλακτικών χαρακτήρων"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Διατίθενται εναλλακτικές προτάσεις"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Παράβλεψη εναλλακτικών προτάσεων"</string>
</resources>
diff --git a/java/res/values-es-rUS/strings-talkback-descriptions.xml b/java/res/values-es-rUS/strings-talkback-descriptions.xml
index 75fa14c..0bde67e 100644
--- a/java/res/values-es-rUS/strings-talkback-descriptions.xml
+++ b/java/res/values-es-rUS/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"No se ingresó texto."</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> por <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>."</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige automáticamente."</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Carácter desconocido"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Mayúsculas"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Más símbolos"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Mayúscula"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lugares"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticones"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> mayúscula"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I mayúscula"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I mayúscula, con punto superior"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconocido"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconocido"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Hay caracteres alternativos disponibles."</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Los caracteres alternativos se descartan."</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Hay sugerencias alternativas disponibles."</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Las sugerencias alternativas se descartan."</string>
</resources>
diff --git a/java/res/values-es/strings-talkback-descriptions.xml b/java/res/values-es/strings-talkback-descriptions.xml
index 11422bc..ef95901 100644
--- a/java/res/values-es/strings-talkback-descriptions.xml
+++ b/java/res/values-es/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"No se ha introducido texto"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> a <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corregirá la palabra automáticamente"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Carácter desconocido"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Mayús"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Más símbolos"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Mayús"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Sitios"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticonos"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> mayúscula"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I mayúscula"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I maýuscula, punto superior"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconocido"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconocido"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Caracteres alternativos disponibles"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Los caracteres alternativos se descartarán"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sugerencias alternativas disponibles"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Las sugerencias alternativas se descartarán"</string>
</resources>
diff --git a/java/res/values-et-rEE/strings-talkback-descriptions.xml b/java/res/values-et-rEE/strings-talkback-descriptions.xml
index 5bbe63b..b47df1b 100644
--- a/java/res/values-et-rEE/strings-talkback-descriptions.xml
+++ b/java/res/values-et-rEE/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Teksti ei ole sisestatud"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> parandab sõna <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> järgmiselt: <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> teeb automaatse paranduse"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Tundmatu tähemärk"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Tõstuklahv"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Rohkem sümboleid"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Tõstuklahv"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Kohad"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Sümbolid"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikonid"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Suurtäht <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Suurtäht I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Suurtäht I, ülapunkt"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Tundmatu sümbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Tundmatu emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatiivsed tähemärgid on saadaval"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatiivsed tähemärgid eemaldatakse"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatiivsed soovitused on saadaval"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatiivsed soovitused eemaldatakse"</string>
</resources>
diff --git a/java/res/values-fi/strings-talkback-descriptions.xml b/java/res/values-fi/strings-talkback-descriptions.xml
index e2e66e3..bec46ca 100644
--- a/java/res/values-fi/strings-talkback-descriptions.xml
+++ b/java/res/values-fi/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Ei kirjoitettua tekstiä"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> korjaa sanan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sanaksi <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> suorittaa automaattisen korjauksen"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Tuntematon merkki"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Vaihto"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Lisää symboleita"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Vaihto"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Paikat"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbolit"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Hymiöt"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Suuraakkonen <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Suuraakkonen I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Suuraakkonen I ja yläpuolinen piste"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Tuntematon symboli"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Tuntematon emoji-merkki"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Vaihtoehtoisia merkkejä on saatavilla"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Vaihtoehtoiset merkit hylättiin"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Vaihtoehtoisia ehdotuksia on saatavilla"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Vaihtoehtoiset ehdotukset hylättiin"</string>
</resources>
diff --git a/java/res/values-fr-rCA/strings-talkback-descriptions.xml b/java/res/values-fr-rCA/strings-talkback-descriptions.xml
index 2a0bec4..df644c0 100644
--- a/java/res/values-fr-rCA/strings-talkback-descriptions.xml
+++ b/java/res/values-fr-rCA/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Aucun texte entré"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet de remplacer <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> par <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet d\'effectuer une correction automatique"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Caractère inconnu"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Majuscule"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Autres symboles"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Majuscule"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lieux"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboles"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Émoticônes"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> majuscule"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I majuscule"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I majuscule, point en chef"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Symbole inconnu"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji inconnu"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Des caractères supplémentaires sont proposés"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Les caractères supplémentaires sont ignorés"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Des suggestions supplémentaires sont proposées"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Les suggestions supplémentaires sont ignorées"</string>
</resources>
diff --git a/java/res/values-fr/strings-talkback-descriptions.xml b/java/res/values-fr/strings-talkback-descriptions.xml
index a79fd21..7ae2056 100644
--- a/java/res/values-fr/strings-talkback-descriptions.xml
+++ b/java/res/values-fr/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Aucun texte saisi"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet de remplacer \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" par \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\"."</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet d\'effectuer une correction automatique."</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Caractère inconnu."</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Maj"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Autres symboles"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Maj"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lieux"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboles"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Émoticônes"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> majuscule"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I majuscule"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I majuscule, point en chef"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Symbole inconnu."</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji inconnu."</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Des caractères supplémentaires sont disponibles."</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Les caractères supplémentaires sont ignorés."</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Des suggestions supplémentaires sont disponibles."</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Les suggestions supplémentaires sont ignorées."</string>
</resources>
diff --git a/java/res/values-hi/strings-talkback-descriptions.xml b/java/res/values-hi/strings-talkback-descriptions.xml
index 78e4c8d..aba2592 100644
--- a/java/res/values-hi/strings-talkback-descriptions.xml
+++ b/java/res/values-hi/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-hr/strings-talkback-descriptions.xml b/java/res/values-hr/strings-talkback-descriptions.xml
index b3d5f70..e86db07 100644
--- a/java/res/values-hr/strings-talkback-descriptions.xml
+++ b/java/res/values-hr/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Nije unesen tekst"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ispravlja <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> u <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> vrši samoispravljanje"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Nepoznati znak"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Više simbola"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mjesta"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikoni"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Veliko slovo <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Veliko slovo I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Veliko slovo I, s točkicom iznad"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nepoznati simbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nepoznati emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Dostupni su zamjenski znakovi"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Zamjenski su znakovi isključeni"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Dostupni su zamjenski prijedlozi"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Zamjenski su prijedlozi isključeni"</string>
</resources>
diff --git a/java/res/values-hu/strings-talkback-descriptions.xml b/java/res/values-hu/strings-talkback-descriptions.xml
index cf505c4..ae0c047 100644
--- a/java/res/values-hu/strings-talkback-descriptions.xml
+++ b/java/res/values-hu/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Nincs szöveg megadva"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> billentyű – <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> szóra javítja a következőt: <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> billentyű automatikus javítást végez"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Ismeretlen karakter"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"További szimbólumok"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Helyek"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Szimbólumok"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Hangulatjelek"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Nagy <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Nagy I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Nagy I, felette ponttal"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ismeretlen szimbólum"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ismeretlen hangulatjel"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Az alternatív karakterek elérhetők"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Az alternatív karakterek billentyűzete bezárva"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Az alternatív javaslatok elérhetők"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Az alternatív javaslatok panel bezárva"</string>
</resources>
diff --git a/java/res/values-hy-rAM/strings-talkback-descriptions.xml b/java/res/values-hy-rAM/strings-talkback-descriptions.xml
index 5b7e4b5..44784bd 100644
--- a/java/res/values-hy-rAM/strings-talkback-descriptions.xml
+++ b/java/res/values-hy-rAM/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-it/strings-talkback-descriptions.xml b/java/res/values-it/strings-talkback-descriptions.xml
index f9eeefe..8665530 100644
--- a/java/res/values-it/strings-talkback-descriptions.xml
+++ b/java/res/values-it/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Nessun testo inserito"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corregge <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> con <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> esegue la correzione automatica"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Carattere sconosciuto"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Maiusc"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Altri simboli"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Maiusc"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Luoghi"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticon"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiuscola"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiuscola"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiuscola, punto sovrascritto"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbolo sconosciuto"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji sconosciuta"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Sono disponibili caratteri alternativi"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"I caratteri alternativi vengono ignorati"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sono disponibili suggerimenti alternativi"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"I suggerimenti alternativi vengono ignorati"</string>
</resources>
diff --git a/java/res/values-ja/strings-talkback-descriptions.xml b/java/res/values-ja/strings-talkback-descriptions.xml
index a3b4c8f..e4f5db5 100644
--- a/java/res/values-ja/strings-talkback-descriptions.xml
+++ b/java/res/values-ja/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-ko/strings-talkback-descriptions.xml b/java/res/values-ko/strings-talkback-descriptions.xml
index d5d71f9..2a3fe88 100644
--- a/java/res/values-ko/strings-talkback-descriptions.xml
+++ b/java/res/values-ko/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-lt/strings-talkback-descriptions.xml b/java/res/values-lt/strings-talkback-descriptions.xml
index 4e7f6af..18b09dd 100644
--- a/java/res/values-lt/strings-talkback-descriptions.xml
+++ b/java/res/values-lt/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Nėra įvesto teksto"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> pataiso <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> į <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> atlieka automatinį taisymą"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Nežinomas simbolis"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Klavišas „Shift“"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Daugiau simbolių"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Klavišas „Shift“"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Vietos"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboliai"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Jaustukai"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Didžioji <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Didžioji I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Didžioji I su tašku viršuje"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nežinomas simbolis"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nežinomas jaustukas"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatyvūs ženklai pasiekiami"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatyvūs simboliai atmetami"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatyvūs pasiūlymai pasiekiami"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatyvūs pasiūlymai atmetami"</string>
</resources>
diff --git a/java/res/values-lv/strings-talkback-descriptions.xml b/java/res/values-lv/strings-talkback-descriptions.xml
index e68d83a..2fe7f91 100644
--- a/java/res/values-lv/strings-talkback-descriptions.xml
+++ b/java/res/values-lv/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Teksts nav ievadīts"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Nospiežot taustiņu <xliff:g id="KEY_NAME">%1$s</xliff:g>, “<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>” tiek labots uz “<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>”."</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Taustiņam <xliff:g id="KEY_NAME">%1$s</xliff:g> ir automātiskas labošanas funkcija."</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Nezināma rakstzīme"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Pārslēgšanas taustiņš"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Citi simboli"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Pārslēgšanas taustiņš"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Vietas"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emocijzīmes"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Lielais burts “<xliff:g id="LOWER_LETTER">%s</xliff:g>”"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Lielais burts “I”"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Lielais burts “I” ar punktu virs tā"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nezināms simbols"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nezināma emocijzīme"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Ir pieejamas alternatīvas rakstzīmes."</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatīvās rakstzīmes netiek rādītas."</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Ir pieejami alternatīvi ieteikumi."</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatīvie ieteikumi netiek rādīti."</string>
</resources>
diff --git a/java/res/values-ms-rMY/strings-talkback-descriptions.xml b/java/res/values-ms-rMY/strings-talkback-descriptions.xml
index d6a4503..d5ae637 100644
--- a/java/res/values-ms-rMY/strings-talkback-descriptions.xml
+++ b/java/res/values-ms-rMY/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Tiada teks dimasukkan"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> membetulkan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> menjadi <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> melakukan auto pembetulan"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Aksara yang tidak diketahui"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Lagi simbol"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Tempat"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simbol"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikon"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Huruf besar <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I huruf besar"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I huruf besar, titik di atas"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbol yang tidak diketahui"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji yang tidak dikethui"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Aksara alternatif adalah tersedia"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Aksara alternatif diketepikan"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Cadangan alternatif tersedia"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Cadangan alternatif diketepikan"</string>
</resources>
diff --git a/java/res/values-nb/strings-talkback-descriptions.xml b/java/res/values-nb/strings-talkback-descriptions.xml
index 4870366..cdb6858 100644
--- a/java/res/values-nb/strings-talkback-descriptions.xml
+++ b/java/res/values-nb/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Ingen tekst er skrevet inn"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> retter <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> til <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> utfører automatisk retting"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Ukjent tegn"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Flere symboler"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Steder"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboler"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Smilefjes"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Stor <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Stor I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Stor I med prikk over"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ukjent symbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ukjent emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternative tegn er tilgjengelige"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternative tegn fjernes"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternative forslag er tilgjengelige"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternative forslag fjernes"</string>
</resources>
diff --git a/java/res/values-ne-rNP/strings-talkback-descriptions.xml b/java/res/values-ne-rNP/strings-talkback-descriptions.xml
index 044a041..2bbd178 100644
--- a/java/res/values-ne-rNP/strings-talkback-descriptions.xml
+++ b/java/res/values-ne-rNP/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Capital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Capital I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"अज्ञात प्रतीक"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"अज्ञात इमोजी"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"वैकल्पिक वर्णहरू उपलब्ध छन्"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"वैकल्पिक वर्णहरू खारेज गरियो"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"वैकल्पिक सुझावहरू उपलब्ध छन्"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"वैकल्पिक सुझावहरू खारिज गरियो"</string>
</resources>
diff --git a/java/res/values-nl/strings-talkback-descriptions.xml b/java/res/values-nl/strings-talkback-descriptions.xml
index 57bbf91..c59f3f2 100644
--- a/java/res/values-nl/strings-talkback-descriptions.xml
+++ b/java/res/values-nl/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Geen tekst ingevoerd"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Met <xliff:g id="KEY_NAME">%1$s</xliff:g> wordt <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> gecorrigeerd naar <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Met <xliff:g id="KEY_NAME">%1$s</xliff:g> voert u automatische correctie uit"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Onbekend teken"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Meer symbolen"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Plaatsen"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbolen"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Hoofdletter <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Hoofdletter I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Hoofdletter I, punt erboven"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Onbekend symbool"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Onbekende emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatieve tekens zijn beschikbaar"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatieve tekens worden verwijderd"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatieve suggesties zijn beschikbaar"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatieve suggesties worden verwijderd"</string>
</resources>
diff --git a/java/res/values-pl/strings-talkback-descriptions.xml b/java/res/values-pl/strings-talkback-descriptions.xml
index 1708ae0..43fca5f 100644
--- a/java/res/values-pl/strings-talkback-descriptions.xml
+++ b/java/res/values-pl/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Nie wpisano tekstu"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> poprawia <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> wykonuje autokorektę"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Nieznany znak"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Więcej symboli"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Miejsca"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbole"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikony"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Wielka litera <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Wielka litera I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Wielka litera I z kropką"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nieznany symbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nieznany emotikon"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatywne znaki są dostępne"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatywne znaki zostały zamknięte"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatywne propozycje są dostępne"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatywne propozycje zostały zamknięte"</string>
</resources>
diff --git a/java/res/values-pt/strings-talkback-descriptions.xml b/java/res/values-pt/strings-talkback-descriptions.xml
index 065cdae..f4e28fc 100644
--- a/java/res/values-pt/strings-talkback-descriptions.xml
+++ b/java/res/values-pt/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Nenhum texto digitado"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> para <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> realiza correção automática"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Caractere desconhecido"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Mais símbolos"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lugares"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiúscula"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiúscula"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiúscula, ponto acima"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconhecido"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconhecido"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Caracteres alternativos estão disponíveis"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Caracteres alternativos foram descartados"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sugestões alternativas estão disponíveis"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Sugestões alternativas foram descartadas"</string>
</resources>
diff --git a/java/res/values-ro/strings-talkback-descriptions.xml b/java/res/values-ro/strings-talkback-descriptions.xml
index 52885c8..7a90162 100644
--- a/java/res/values-ro/strings-talkback-descriptions.xml
+++ b/java/res/values-ro/strings-talkback-descriptions.xml
@@ -76,8 +76,8 @@
<string name="spoken_letter_0130" msgid="4766619646231612274">"I mare, punct deasupra"</string>
<string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbol necunoscut"</string>
<string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji necunoscut"</string>
- <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Sunt disponibile caracterele alternative"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Sunt disponibile caractere alternative"</string>
<string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"S-au închis caracterele alternative"</string>
- <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sunt disponibile sugestiile alternative"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sunt disponibile sugestii alternative"</string>
<string name="spoken_close_more_suggestions" msgid="9118455416075032839">"S-au închis sugestiile alternative"</string>
</resources>
diff --git a/java/res/values-ru/strings-talkback-descriptions.xml b/java/res/values-ru/strings-talkback-descriptions.xml
index f73ceab..b23d40d 100644
--- a/java/res/values-ru/strings-talkback-descriptions.xml
+++ b/java/res/values-ru/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-sl/strings-talkback-descriptions.xml b/java/res/values-sl/strings-talkback-descriptions.xml
index 27b8d3d..baef01f 100644
--- a/java/res/values-sl/strings-talkback-descriptions.xml
+++ b/java/res/values-sl/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Ni vnesenega besedila"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Tipka <xliff:g id="KEY_NAME">%1$s</xliff:g> popravi <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> v <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Tipka <xliff:g id="KEY_NAME">%1$s</xliff:g> izvede samopopravek"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Neznan znak"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Več simbolov"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mesta"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Čustveni simboli"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Velika črka <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Velika črka I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Velika črka I s piko zgoraj"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Neznan simbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Neznan znak »emoji«"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Nadomestni znaki so na voljo"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Nadomestni znaki se ne upoštevajo"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Nadomestni predlogi so na voljo"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Nadomestni predlogi se ne upoštevajo"</string>
</resources>
diff --git a/java/res/values-sr/strings-talkback-descriptions.xml b/java/res/values-sr/strings-talkback-descriptions.xml
index d472581..974ad3a 100644
--- a/java/res/values-sr/strings-talkback-descriptions.xml
+++ b/java/res/values-sr/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-sv/strings-talkback-descriptions.xml b/java/res/values-sv/strings-talkback-descriptions.xml
index 9824b5a..e3f7ca1 100644
--- a/java/res/values-sv/strings-talkback-descriptions.xml
+++ b/java/res/values-sv/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Ingen text har angetts"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Om du trycker på <xliff:g id="KEY_NAME">%1$s</xliff:g> rättas <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> till <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Om du trycker på <xliff:g id="KEY_NAME">%1$s</xliff:g> utförs autokorrigering"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Okänt tecken"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Skift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Fler symboler"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Skift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Platser"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboler"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Uttryckssymboler"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Versalt <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Versalt I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Versalt I, punkt ovanför"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Okänd symbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Okänd emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternativa tecken är tillgängliga"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativa tecken avvisas"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternativa förslag är tillgängliga"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativa förslag avvisas"</string>
</resources>
diff --git a/java/res/values-sw/strings-talkback-descriptions.xml b/java/res/values-sw/strings-talkback-descriptions.xml
index e00ce6a..6f84aa8 100644
--- a/java/res/values-sw/strings-talkback-descriptions.xml
+++ b/java/res/values-sw/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Hakuna maandishi yaliyoingizwa"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> hurekebisha <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kuwa <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> hufanya marekebisho otomatiki"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Herufi isiyojulikana"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Alama zaidi"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Maeneo"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Alama"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Vikaragosi"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Herufi kubwa <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Herufi I kubwa"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Herufi I kubwa, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Alama isiyojulikana"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji isiyojulikana"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Herufi mbadala zinapatikana"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Herufi mbadala huondolewa"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Mapendekezo mbadala yanapatikana"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Mapendekezo mbadala huondolewa"</string>
</resources>
diff --git a/java/res/values-th/strings-talkback-descriptions.xml b/java/res/values-th/strings-talkback-descriptions.xml
index 81c86fd..3d96b63 100644
--- a/java/res/values-th/strings-talkback-descriptions.xml
+++ b/java/res/values-th/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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-tl/strings-talkback-descriptions.xml b/java/res/values-tl/strings-talkback-descriptions.xml
index 06ba921..f601ad4 100644
--- a/java/res/values-tl/strings-talkback-descriptions.xml
+++ b/java/res/values-tl/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Walang tekstong inilagay"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"Itinatama ng <xliff:g id="KEY_NAME">%1$s</xliff:g> ang <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sa <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Nagsasagawa ang <xliff:g id="KEY_NAME">%1$s</xliff:g> ng auto-correction"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Hindi alam na character"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Marami pang simbolo"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mga Lugar"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Mga Simbolo"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Mga Emoticon"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Capital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Capital I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, tuldok sa itaas"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Hindi alam na simbolo"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Hindi alam na emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Available ang mga alternatibong character"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Dini-dismiss ang mga alternatibong character"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Available ang mga alternatibong suhestyon"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Dini-dismiss ang mga alternatibong suhestyon"</string>
</resources>
diff --git a/java/res/values-tr/strings-talkback-descriptions.xml b/java/res/values-tr/strings-talkback-descriptions.xml
index a3f635c..a810eda 100644
--- a/java/res/values-tr/strings-talkback-descriptions.xml
+++ b/java/res/values-tr/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<string name="spoken_no_text_entered" msgid="1711276837961785646">"Metin girilmedi"</string>
<string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>, <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kelimesini <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> olarak düzeltir"</string>
<string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> otomatik düzeltme yapar"</string>
- <!-- no translation found for spoken_description_unknown (5139930082759824442) -->
- <skip />
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Bilinmeyen karakter"</string>
<string name="spoken_description_shift" msgid="7209798151676638728">"Üst karakter"</string>
<string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Diğer simgeler"</string>
<string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Üst karakter"</string>
@@ -72,22 +71,13 @@
<string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Yerler"</string>
<string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simgeler"</string>
<string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"İfadeler"</string>
- <!-- 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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Büyük Harf <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Büyük Harf I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Büyük Harf I, üst noktalı"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Bilinmeyen simge"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Bilinmeyen emoji"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatif karakterler kullanılabilir"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatif karakterler yoksayılır"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatif öneriler kullanılabilir"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatif öneriler yoksayılır"</string>
</resources>
diff --git a/java/res/values-zh-rCN/strings-talkback-descriptions.xml b/java/res/values-zh-rCN/strings-talkback-descriptions.xml
index dda7638..b7b6b41 100644
--- a/java/res/values-zh-rCN/strings-talkback-descriptions.xml
+++ b/java/res/values-zh-rCN/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"拉丁文大写字母<xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"拉丁文大写字母I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"带上点的拉丁文大写字母I"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"未知符号"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"未知表情符号"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"有可用的替代字符"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"已关闭替代字符"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"有可用的其他建议字词"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"已关闭其他建议字词"</string>
</resources>
diff --git a/java/res/values-zh-rHK/strings-talkback-descriptions.xml b/java/res/values-zh-rHK/strings-talkback-descriptions.xml
index a962492..386b5b5 100644
--- a/java/res/values-zh-rHK/strings-talkback-descriptions.xml
+++ b/java/res/values-zh-rHK/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"大寫 <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"大寫 I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"上方加點的大寫 I"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"未知的符號"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"未知的表情符號"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"有可用的替代字元"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"已關閉替代字元"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"有可用的建議字詞"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"已關閉其他建議字詞"</string>
</resources>
diff --git a/java/res/values-zh-rTW/strings-talkback-descriptions.xml b/java/res/values-zh-rTW/strings-talkback-descriptions.xml
index c097b28..7a5f3df 100644
--- a/java/res/values-zh-rTW/strings-talkback-descriptions.xml
+++ b/java/res/values-zh-rTW/strings-talkback-descriptions.xml
@@ -25,8 +25,7 @@
<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_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>
@@ -72,22 +71,13 @@
<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 />
+ <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/attrs.xml b/java/res/values/attrs.xml
index fcb919d..7dda0a6 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -488,6 +488,17 @@
<attr name="enableProximityCharsCorrection" format="boolean" />
</declare-styleable>
+ <declare-styleable name="KeyboardLayoutSet_Feature">
+ <!-- This should be aligned with ScriptUtils.SCRIPT_* -->
+ <attr name="supportedScript" format="enum">
+ <enum name="latin" value="0" />
+ <enum name="cyrillic" value="1" />
+ <enum name="greek" value="2" />
+ <enum name="arabic" value="3" />
+ <enum name="hebrew" value="4" />
+ </attr>
+ </declare-styleable>
+
<declare-styleable name="SeekBarDialogPreference">
<attr name="maxValue" format="integer" />
<attr name="minValue" format="integer" />
diff --git a/java/res/xml-sw600dp/rows_sinhala.xml b/java/res/xml-sw600dp/rows_sinhala.xml
new file mode 100644
index 0000000..23c3f3a
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_sinhala.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <Row
+ latin:keyWidth="8.182%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_sinhala1" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="8.182%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_sinhala2" />
+ <Key
+ latin:keyStyle="enterKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="8.182%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_sinhala3" />
+ <include
+ latin:keyboardLayout="@xml/keys_exclamation_question" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/kbd_sinhala.xml b/java/res/xml/kbd_sinhala.xml
new file mode 100644
index 0000000..6c0f4bc
--- /dev/null
+++ b/java/res/xml/kbd_sinhala.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/rows_sinhala" />
+</Keyboard>
diff --git a/java/res/xml/keyboard_layout_set_arabic.xml b/java/res/xml/keyboard_layout_set_arabic.xml
index 10e95bd..1bf8c62 100644
--- a/java/res/xml/keyboard_layout_set_arabic.xml
+++ b/java/res/xml/keyboard_layout_set_arabic.xml
@@ -20,6 +20,8 @@
<KeyboardLayoutSet
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+ <Feature
+ latin:supportedScript="arabic" />
<Element
latin:elementName="alphabet"
latin:elementKeyboard="@xml/kbd_arabic"
diff --git a/java/res/xml/keyboard_layout_set_sinhala.xml b/java/res/xml/keyboard_layout_set_sinhala.xml
new file mode 100644
index 0000000..8e6e619
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_sinhala.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+ <Element
+ latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_sinhala"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="alphabetAutomaticShifted"
+ latin:elementKeyboard="@xml/kbd_sinhala"
+ latin:enableProximityCharsCorrection="true" />
+ <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+ because the letters on these layouts aren't the ones in different case of the above
+ unshifted layouts. -->
+ <Element
+ latin:elementName="alphabetManualShifted"
+ latin:elementKeyboard="@xml/kbd_sinhala" />
+ <Element
+ latin:elementName="alphabetShiftLocked"
+ latin:elementKeyboard="@xml/kbd_sinhala" />
+ <Element
+ latin:elementName="alphabetShiftLockShifted"
+ latin:elementKeyboard="@xml/kbd_sinhala" />
+ <Element
+ latin:elementName="symbols"
+ latin:elementKeyboard="@xml/kbd_symbols" />
+ <Element
+ latin:elementName="symbolsShifted"
+ latin:elementKeyboard="@xml/kbd_symbols_shift" />
+ <Element
+ latin:elementName="phone"
+ latin:elementKeyboard="@xml/kbd_phone" />
+ <Element
+ latin:elementName="phoneSymbols"
+ latin:elementKeyboard="@xml/kbd_phone_symbols" />
+ <Element
+ latin:elementName="number"
+ latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 777a13d..68dce8a 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -81,6 +81,7 @@
pt_PT: Portuguese (Portugal)/qwerty
ro: Romanian/qwerty
ru: Russian/east_slavic
+ (si_LK: Sinhala (Sri Lanka)/sinhala) # This is a preliminary keyboard layout.
sk: Slovak/qwerty
sl: Slovenian/qwerty
sr: Serbian/south_slavic
@@ -332,7 +333,6 @@
/>
<!-- TODO: This hindi_compact keyboard is a preliminary layout.
This isn't based on the final specification. -->
- <!--
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic_compact"
android:subtypeId="0xe49c89a1"
@@ -341,7 +341,6 @@
android:imeSubtypeExtraValue="KeyboardLayoutSet=hindi_compact,EmojiCapable"
android:isAsciiCapable="false"
/>
- -->
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0x35b7526a"
@@ -482,7 +481,6 @@
/>
<!-- TODO: This marathi keyboard is a preliminary layout.
This isn't based on the final specification. -->
- <!--
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0x747b9f03"
@@ -491,7 +489,6 @@
android:imeSubtypeExtraValue="KeyboardLayoutSet=marathi,EmojiCapable"
android:isAsciiCapable="false"
/>
- -->
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0x84c87c61"
@@ -502,7 +499,6 @@
/>
<!-- TODO: This Myanmar keyboard is a preliminary layout.
This isn't based on the final specification. -->
- <!--
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0xea266ea4"
@@ -511,7 +507,6 @@
android:imeSubtypeExtraValue="KeyboardLayoutSet=myanmar,EmojiCapable,CombiningRules=MyanmarReordering"
android:isAsciiCapable="false"
/>
- -->
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0x3f12ee14"
@@ -592,6 +587,16 @@
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
android:isAsciiCapable="false"
/>
+ <!-- TODO: This sinhala keyboard is a preliminary layout.
+ This isn't based on the final specification. -->
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_generic"
+ android:subtypeId="0x5c6b3bde"
+ android:imeSubtypeLocale="si_LK"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="KeyboardLayoutSet=sinhala,EmojiCapable"
+ android:isAsciiCapable="false"
+ />
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0x8e94d413"
diff --git a/java/res/xml/rowkeys_sinhala1.xml b/java/res/xml/rowkeys_sinhala1.xml
new file mode 100644
index 0000000..f258ae2
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala1.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+0DD6: "ූ" SINHALA VOWEL SIGN DIGA PAA-PILLA -->
+ <Key
+ latin:keySpec="ූ"
+ latin:additionalMoreKeys="1" />
+ <!-- U+0D8B: "උ" SINHALA LETTER UYANNA -->
+ <Key
+ latin:keySpec="උ"
+ latin:additionalMoreKeys="2" />
+ <!-- U+0DD1: "ෑ" SINHALA VOWEL SIGN DIGA AEDA-PILLA -->
+ <Key
+ latin:keySpec="ෑ"
+ latin:additionalMoreKeys="3" />
+ <!-- U+0D8D: "ඍ" SINHALA LETTER IRUYANNA -->
+ <Key
+ latin:keySpec="ඍ"
+ latin:additionalMoreKeys="4" />
+ <!-- U+0D94: "ඔ" SINHALA LETTER OYANNA -->
+ <Key
+ latin:keySpec="ඔ"
+ latin:additionalMoreKeys="5" />
+ <!-- U+0DC1: "ශ" SINHALA LETTER TAALUJA SAYANNA -->
+ <Key
+ latin:keySpec="ශ"
+ latin:additionalMoreKeys="6" />
+ <!-- U+0DB9: "ඹ" SINHALA LETTER AMBA BAYANNA -->
+ <Key
+ latin:keySpec="ඹ"
+ latin:additionalMoreKeys="7" />
+ <!-- U+0DC2: "ෂ" SINHALA LETTER MUURDHAJA SAYANNA -->
+ <Key
+ latin:keySpec="ෂ"
+ latin:additionalMoreKeys="8" />
+ <!-- U+0DB0: "ධ" SINHALA LETTER MAHAAPRAANA DAYANNA -->
+ <Key
+ latin:keySpec="ධ"
+ latin:additionalMoreKeys="9" />
+ <!-- U+0DA1: "ඡ" SINHALA LETTER MAHAAPRAANA CAYANNA -->
+ <Key
+ latin:keySpec="ඡ"
+ latin:additionalMoreKeys="0" />
+ <!-- U+0DA5: "ඥ" SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+ U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA -->
+ <Key
+ latin:keySpec="ඥ"
+ latin:moreKeys="෴" />
+ </case>
+ <default>
+ <!-- U+0DD4: "ු" SINHALA VOWEL SIGN KETTI PAA-PILLA -->
+ <Key
+ latin:keySpec="ු"
+ latin:additionalMoreKeys="1" />
+ <!-- U+0D85: "අ" SINHALA LETTER AYANNA -->
+ <Key
+ latin:keySpec="අ"
+ latin:additionalMoreKeys="2" />
+ <!-- U+0DD0: "ැ" SINHALA VOWEL SIGN KETTI AEDA-PILLA -->
+ <Key
+ latin:keySpec="ැ"
+ latin:additionalMoreKeys="3" />
+ <!-- U+0DBB: "ර" SINHALA LETTER RAYANNA -->
+ <Key
+ latin:keySpec="ර"
+ latin:additionalMoreKeys="4" />
+ <!-- U+0D91: "එ" SINHALA LETTER EYANNA -->
+ <Key
+ latin:keySpec="එ"
+ latin:additionalMoreKeys="5" />
+ <!-- U+0DC4: "හ" SINHALA LETTER HAYANNA -->
+ <Key
+ latin:keySpec="හ"
+ latin:additionalMoreKeys="6" />
+ <!-- U+0DB8: "ම" SINHALA LETTER MAYANNA -->
+ <Key
+ latin:keySpec="ම"
+ latin:additionalMoreKeys="7" />
+ <!-- U+0DC3: "ස" SINHALA LETTER DANTAJA SAYANNA -->
+ <Key
+ latin:keySpec="ස"
+ latin:additionalMoreKeys="8" />
+ <!-- U+0DAF: "ද" SINHALA LETTER ALPAPRAANA DAYANNA
+ U+0DB3: "ඳ" SINHALA LETTER SANYAKA DAYANNA -->
+ <Key
+ latin:keySpec="ද"
+ latin:moreKeys="ඳ"
+ latin:additionalMoreKeys="9" />
+ <!-- U+0DA0: "ච" SINHALA LETTER ALPAPRAANA CAYANNA -->
+ <Key
+ latin:keySpec="ච"
+ latin:additionalMoreKeys="0" />
+ <!-- U+0DA4: "ඤ" SINHALA LETTER TAALUJA NAASIKYAYA
+ U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA -->
+ <Key
+ latin:keySpec="ඤ"
+ latin:moreKeys="෴" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_sinhala2.xml b/java/res/xml/rowkeys_sinhala2.xml
new file mode 100644
index 0000000..91c1928
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala2.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+0DDF: "ෟ" SINHALA VOWEL SIGN GAYANUKITTA -->
+ <Key
+ latin:keySpec="ෟ" />
+ <!-- U+0DD3: "ී" SINHALA VOWEL SIGN DIGA IS-PILLA -->
+ <Key
+ latin:keySpec="ී" />
+ <!-- U+0DD8: "ෘ" SINHALA VOWEL SIGN GAETTA-PILLA -->
+ <Key
+ latin:keySpec="ෘ" />
+ <!-- U+0DC6: "ෆ" SINHALA LETTER FAYANNA -->
+ <Key
+ latin:keySpec="ෆ" />
+ <!-- U+0DA8: "ඨ" SINHALA LETTER MAHAAPRAANA TTAYANNA -->
+ <Key
+ latin:keySpec="ඨ" />
+ <!-- U+0DCA/U+200D/U+0DBA: "්ය" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER YAYANNA -->
+ <Key
+ latin:keySpec="්‍ය" />
+ <!-- U+0DC5/U+0DD4: "ළු" SINHALA LETTER MUURDHAJA LAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA -->
+ <Key
+ latin:keySpec="ළු" />
+ <!-- U+0DAB: "ණ" SINHALA LETTER MUURDHAJA NAYANNA -->
+ <Key
+ latin:keySpec="ණ" />
+ <!-- U+0D9B: "ඛ" SINHALA LETTER MAHAAPRAANA KAYANNA -->
+ <Key
+ latin:keySpec="ඛ" />
+ <!-- U+0DAE: "ථ" SINHALA LETTER MAHAAPRAANA TAYANNA -->
+ <Key
+ latin:keySpec="ථ" />
+ <!-- U+0DCA/U+200D/U+0DBB: "්ර" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER RAYANNA -->
+ <Key
+ latin:keySpec="්‍ර" />
+ </case>
+ <default>
+ <!-- U+0DCA: "්" SINHALA SIGN AL-LAKUNA -->
+ <Key
+ latin:keySpec="්" />
+ <!-- U+0DD2: "ි" SINHALA VOWEL SIGN KETTI IS-PILLA -->
+ <Key
+ latin:keySpec="ි" />
+ <!-- U+0DCF: "ා" SINHALA VOWEL SIGN AELA-PILLA -->
+ <Key
+ latin:keySpec="ා" />
+ <!-- U+0DD9: "ෙ" SINHALA VOWEL SIGN KOMBUVA -->
+ <Key
+ latin:keySpec="ෙ" />
+ <!-- U+0DA7: "ට" SINHALA LETTER ALPAPRAANA TTAYANNA -->
+ <Key
+ latin:keySpec="ට" />
+ <!-- U+0DBA: "ය" SINHALA LETTER YAYANNA -->
+ <Key
+ latin:keySpec="ය" />
+ <!-- U+0DC0: "ව" SINHALA LETTER VAYANNA -->
+ <Key
+ latin:keySpec="ව" />
+ <!-- U+0DB1: "න" SINHALA LETTER DANTAJA NAYANNA -->
+ <Key
+ latin:keySpec="න" />
+ <!-- U+0D9A: "ක" SINHALA LETTER ALPAPRAANA KAYANNA -->
+ <Key
+ latin:keySpec="ක" />
+ <!-- U+0DAD: "ත" SINHALA LETTER ALPAPRAANA TAYANNA -->
+ <Key
+ latin:keySpec="ත" />
+ <!-- U+0D8F: "ඏ" SINHALA LETTER ILUYANNA -->
+ <Key
+ latin:keySpec="ඏ" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_sinhala3.xml b/java/res/xml/rowkeys_sinhala3.xml
new file mode 100644
index 0000000..64ba9f3
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala3.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+0D9E: "ඞ" SINHALA LETTER KANTAJA NAASIKYAYA -->
+ <Key
+ latin:keySpec="ඞ" />
+ <!-- U+0DA3: "ඣ" SINHALA LETTER MAHAAPRAANA JAYANNA -->
+ <Key
+ latin:keySpec="ඣ" />
+ <!-- U+0DAA: "ඪ" SINHALA LETTER MAHAAPRAANA DDAYANNA -->
+ <Key
+ latin:keySpec="ඪ" />
+ <!-- U+0D8A: "ඊ" SINHALA LETTER IIYANNA -->
+ <Key
+ latin:keySpec="ඊ" />
+ <!-- U+0DB7: "භ" SINHALA LETTER MAHAAPRAANA BAYANNA -->
+ <Key
+ latin:keySpec="භ" />
+ <!-- U+0DB5: "ඵ" SINHALA LETTER MAHAAPRAANA PAYANNA -->
+ <Key
+ latin:keySpec="ඵ" />
+ <!-- U+0DC5: "ළ" SINHALA LETTER MUURDHAJA LAYANNA -->
+ <Key
+ latin:keySpec="ළ" />
+ <!-- U+0D9D: "ඝ" SINHALA LETTER MAHAAPRAANA GAYANNA -->
+ <Key
+ latin:keySpec="ඝ" />
+ <!-- U+0DBB/U+0DCA/U+200D: "ර්" SINHALA LETTER RAYANNA/SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER -->
+ <Key
+ latin:keySpec="ර්‍" />
+ </case>
+ <default>
+ <!-- U+0D82: "ං" SINHALA SIGN ANUSVARAYA
+ U+0D83: "ඃ" SINHALA SIGN VISARGAYA -->
+ <Key
+ latin:keySpec="ං"
+ latin:moreKeys="ඃ" />
+ <!-- U+0DA2: "ජ" SINHALA LETTER ALPAPRAANA JAYANNA
+ U+0DA6: "ඦ" SINHALA LETTER SANYAKA JAYANNA -->
+ <Key
+ latin:keySpec="ජ"
+ latin:moreKeys="ඦ" />
+ <!-- U+0DA9: "ඩ" SINHALA LETTER ALPAPRAANA DDAYANNA
+ U+0DAC: "ඬ" SINHALA LETTER SANYAKA DDAYANNA -->
+ <Key
+ latin:keySpec="ඩ"
+ latin:moreKeys="ඬ" />
+ <!-- U+0D89: "ඉ" SINHALA LETTER IYANNA -->
+ <Key
+ latin:keySpec="ඉ" />
+ <!-- U+0DB6: "බ" SINHALA LETTER ALPAPRAANA BAYANNA -->
+ <Key
+ latin:keySpec="බ" />
+ <!-- U+0DB4: "ප" SINHALA LETTER ALPAPRAANA PAYANNA -->
+ <Key
+ latin:keySpec="ප" />
+ <!-- U+0DBD: "ල" SINHALA LETTER DANTAJA LAYANNA -->
+ <Key
+ latin:keySpec="ල" />
+ <!-- U+0D9C: "ග" SINHALA LETTER ALPAPRAANA GAYANNA
+ U+0D9F: "ඟ" SINHALA LETTER SANYAKA GAYANNA -->
+ <Key
+ latin:keySpec="ග"
+ latin:moreKeys="ඟ" />
+ <!-- U+0DF3: "ෳ" SINHALA VOWEL SIGN DIGA GAYANUKITTA -->
+ <Key
+ latin:keySpec="ෳ" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rows_sinhala.xml b/java/res/xml/rows_sinhala.xml
new file mode 100644
index 0000000..b47b373
--- /dev/null
+++ b/java/res/xml/rows_sinhala.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <Row
+ latin:keyWidth="9.091%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_sinhala1" />
+ </Row>
+ <Row
+ latin:keyWidth="9.091%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_sinhala2" />
+ </Row>
+ <Row
+ latin:keyWidth="8.711%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.8%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_sinhala3" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java b/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java
index 967cafa..37d910e 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java
@@ -26,7 +26,7 @@
// Handling long press timer to show a more keys keyboard.
final class AccessibilityLongPressTimer extends Handler {
public interface LongPressTimerCallback {
- public void onLongPressed(Key key);
+ public void performLongClickOn(Key key);
}
private static final int MSG_LONG_PRESS = 1;
@@ -47,7 +47,7 @@
switch (msg.what) {
case MSG_LONG_PRESS:
cancelLongPress();
- mCallback.onLongPressed((Key)msg.obj);
+ mCallback.performLongClickOn((Key)msg.obj);
return;
default:
super.handleMessage(msg);
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
index 3925fc6..237117d 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
@@ -17,9 +17,9 @@
package com.android.inputmethod.accessibility;
import android.content.Context;
+import android.os.SystemClock;
import android.support.v4.view.AccessibilityDelegateCompat;
import android.support.v4.view.ViewCompat;
-import android.support.v4.view.accessibility.AccessibilityEventCompat;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.util.Log;
import android.view.MotionEvent;
@@ -31,7 +31,6 @@
import com.android.inputmethod.keyboard.KeyDetector;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardView;
-import com.android.inputmethod.keyboard.PointerTracker;
/**
* This class represents a delegate that can be registered in a class that extends
@@ -51,7 +50,7 @@
protected final KV mKeyboardView;
protected final KeyDetector mKeyDetector;
private Keyboard mKeyboard;
- private KeyboardAccessibilityNodeProvider mAccessibilityNodeProvider;
+ private KeyboardAccessibilityNodeProvider<KV> mAccessibilityNodeProvider;
private Key mLastHoverKey;
public static final int HOVER_EVENT_POINTER_ID = 0;
@@ -134,19 +133,20 @@
* @return The accessibility node provider for the current keyboard.
*/
@Override
- public KeyboardAccessibilityNodeProvider getAccessibilityNodeProvider(final View host) {
+ public KeyboardAccessibilityNodeProvider<KV> getAccessibilityNodeProvider(final View host) {
return getAccessibilityNodeProvider();
}
/**
* @return A lazily-instantiated node provider for this view delegate.
*/
- protected KeyboardAccessibilityNodeProvider getAccessibilityNodeProvider() {
+ protected KeyboardAccessibilityNodeProvider<KV> getAccessibilityNodeProvider() {
// Instantiate the provide only when requested. Since the system
// will call this method multiple times it is a good practice to
// cache the provider instance.
if (mAccessibilityNodeProvider == null) {
- mAccessibilityNodeProvider = new KeyboardAccessibilityNodeProvider(mKeyboardView);
+ mAccessibilityNodeProvider =
+ new KeyboardAccessibilityNodeProvider<>(mKeyboardView, this);
}
return mAccessibilityNodeProvider;
}
@@ -243,57 +243,42 @@
// Make sure we're not getting an EXIT event because the user slid
// off the keyboard area, then force a key press.
if (key != null) {
- onRegisterHoverKey(key, event);
+ performClickOn(key);
onHoverExitFrom(key);
}
setLastHoverKey(null);
}
/**
- * Register a key that is selected by a hover event
+ * Perform click on a key.
*
* @param key A key to be registered.
- * @param event A hover exit event that triggers key registering.
*/
- protected void onRegisterHoverKey(final Key key, final MotionEvent event) {
+ public void performClickOn(final Key key) {
if (DEBUG_HOVER) {
- Log.d(TAG, "onRegisterHoverKey: key=" + key);
+ Log.d(TAG, "performClickOn: key=" + key);
}
- simulateTouchEvent(MotionEvent.ACTION_DOWN, event);
- simulateTouchEvent(MotionEvent.ACTION_UP, event);
+ simulateTouchEvent(MotionEvent.ACTION_DOWN, key);
+ simulateTouchEvent(MotionEvent.ACTION_UP, key);
}
/**
- * Simulating a touch event by injecting a synthesized touch event into {@link PointerTracker}.
+ * Simulating a touch event by injecting a synthesized touch event into {@link KeyboardView}.
*
* @param touchAction The action of the synthesizing touch event.
- * @param hoverEvent The base hover event from that the touch event is synthesized.
+ * @param key The key that a synthesized touch event is on.
*/
- protected void simulateTouchEvent(final int touchAction, final MotionEvent hoverEvent) {
- final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent);
- final int actionIndex = touchEvent.getActionIndex();
- final int pointerId = touchEvent.getPointerId(actionIndex);
- final PointerTracker tracker = PointerTracker.getPointerTracker(pointerId);
- tracker.processMotionEvent(touchEvent, mKeyDetector);
+ private void simulateTouchEvent(final int touchAction, final Key key) {
+ final int x = key.getHitBox().centerX();
+ final int y = key.getHitBox().centerY();
+ final long eventTime = SystemClock.uptimeMillis();
+ final MotionEvent touchEvent = MotionEvent.obtain(
+ eventTime, eventTime, touchAction, x, y, 0 /* metaState */);
+ mKeyboardView.onTouchEvent(touchEvent);
touchEvent.recycle();
}
/**
- * Synthesize a touch event from a hover event.
- *
- * @param touchAction The action of the synthesizing touch event.
- * @param hoverEvent The base hover event from that the touch event is synthesized.
- * @return The synthesized touch event of <code>touchAction</code> that has pointer information
- * of <code>event</code>.
- */
- protected static MotionEvent synthesizeTouchEvent(final int touchAction,
- final MotionEvent hoverEvent) {
- final MotionEvent touchEvent = MotionEvent.obtain(hoverEvent);
- touchEvent.setAction(touchAction);
- return touchEvent;
- }
-
- /**
* Handles a hover enter event on a key.
*
* @param key The currently hovered key.
@@ -304,7 +289,7 @@
}
key.onPressed();
mKeyboardView.invalidateKey(key);
- final KeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider();
+ final KeyboardAccessibilityNodeProvider<KV> provider = getAccessibilityNodeProvider();
provider.onHoverEnterTo(key);
provider.performActionForKey(key, AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS);
}
@@ -327,7 +312,16 @@
}
key.onReleased();
mKeyboardView.invalidateKey(key);
- final KeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider();
+ final KeyboardAccessibilityNodeProvider<KV> provider = getAccessibilityNodeProvider();
provider.onHoverExitFrom(key);
}
+
+ /**
+ * Perform long click on a key.
+ *
+ * @param key A key to be long pressed on.
+ */
+ public void performLongClickOn(final Key key) {
+ // A extended class should override this method to implement long press.
+ }
}
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
index 61d066a..66b0acb 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
@@ -47,7 +47,8 @@
* virtual views, thus conveying their logical structure.
* </p>
*/
-final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat {
+final class KeyboardAccessibilityNodeProvider<KV extends KeyboardView>
+ extends AccessibilityNodeProviderCompat {
private static final String TAG = KeyboardAccessibilityNodeProvider.class.getSimpleName();
// From {@link android.view.accessibility.AccessibilityNodeInfo#UNDEFINED_ITEM_ID}.
@@ -68,17 +69,21 @@
/** The virtual view identifier for the hovering node. */
private int mHoveringNodeId = UNDEFINED;
- /** The current keyboard view. */
- private final KeyboardView mKeyboardView;
+ /** The keyboard view to provide an accessibility node info. */
+ private final KV mKeyboardView;
+ /** The accessibility delegate. */
+ private final KeyboardAccessibilityDelegate<KV> mDelegate;
/** The current keyboard. */
private Keyboard mKeyboard;
- public KeyboardAccessibilityNodeProvider(final KeyboardView keyboardView) {
+ public KeyboardAccessibilityNodeProvider(final KV keyboardView,
+ final KeyboardAccessibilityDelegate<KV> delegate) {
super();
mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance();
mAccessibilityUtils = AccessibilityUtils.getInstance();
mKeyboardView = keyboardView;
+ mDelegate = delegate;
// Since this class is constructed lazily, we might not get a subsequent
// call to setKeyboard() and therefore need to call it now.
@@ -287,9 +292,11 @@
return true;
case AccessibilityNodeInfoCompat.ACTION_CLICK:
sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_VIEW_CLICKED);
+ mDelegate.performClickOn(key);
return true;
case AccessibilityNodeInfoCompat.ACTION_LONG_CLICK:
sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
+ mDelegate.performLongClickOn(key);
return true;
default:
return false;
diff --git a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
index 96f84dd..b84d402 100644
--- a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
+++ b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
@@ -207,11 +207,11 @@
}
@Override
- protected void onRegisterHoverKey(final Key key, final MotionEvent event) {
+ public void performClickOn(final Key key) {
final int x = key.getHitBox().centerX();
final int y = key.getHitBox().centerY();
if (DEBUG_HOVER) {
- Log.d(TAG, "onRegisterHoverKey: key=" + key
+ Log.d(TAG, "performClickOn: key=" + key
+ " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
}
if (mBoundsToIgnoreHoverEvent.contains(x, y)) {
@@ -220,7 +220,7 @@
mBoundsToIgnoreHoverEvent.setEmpty();
return;
}
- super.onRegisterHoverKey(key, event);
+ super.performClickOn(key);
}
@Override
@@ -257,9 +257,9 @@
}
@Override
- public void onLongPressed(final Key key) {
+ public void performLongClickOn(final Key key) {
if (DEBUG_HOVER) {
- Log.d(TAG, "onLongPressed: key=" + key);
+ Log.d(TAG, "performLongClickOn: key=" + key);
}
final PointerTracker tracker = PointerTracker.getPointerTracker(HOVER_EVENT_POINTER_ID);
final long eventTime = SystemClock.uptimeMillis();
diff --git a/java/src/com/android/inputmethod/accessibility/MoreSuggestionsAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MoreSuggestionsAccessibilityDelegate.java
deleted file mode 100644
index dfc8661..0000000
--- a/java/src/com/android/inputmethod/accessibility/MoreSuggestionsAccessibilityDelegate.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.accessibility;
-
-import android.view.MotionEvent;
-
-import com.android.inputmethod.keyboard.KeyDetector;
-import com.android.inputmethod.keyboard.MoreKeysKeyboardView;
-
-public final class MoreSuggestionsAccessibilityDelegate
- extends MoreKeysKeyboardAccessibilityDelegate {
- public MoreSuggestionsAccessibilityDelegate(final MoreKeysKeyboardView moreKeysKeyboardView,
- final KeyDetector keyDetector) {
- super(moreKeysKeyboardView, keyDetector);
- }
-
- @Override
- protected void simulateTouchEvent(final int touchAction, final MotionEvent hoverEvent) {
- final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent);
- mKeyboardView.onTouchEvent(touchEvent);
- touchEvent.recycle();
- }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 3e5cfc1..7ba3b3b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -40,6 +40,7 @@
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeSwitcher;
import com.android.inputmethod.latin.utils.InputTypeUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.latin.utils.XmlParseUtils;
@@ -63,6 +64,7 @@
private static final String TAG_KEYBOARD_SET = "KeyboardLayoutSet";
private static final String TAG_ELEMENT = "Element";
+ private static final String TAG_FEATURE = "Feature";
private static final String KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX = "keyboard_layout_set_";
@@ -111,6 +113,7 @@
boolean mIsSpellChecker;
int mKeyboardWidth;
int mKeyboardHeight;
+ int mScriptId;
// Sparse array of KeyboardLayoutSet element parameters indexed by element's id.
final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap =
new SparseArray<>();
@@ -275,6 +278,10 @@
mParams.mDisableTouchPositionCorrectionDataForTest = true;
}
+ public void setScriptId(final int scriptId) {
+ mParams.mScriptId = scriptId;
+ }
+
public KeyboardLayoutSet build() {
if (mParams.mSubtype == null)
throw new RuntimeException("KeyboardLayoutSet subtype is not specified");
@@ -320,6 +327,8 @@
final String tag = parser.getName();
if (TAG_ELEMENT.equals(tag)) {
parseKeyboardLayoutSetElement(parser);
+ } else if (TAG_FEATURE.equals(tag)) {
+ parseKeyboardLayoutSetFeature(parser);
} else {
throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_KEYBOARD_SET);
}
@@ -361,6 +370,21 @@
}
}
+ private void parseKeyboardLayoutSetFeature(final XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+ R.styleable.KeyboardLayoutSet_Feature);
+ try {
+ final int scriptId = a.getInt(
+ R.styleable.KeyboardLayoutSet_Feature_supportedScript,
+ ScriptUtils.SCRIPT_LATIN);
+ XmlParseUtils.checkEndTag(TAG_FEATURE, parser);
+ setScriptId(scriptId);
+ } finally {
+ a.recycle();
+ }
+ }
+
private static int getKeyboardMode(final EditorInfo editorInfo) {
final int inputType = editorInfo.inputType;
final int variation = inputType & InputType.TYPE_MASK_VARIATION;
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index 3994487..5140c4f 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -126,7 +126,7 @@
@Override
public void onDownEvent(final int x, final int y, final int pointerId, final long eventTime) {
mActivePointerId = pointerId;
- mCurrentKey = detectKey(x, y, pointerId);
+ mCurrentKey = detectKey(x, y);
}
@Override
@@ -135,7 +135,7 @@
return;
}
final boolean hasOldKey = (mCurrentKey != null);
- mCurrentKey = detectKey(x, y, pointerId);
+ mCurrentKey = detectKey(x, y);
if (hasOldKey && mCurrentKey == null) {
// A more keys keyboard is canceled when detecting no key.
mController.onCancelMoreKeysPanel();
@@ -149,7 +149,7 @@
}
// Calling {@link #detectKey(int,int,int)} here is harmless because the last move event and
// the following up event share the same coordinates.
- mCurrentKey = detectKey(x, y, pointerId);
+ mCurrentKey = detectKey(x, y);
if (mCurrentKey != null) {
updateReleaseKeyGraphics(mCurrentKey);
onKeyInput(mCurrentKey, x, y);
@@ -174,7 +174,7 @@
}
}
- private Key detectKey(int x, int y, int pointerId) {
+ private Key detectKey(int x, int y) {
final Key oldKey = mCurrentKey;
final Key newKey = mKeyDetector.detectHitKey(x, y);
if (newKey == oldKey) {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
index 8010a3e..17dfc9c 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
@@ -56,22 +56,7 @@
private OnKeyEventListener mListener = EMPTY_LISTENER;
private final KeyDetector mKeyDetector = new KeyDetector();
private final GestureDetector mGestureDetector;
- private EmojiPageKeyboardAccessibilityDelegate mAccessibilityDelegate;
-
- private static final class EmojiPageKeyboardAccessibilityDelegate
- extends KeyboardAccessibilityDelegate<EmojiPageKeyboardView> {
- public EmojiPageKeyboardAccessibilityDelegate(final EmojiPageKeyboardView keyboardView,
- final KeyDetector keyDetector) {
- super(keyboardView, keyDetector);
- }
-
- @Override
- protected void simulateTouchEvent(int touchAction, MotionEvent hoverEvent) {
- final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent);
- mKeyboardView.onTouchEvent(touchEvent);
- touchEvent.recycle();
- }
- }
+ private KeyboardAccessibilityDelegate<EmojiPageKeyboardView> mAccessibilityDelegate;
public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) {
this(context, attrs, R.attr.keyboardViewStyle);
@@ -98,8 +83,7 @@
mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
if (mAccessibilityDelegate == null) {
- mAccessibilityDelegate = new EmojiPageKeyboardAccessibilityDelegate(
- this, mKeyDetector);
+ mAccessibilityDelegate = new KeyboardAccessibilityDelegate<>(this, mKeyDetector);
}
mAccessibilityDelegate.setKeyboard(keyboard);
} else {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index ab25558..13b174e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -89,9 +89,9 @@
/* 3:29 */ "morekeys_e",
/* 4:28 */ "morekeys_i",
/* 5:23 */ "morekeys_c",
- /* 6:23 */ "double_quotes",
- /* 7:22 */ "morekeys_n",
- /* 8:22 */ "keylabel_to_alpha",
+ /* 6:23 */ "keylabel_to_alpha",
+ /* 7:23 */ "double_quotes",
+ /* 8:22 */ "morekeys_n",
/* 9:22 */ "single_quotes",
/* 10:20 */ "morekeys_s",
/* 11:14 */ "morekeys_y",
@@ -260,10 +260,10 @@
/* morekeys_a ~ */
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_lqm_rqm",
- /* morekeys_n */ EMPTY,
// Label for "switch to alphabetic" key.
/* keylabel_to_alpha */ "ABC",
+ /* double_quotes */ "!text/double_lqm_rqm",
+ /* morekeys_n */ EMPTY,
/* single_quotes */ "!text/single_lqm_rqm",
/* morekeys_s ~ */
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
@@ -507,14 +507,14 @@
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
- /* morekeys_c */ null,
- /* double_quotes */ null,
+ /* morekeys_c ~ */
+ null, null, null,
+ /* ~ double_quotes */
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha ~ */
- null, null, null,
- /* ~ morekeys_s */
+ /* single_quotes */ null,
+ /* morekeys_s */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_y */ "\u00FD,\u0133",
@@ -523,17 +523,17 @@
/* Locale ar: Arabic */
private static final String[] TEXTS_ar = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
// U+200C: ZERO WIDTH NON-JOINER
// U+0628: "ب" ARABIC LETTER BEH
// U+062C: "ج" ARABIC LETTER JEEM
/* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C",
- /* single_quotes ~ */
+ /* double_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_cyrillic_soft_sign */
// U+0661: "١" ARABIC-INDIC DIGIT ONE
/* keyspec_symbols_1 */ "\u0661",
@@ -685,7 +685,7 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
- /* double_quotes ~ */
+ /* keylabel_to_alpha ~ */
null, null, null, null,
/* ~ single_quotes */
// U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
@@ -705,13 +705,13 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null,
@@ -738,14 +738,13 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- // single_quotes of Bulgarian is default single_quotes_right_left.
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
+ // single_quotes of Bulgarian is default single_quotes_right_left.
+ /* double_quotes */ "!text/double_9qm_lqm",
};
/* Locale ca: Catalan */
@@ -796,12 +795,13 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha ~ */
- null, null, null, null, null, null, null,
+ /* single_quotes ~ */
+ null, null, null, null, null, null,
/* ~ morekeys_t */
// U+00B7: "·" MIDDLE DOT
// U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
@@ -870,12 +870,12 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* morekeys_c */ "\u010D,\u00E7,\u0107",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u0148,\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -930,11 +930,11 @@
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
/* morekeys_i */ "\u00ED,\u00EF",
/* morekeys_c */ null,
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1004,13 +1004,13 @@
// U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
// U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
/* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
- /* morekeys_i */ null,
- /* morekeys_c */ null,
+ /* morekeys_i ~ */
+ null, null, null,
+ /* ~ keylabel_to_alpha */
/* double_quotes */ "!text/double_9qm_lqm",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1043,8 +1043,8 @@
/* Locale el: Greek */
private static final String[] TEXTS_el = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0391: "Α" GREEK CAPITAL LETTER ALPHA
// U+0392: "Β" GREEK CAPITAL LETTER BETA
@@ -1092,10 +1092,10 @@
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* morekeys_c */ "\u00E7",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u00F1",
- /* keylabel_to_alpha */ null,
/* single_quotes */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
/* morekeys_s */ "\u00DF",
@@ -1161,6 +1161,7 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
/* morekeys_c */ "\u0107,\u010D,\u00E7,\u010B",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -1169,7 +1170,6 @@
// U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
// U+014B: "ŋ" LATIN SMALL LETTER ENG
/* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
- /* keylabel_to_alpha */ null,
/* single_quotes */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -1297,15 +1297,15 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha ~ */
+ /* single_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null,
/* ~ morekeys_nordic_row2_11 */
// U+00A1: "¡" INVERTED EXCLAMATION MARK
// U+00BF: "¿" INVERTED QUESTION MARK
@@ -1363,12 +1363,12 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* morekeys_c */ "\u010D,\u00E7,\u0107",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u0146,\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -1463,6 +1463,7 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -1472,16 +1473,16 @@
/* Locale fa: Persian */
private static final String[] TEXTS_fa = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0627: "ا" ARABIC LETTER ALEF
// U+200C: ZERO WIDTH NON-JOINER
// U+0628: "ب" ARABIC LETTER BEH
// U+067E: "پ" ARABIC LETTER PEH
/* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+FDFC: "﷼" RIAL SIGN
/* keyspec_currency */ "\uFDFC",
@@ -1710,7 +1711,7 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,%,\u0107,\u010D",
- /* double_quotes ~ */
+ /* keylabel_to_alpha ~ */
null, null, null, null, null,
/* ~ morekeys_s */
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -1782,6 +1783,7 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -1791,15 +1793,15 @@
/* Locale hi: Hindi */
private static final String[] TEXTS_hi = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* keylabel_to_alpha */ "\u0915\u0916\u0917",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -1849,11 +1851,11 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* morekeys_c */ "\u010D,\u0107,\u00E7",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_rqm",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_rqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1917,9 +1919,9 @@
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
/* morekeys_c */ null,
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_rqm",
/* morekeys_n */ null,
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_rqm",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null,
@@ -1931,17 +1933,18 @@
/* Locale hy_AM: Armenian (Armenia) */
private static final String[] TEXTS_hy_AM = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
// U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
// U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
/* keylabel_to_alpha */ "\u0531\u0532\u0533",
- /* single_quotes ~ */
+ /* double_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null,
/* ~ morekeys_nordic_row2_11 */
// U+055E: "՞" ARMENIAN QUESTION MARK
// U+055C: "՜" ARMENIAN EXCLAMATION MARK
@@ -2027,9 +2030,9 @@
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
/* morekeys_c */ null,
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_n */ null,
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
/* morekeys_s */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
@@ -2110,13 +2113,13 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_rqm_9qm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+05D0: "א" HEBREW LETTER ALEF
// U+05D1: "ב" HEBREW LETTER BET
// U+05D2: "ג" HEBREW LETTER GIMEL
/* keylabel_to_alpha */ "\u05D0\u05D1\u05D2",
+ /* double_quotes */ "!text/double_rqm_9qm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_rqm_9qm",
/* morekeys_s ~ */
null, null, null, null, null, null,
@@ -2167,28 +2170,28 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+10D0: "ა" GEORGIAN LETTER AN
// U+10D1: "ბ" GEORGIAN LETTER BAN
// U+10D2: "გ" GEORGIAN LETTER GAN
/* keylabel_to_alpha */ "\u10D0\u10D1\u10D2",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
};
/* Locale kk: Kazakh */
private static final String[] TEXTS_kk = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* single_quotes ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* morekeys_cyrillic_ie */ "\u0451",
@@ -2237,14 +2240,14 @@
/* Locale km_KH: Khmer (Cambodia) */
private static final String[] TEXTS_km_KH = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+1780: "ក" KHMER LETTER KA
// U+1781: "ខ" KHMER LETTER KHA
// U+1782: "គ" KHMER LETTER KO
/* keylabel_to_alpha */ "\u1780\u1781\u1782",
- /* single_quotes ~ */
+ /* double_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2252,7 +2255,7 @@
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_cyrillic_a */
// U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
/* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
@@ -2261,15 +2264,15 @@
/* Locale ky: Kirghiz */
private static final String[] TEXTS_ky = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* single_quotes ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* morekeys_cyrillic_ie */ "\u0451",
@@ -2304,15 +2307,15 @@
/* Locale lo_LA: Lao (Laos) */
private static final String[] TEXTS_lo_LA = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0E81: "ກ" LAO LETTER KO
// U+0E82: "ຂ" LAO LETTER KHO SUNG
// U+0E84: "ຄ" LAO LETTER KHO TAM
/* keylabel_to_alpha */ "\u0E81\u0E82\u0E84",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+20AD: "₭" KIP SIGN
/* keyspec_currency */ "\u20AD",
@@ -2370,12 +2373,12 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* morekeys_c */ "\u010D,\u00E7,\u0107",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u0146,\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2464,12 +2467,12 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* morekeys_c */ "\u010D,\u00E7,\u0107",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u0146,\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2512,13 +2515,13 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2547,15 +2550,15 @@
/* Locale mn_MN: Mongolian (Mongolia) */
private static final String[] TEXTS_mn_MN = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+20AE: "₮" TUGRIK SIGN
/* keyspec_currency */ "\u20AE",
@@ -2564,15 +2567,15 @@
/* Locale mr_IN: Marathi (India) */
private static final String[] TEXTS_mr_IN = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* keylabel_to_alpha */ "\u0915\u0916\u0917",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -2616,17 +2619,18 @@
/* Locale my_MM: Burmese (Myanmar) */
private static final String[] TEXTS_my_MM = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+1000: "က" MYANMAR LETTER KA
// U+1001: "ခ" MYANMAR LETTER KHA
// U+1002: "ဂ" MYANMAR LETTER GA
/* keylabel_to_alpha */ "\u1000\u1001\u1002",
- /* single_quotes ~ */
+ /* double_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null,
/* ~ morekeys_nordic_row2_11 */
/* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
// U+104A: "၊" MYANMAR SIGN LITTLE SECTION
@@ -2681,11 +2685,11 @@
// U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
// U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
/* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
- /* morekeys_i */ null,
- /* morekeys_c */ null,
+ /* morekeys_i ~ */
+ null, null, null,
+ /* ~ keylabel_to_alpha */
/* double_quotes */ "!text/double_9qm_rqm",
/* morekeys_n */ null,
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_rqm",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2709,15 +2713,15 @@
/* Locale ne_NP: Nepali (Nepal) */
private static final String[] TEXTS_ne_NP = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* keylabel_to_alpha */ "\u0915\u0916\u0917",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
/* keyspec_currency */ "\u0930\u0941.",
@@ -2801,11 +2805,11 @@
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
/* morekeys_c */ null,
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_rqm",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_rqm",
/* morekeys_s */ null,
// U+0133: "ij" LATIN SMALL LIGATURE IJ
@@ -2847,11 +2851,11 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u0107,\u00E7,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_rqm",
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u0144,\u00F1",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_rqm",
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2952,9 +2956,9 @@
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
/* morekeys_c */ null,
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_rqm",
/* morekeys_n */ null,
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_rqm",
// U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2973,13 +2977,13 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null,
@@ -3001,6 +3005,17 @@
/* morekeys_cyrillic_soft_sign */ "\u044A",
};
+ /* Locale si_LK: Sinhalese (Sri Lanka) */
+ private static final String[] TEXTS_si_LK = {
+ /* morekeys_a ~ */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
+ // Label for "switch to alphabetic" key.
+ // U+0D85: "අ" SINHALA LETTER AYANNA
+ // U+0D86: "ආ" SINHALA LETTER AAYANNA
+ /* keylabel_to_alpha */ "\u0D85,\u0D86",
+ };
+
/* Locale sk: Slovak */
private static final String[] TEXTS_sk = {
// U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
@@ -3052,13 +3067,13 @@
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* morekeys_c */ "\u010D,\u00E7,\u0107",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u0148,\u0146,\u00F1,\u0144",
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -3104,9 +3119,9 @@
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* morekeys_c */ "\u010D,\u0107",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_n */ null,
- /* keylabel_to_alpha */ null,
/* single_quotes */ "!text/single_9qm_lqm",
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* morekeys_s */ "\u0161",
@@ -3127,14 +3142,14 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// END: More keys definitions for Serbian (Cyrillic)
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null,
@@ -3217,12 +3232,12 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
/* morekeys_n */ "\u0144,\u00F1,\u0148",
- /* keylabel_to_alpha */ null,
/* single_quotes */ null,
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -3310,10 +3325,10 @@
/* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* morekeys_c */ "\u00E7",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u00F1",
- /* keylabel_to_alpha */ null,
/* single_quotes */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
/* morekeys_s */ "\u00DF",
@@ -3326,15 +3341,15 @@
/* Locale th: Thai */
private static final String[] TEXTS_th = {
/* morekeys_a ~ */
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_n */
+ null, null, null, null, null, null,
+ /* ~ morekeys_c */
// Label for "switch to alphabetic" key.
// U+0E01: "ก" THAI CHARACTER KO KAI
// U+0E02: "ข" THAI CHARACTER KHO KHAI
// U+0E04: "ค" THAI CHARACTER KHO KHWAI
/* keylabel_to_alpha */ "\u0E01\u0E02\u0E04",
- /* single_quotes ~ */
- null, null, null, null, null, null, null,
+ /* double_quotes ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ morekeys_l */
// U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
/* keyspec_currency */ "\u0E3F",
@@ -3388,6 +3403,7 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -3426,7 +3442,7 @@
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u010D",
- /* double_quotes ~ */
+ /* keylabel_to_alpha ~ */
null, null, null, null,
/* ~ single_quotes */
// U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
@@ -3446,13 +3462,13 @@
/* morekeys_a ~ */
null, null, null, null, null, null,
/* ~ morekeys_c */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* morekeys_n */ null,
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* morekeys_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
/* morekeys_s ~ */
null, null, null, null, null, null,
@@ -3613,10 +3629,10 @@
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* morekeys_c */ "\u00E7",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u00F1",
- /* keylabel_to_alpha */ null,
/* single_quotes */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
/* morekeys_s */ "\u00DF",
@@ -3686,6 +3702,7 @@
// U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* morekeys_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
+ /* keylabel_to_alpha */ null,
/* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -3694,7 +3711,6 @@
// U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
// U+014B: "ŋ" LATIN SMALL LETTER ENG
/* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
- /* keylabel_to_alpha */ null,
/* single_quotes */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -3767,21 +3783,21 @@
"ar" , TEXTS_ar, /* 55/110 Arabic */
"az_AZ" , TEXTS_az_AZ, /* 8/ 18 Azerbaijani (Azerbaijan) */
"be_BY" , TEXTS_be_BY, /* 9/ 32 Belarusian (Belarus) */
- "bg" , TEXTS_bg, /* 2/ 9 Bulgarian */
+ "bg" , TEXTS_bg, /* 2/ 8 Bulgarian */
"ca" , TEXTS_ca, /* 11/ 95 Catalan */
"cs" , TEXTS_cs, /* 17/ 21 Czech */
"da" , TEXTS_da, /* 19/ 54 Danish */
"de" , TEXTS_de, /* 16/ 62 German */
- "el" , TEXTS_el, /* 1/ 9 Greek */
+ "el" , TEXTS_el, /* 1/ 7 Greek */
"en" , TEXTS_en, /* 8/ 11 English */
"eo" , TEXTS_eo, /* 26/118 Esperanto */
"es" , TEXTS_es, /* 8/ 55 Spanish */
"et_EE" , TEXTS_et_EE, /* 22/ 27 Estonian (Estonia) */
- "eu_ES" , TEXTS_eu_ES, /* 7/ 8 Basque (Spain) */
+ "eu_ES" , TEXTS_eu_ES, /* 7/ 9 Basque (Spain) */
"fa" , TEXTS_fa, /* 58/125 Persian */
"fi" , TEXTS_fi, /* 10/ 54 Finnish */
"fr" , TEXTS_fr, /* 13/ 62 French */
- "gl_ES" , TEXTS_gl_ES, /* 7/ 8 Gallegan (Spain) */
+ "gl_ES" , TEXTS_gl_ES, /* 7/ 9 Gallegan (Spain) */
"hi" , TEXTS_hi, /* 23/ 53 Hindi */
"hr" , TEXTS_hr, /* 9/ 20 Croatian */
"hu" , TEXTS_hu, /* 9/ 20 Hungarian */
@@ -3808,13 +3824,14 @@
"rm" , TEXTS_rm, /* 1/ 2 Raeto-Romance */
"ro" , TEXTS_ro, /* 6/ 15 Romanian */
"ru" , TEXTS_ru, /* 9/ 32 Russian */
+ "si_LK" , TEXTS_si_LK, /* 1/ 7 Sinhalese (Sri Lanka) */
"sk" , TEXTS_sk, /* 20/ 22 Slovak */
"sl" , TEXTS_sl, /* 8/ 20 Slovenian */
"sr" , TEXTS_sr, /* 11/ 93 Serbian */
"sv" , TEXTS_sv, /* 21/ 54 Swedish */
"sw" , TEXTS_sw, /* 9/ 18 Swahili */
"th" , TEXTS_th, /* 2/ 17 Thai */
- "tl" , TEXTS_tl, /* 7/ 8 Tagalog */
+ "tl" , TEXTS_tl, /* 7/ 9 Tagalog */
"tr" , TEXTS_tr, /* 7/ 18 Turkish */
"uk" , TEXTS_uk, /* 11/ 87 Ukrainian */
"vi" , TEXTS_vi, /* 8/ 17 Vietnamese */
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index b4e115c..43af66e 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -220,6 +220,7 @@
public static final String REGEXP_PERIOD = "\\.";
public static final String STRING_SPACE = " ";
+ public static final String STRING_PERIOD_AND_SPACE = ". ";
/**
* Special keys code. Must be negative.
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index a8f9efb..6e5e0de 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1001,6 +1001,9 @@
if (!mSettings.getCurrent().isApplicationSpecifiedCompletionsOn()) {
return;
}
+ // If we have an update request in flight, we need to cancel it so it does not override
+ // these completions.
+ mHandler.cancelUpdateSuggestionStrip();
if (applicationSpecifiedCompletions == null) {
setNeutralSuggestionStrip();
return;
diff --git a/java/src/com/android/inputmethod/latin/PrevWordsInfo.java b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
index 5dda444..f45c73f 100644
--- a/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
+++ b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
@@ -27,7 +27,8 @@
public class PrevWordsInfo {
public static final PrevWordsInfo EMPTY_PREV_WORDS_INFO =
new PrevWordsInfo(WordInfo.EMPTY_WORD_INFO);
- public static final PrevWordsInfo BEGINNING_OF_SENTENCE = new PrevWordsInfo();
+ public static final PrevWordsInfo BEGINNING_OF_SENTENCE =
+ new PrevWordsInfo(WordInfo.BEGINNING_OF_SENTENCE);
/**
* Word information used to represent previous words information.
@@ -57,6 +58,24 @@
public boolean isValid() {
return mWord != null;
}
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(new Object[] { mWord, mIsBeginningOfSentence } );
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof WordInfo)) return false;
+ final WordInfo wordInfo = (WordInfo)o;
+ if (mWord == null || wordInfo.mWord == null) {
+ return mWord == wordInfo.mWord
+ && mIsBeginningOfSentence == wordInfo.mIsBeginningOfSentence;
+ }
+ return mWord.equals(wordInfo.mWord)
+ && mIsBeginningOfSentence == wordInfo.mIsBeginningOfSentence;
+ }
}
// The words immediately before the considered word. EMPTY_WORD_INFO element means we don't
@@ -67,16 +86,9 @@
// calling getSuggetions* in this situation.
public WordInfo[] mPrevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
- // Beginning of sentence.
- public PrevWordsInfo() {
- mPrevWordsInfo[0] = WordInfo.BEGINNING_OF_SENTENCE;
- Arrays.fill(mPrevWordsInfo, 1 /* start */, mPrevWordsInfo.length, WordInfo.EMPTY_WORD_INFO);
- }
-
// Construct from the previous word information.
public PrevWordsInfo(final WordInfo prevWordInfo) {
mPrevWordsInfo[0] = prevWordInfo;
- Arrays.fill(mPrevWordsInfo, 1 /* start */, mPrevWordsInfo.length, WordInfo.EMPTY_WORD_INFO);
}
// Construct from WordInfo array. n-th element represents (n+1)-th previous word's information.
@@ -116,6 +128,19 @@
}
@Override
+ public int hashCode() {
+ return Arrays.hashCode(mPrevWordsInfo);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof PrevWordsInfo)) return false;
+ final PrevWordsInfo prevWordsInfo = (PrevWordsInfo)o;
+ return Arrays.equals(mPrevWordsInfo, prevWordsInfo.mPrevWordsInfo);
+ }
+
+ @Override
public String toString() {
final StringBuffer builder = new StringBuffer();
for (int i = 0; i < mPrevWordsInfo.length; i++) {
@@ -123,7 +148,7 @@
builder.append("PrevWord[");
builder.append(i);
builder.append("]: ");
- if (!wordInfo.isValid()) {
+ if (wordInfo == null || !wordInfo.isValid()) {
builder.append("Empty. ");
continue;
}
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index 3be6bcc..62b55bc 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -26,6 +26,7 @@
import android.view.inputmethod.ExtractedTextRequest;
import android.view.inputmethod.InputConnection;
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import com.android.inputmethod.latin.utils.CapsModeUtils;
import com.android.inputmethod.latin.utils.DebugLogUtils;
@@ -49,8 +50,10 @@
private static final boolean DBG = false;
private static final boolean DEBUG_PREVIOUS_TEXT = false;
private static final boolean DEBUG_BATCH_NESTING = false;
- // Provision for a long word pair and a separator
- private static final int LOOKBACK_CHARACTER_NUM = Constants.DICTIONARY_MAX_WORD_LENGTH * 2 + 1;
+ // Provision for long words and separators between the words.
+ private static final int LOOKBACK_CHARACTER_NUM = Constants.DICTIONARY_MAX_WORD_LENGTH
+ * (Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1) /* words */
+ + Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM /* separators */;
private static final Pattern spaceRegex = Pattern.compile("\\s+");
private static final int INVALID_CURSOR_POSITION = -1;
@@ -544,22 +547,25 @@
return Arrays.binarySearch(sortedSeparators, code) >= 0;
}
- // Get information of the nth word before cursor. n = 1 retrieves the word immediately before
- // the cursor, n = 2 retrieves the word before that, and so on. This splits on whitespace only.
+ // Get context information from nth word before the cursor. n = 1 retrieves the words
+ // immediately before the cursor, n = 2 retrieves the words before that, and so on. This splits
+ // on whitespace only.
// Also, it won't return words that end in a separator (if the nth word before the cursor
// ends in a separator, it returns information representing beginning-of-sentence).
- // Example :
- // (n = 1) "abc def|" -> def
- // (n = 1) "abc def |" -> def
- // (n = 1) "abc 'def|" -> 'def
+ // Example (when Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM is 2):
+ // (n = 1) "abc def|" -> abc, def
+ // (n = 1) "abc def |" -> abc, def
+ // (n = 1) "abc 'def|" -> empty, 'def
// (n = 1) "abc def. |" -> beginning-of-sentence
// (n = 1) "abc def . |" -> beginning-of-sentence
- // (n = 2) "abc def|" -> abc
- // (n = 2) "abc def |" -> abc
+ // (n = 2) "abc def|" -> beginning-of-sentence, abc
+ // (n = 2) "abc def |" -> beginning-of-sentence, abc
// (n = 2) "abc 'def|" -> empty. The context is different from "abc def", but we cannot
// represent this situation using PrevWordsInfo. See TODO in the method.
- // (n = 2) "abc def. |" -> abc
- // (n = 2) "abc def . |" -> def
+ // TODO: The next example's result should be "abc, def". This have to be fixed before we
+ // retrieve the prior context of Beginning-of-Sentence.
+ // (n = 2) "abc def. |" -> beginning-of-sentence, abc
+ // (n = 2) "abc def . |" -> abc, def
// (n = 2) "abc|" -> beginning-of-sentence
// (n = 2) "abc |" -> beginning-of-sentence
// (n = 2) "abc. def|" -> beginning-of-sentence
@@ -567,43 +573,50 @@
final SpacingAndPunctuations spacingAndPunctuations, final int n) {
if (prev == null) return PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
final String[] w = spaceRegex.split(prev);
-
- // Referring to the word after the nth word.
- if ((n - 1) > 0 && (n - 1) <= w.length) {
- final String wordFollowingTheNthPrevWord = w[w.length - n + 1];
- if (!wordFollowingTheNthPrevWord.isEmpty()) {
- final char firstChar = wordFollowingTheNthPrevWord.charAt(0);
- if (spacingAndPunctuations.isWordConnector(firstChar)) {
- // The word following the n-th prev word is starting with a word connector.
- // TODO: Return meaningful context for this case.
- return PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+ final WordInfo[] prevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+ for (int i = 0; i < prevWordsInfo.length; i++) {
+ final int focusedWordIndex = w.length - n - i;
+ // Referring to the word after the focused word.
+ if ((focusedWordIndex + 1) >= 0 && (focusedWordIndex + 1) < w.length) {
+ final String wordFollowingTheNthPrevWord = w[focusedWordIndex + 1];
+ if (!wordFollowingTheNthPrevWord.isEmpty()) {
+ final char firstChar = wordFollowingTheNthPrevWord.charAt(0);
+ if (spacingAndPunctuations.isWordConnector(firstChar)) {
+ // The word following the focused word is starting with a word connector.
+ // TODO: Return meaningful context for this case.
+ prevWordsInfo[i] = WordInfo.EMPTY_WORD_INFO;
+ break;
+ }
}
}
+ // If we can't find (n + i) words, the context is beginning-of-sentence.
+ if (focusedWordIndex < 0) {
+ prevWordsInfo[i] = WordInfo.BEGINNING_OF_SENTENCE;
+ break;
+ }
+ final String focusedWord = w[focusedWordIndex];
+ // If the word is empty, the context is beginning-of-sentence.
+ final int length = focusedWord.length();
+ if (length <= 0) {
+ prevWordsInfo[i] = WordInfo.BEGINNING_OF_SENTENCE;
+ break;
+ }
+ // If ends in a sentence separator, the context is beginning-of-sentence.
+ final char lastChar = focusedWord.charAt(length - 1);
+ if (spacingAndPunctuations.isSentenceSeparator(lastChar)) {
+ prevWordsInfo[i] = WordInfo.BEGINNING_OF_SENTENCE;
+ break;
+ }
+ // If ends in a word separator or connector, the context is unclear.
+ // TODO: Return meaningful context for this case.
+ if (spacingAndPunctuations.isWordSeparator(lastChar)
+ || spacingAndPunctuations.isWordConnector(lastChar)) {
+ prevWordsInfo[i] = WordInfo.EMPTY_WORD_INFO;
+ break;
+ }
+ prevWordsInfo[i] = new WordInfo(focusedWord);
}
-
- // If we can't find n words, or we found an empty word, the context is
- // beginning-of-sentence.
- if (w.length < n) {
- return PrevWordsInfo.BEGINNING_OF_SENTENCE;
- }
- final String nthPrevWord = w[w.length - n];
- final int length = nthPrevWord.length();
- if (length <= 0) {
- return PrevWordsInfo.BEGINNING_OF_SENTENCE;
- }
-
- // If ends in a sentence separator, the context is beginning-of-sentence.
- final char lastChar = nthPrevWord.charAt(length - 1);
- if (spacingAndPunctuations.isSentenceSeparator(lastChar)) {
- return PrevWordsInfo.BEGINNING_OF_SENTENCE;
- }
- // If ends in a word separator or connector, the context is unclear.
- // TODO: Return meaningful context for this case.
- if (spacingAndPunctuations.isWordSeparator(lastChar)
- || spacingAndPunctuations.isWordConnector(lastChar)) {
- return PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
- }
- return new PrevWordsInfo(new PrevWordsInfo.WordInfo(nthPrevWord));
+ return new PrevWordsInfo(prevWordsInfo);
}
/**
@@ -741,13 +754,12 @@
// Here we test whether we indeed have a period and a space before us. This should not
// be needed, but it's there just in case something went wrong.
final CharSequence textBeforeCursor = getTextBeforeCursor(2, 0);
- final String periodSpace = ". ";
- if (!TextUtils.equals(periodSpace, textBeforeCursor)) {
+ if (!TextUtils.equals(Constants.STRING_PERIOD_AND_SPACE, textBeforeCursor)) {
// Theoretically we should not be coming here if there isn't ". " before the
// cursor, but the application may be changing the text while we are typing, so
// anything goes. We should not crash.
Log.d(TAG, "Tried to revert double-space combo but we didn't find "
- + "\"" + periodSpace + "\" just before the cursor.");
+ + "\"" + Constants.STRING_PERIOD_AND_SPACE + "\" just before the cursor.");
return false;
}
// Double-space results in ". ". A backspace to cancel this should result in a single
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 692c03a..e43db35 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -126,16 +126,17 @@
final boolean didRemoveTypedWord =
SuggestedWordInfo.removeDups(typedWord, suggestionsContainer);
+ final SuggestedWordInfo firstSuggestedWordInfo;
final String whitelistedWord;
if (suggestionsContainer.isEmpty()) {
+ firstSuggestedWordInfo = null;
whitelistedWord = null;
} else {
- final SuggestedWordInfo firstSuggestedWordInfo = suggestionsContainer.get(0);
- final String firstSuggestion = firstSuggestedWordInfo.mWord;
+ firstSuggestedWordInfo = suggestionsContainer.get(0);
if (!firstSuggestedWordInfo.isKindOf(SuggestedWordInfo.KIND_WHITELIST)) {
whitelistedWord = null;
} else {
- whitelistedWord = firstSuggestion;
+ whitelistedWord = firstSuggestedWordInfo.mWord;
}
}
@@ -151,10 +152,10 @@
// 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
- || suggestionResults.isEmpty() || wordComposer.hasDigits()
+ || null == firstSuggestedWordInfo || wordComposer.hasDigits()
|| wordComposer.isMostlyCaps() || wordComposer.isResumed()
|| !mDictionaryFacilitator.hasInitializedMainDictionary()
- || suggestionResults.first().isKindOf(SuggestedWordInfo.KIND_SHORTCUT)) {
+ || firstSuggestedWordInfo.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
@@ -166,7 +167,7 @@
hasAutoCorrection = false;
} else {
hasAutoCorrection = AutoCorrectionUtils.suggestionExceedsAutoCorrectionThreshold(
- suggestionResults.first(), consideredWord, mAutoCorrectionThreshold);
+ firstSuggestedWordInfo, consideredWord, mAutoCorrectionThreshold);
}
if (!TextUtils.isEmpty(typedWord)) {
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index ec57cd7..15ddcf9 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -1882,10 +1882,11 @@
final CharSequence chosenWordWithSuggestions =
SuggestionSpanUtils.getTextWithSuggestionSpan(mLatinIME, chosenWord,
suggestedWords);
- // Use the 2nd previous word as the previous word because the 1st previous word is the word
- // to be committed.
+ // When we are composing word, get previous words information from the 2nd previous word
+ // because the 1st previous word is the word to be committed. Otherwise get previous words
+ // information from the 1st previous word.
final PrevWordsInfo prevWordsInfo = mConnection.getPrevWordsInfoFromNthPreviousWord(
- settingsValues.mSpacingAndPunctuations, 2);
+ settingsValues.mSpacingAndPunctuations, mWordComposer.isComposingWord() ? 2 : 1);
mConnection.commitText(chosenWordWithSuggestions, 1);
// Add the word to the user history dictionary
performAdditionToUserHistoryDictionary(settingsValues, chosenWord, prevWordsInfo);
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index db15c1c..be33f33 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -258,7 +258,9 @@
return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
| SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS,
new String[] {
- TextUtils.join(Constants.STRING_SPACE, splitText) });
+ TextUtils.join(Constants.STRING_SPACE, splitText),
+ TextUtils.join(Constants.STRING_PERIOD_AND_SPACE,
+ splitText) });
}
}
return dictInfo.mDictionary.isValidWord(inText)
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index 528d500..47921ca 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -20,8 +20,6 @@
import android.util.AttributeSet;
import android.util.Log;
-import com.android.inputmethod.accessibility.AccessibilityUtils;
-import com.android.inputmethod.accessibility.MoreSuggestionsAccessibilityDelegate;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardActionListener;
@@ -51,6 +49,7 @@
super(context, attrs, defStyle);
}
+ // TODO: Remove redundant override method.
@Override
public void setKeyboard(final Keyboard keyboard) {
super.setKeyboard(keyboard);
@@ -58,16 +57,10 @@
// above {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call.
// With accessibility mode on, {@link #mAccessibilityDelegate} is set to a
// {@link MoreKeysKeyboardAccessibilityDelegate} object at the above
- // {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call. And the object has to be
- // overwritten by a {@link MoreSuggestionsAccessibilityDelegate} object here.
- if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
- if (!(mAccessibilityDelegate instanceof MoreSuggestionsAccessibilityDelegate)) {
- mAccessibilityDelegate = new MoreSuggestionsAccessibilityDelegate(
- this, mKeyDetector);
- mAccessibilityDelegate.setOpenAnnounce(R.string.spoken_open_more_suggestions);
- mAccessibilityDelegate.setCloseAnnounce(R.string.spoken_close_more_suggestions);
- }
- mAccessibilityDelegate.setKeyboard(keyboard);
+ // {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call.
+ if (mAccessibilityDelegate != null) {
+ mAccessibilityDelegate.setOpenAnnounce(R.string.spoken_open_more_suggestions);
+ mAccessibilityDelegate.setCloseAnnounce(R.string.spoken_close_more_suggestions);
}
}
diff --git a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
index 4dfb38d..00355c3 100644
--- a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
@@ -23,9 +23,12 @@
* A class to help with handling different writing scripts.
*/
public class ScriptUtils {
+ // TODO: should we use ISO 15924 identifiers instead?
public static final int SCRIPT_LATIN = 0;
public static final int SCRIPT_CYRILLIC = 1;
public static final int SCRIPT_GREEK = 2;
+ public static final int SCRIPT_ARABIC = 3;
+ public static final int SCRIPT_HEBREW = 4;
public static final TreeMap<String, Integer> mLanguageToScript;
static {
// List of the supported languages and their associated script. We won't check
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
index 4da339b..1d202c3 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
@@ -77,30 +77,6 @@
return dictBuffers->flush(dirPath);
}
-/* static */ bool DictFileWritingUtils::flushAllHeaderAndBodyToFile(const char *const filePath,
- BufferWithExtendableBuffer *const dictHeader, BufferWithExtendableBuffer *const dictBody) {
- const int tmpFileNameBufSize = FileUtils::getFilePathWithSuffixBufSize(filePath,
- TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE);
- // Name of a temporary file used for writing that is a connected string of original name and
- // TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE.
- char tmpFileName[tmpFileNameBufSize];
- FileUtils::getFilePathWithSuffix(filePath, TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE,
- tmpFileNameBufSize, tmpFileName);
- if (!DictFileWritingUtils::flushBufferToFile(tmpFileName, dictHeader)) {
- AKLOGE("Dictionary header cannot be written to %s.", tmpFileName);
- return false;
- }
- if (!DictFileWritingUtils::flushBufferToFile(tmpFileName, dictBody)) {
- AKLOGE("Dictionary structure cannot be written to %s.", tmpFileName);
- return false;
- }
- if (rename(tmpFileName, filePath) != 0) {
- AKLOGE("Dictionary file %s cannot be renamed to %s", tmpFileName, filePath);;
- return false;
- }
- return true;
-}
-
/* static */ bool DictFileWritingUtils::flushBufferToFileWithSuffix(const char *const basePath,
const char *const suffix, const BufferWithExtendableBuffer *const buffer) {
const int filePathBufSize = FileUtils::getFilePathWithSuffixBufSize(basePath, suffix);
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
index 5df5856..0dd1256 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
@@ -35,10 +35,6 @@
const std::vector<int> localeAsCodePointVector,
const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap);
- static bool flushAllHeaderAndBodyToFile(const char *const filePath,
- BufferWithExtendableBuffer *const dictHeader,
- BufferWithExtendableBuffer *const dictBody);
-
static bool flushBufferToFileWithSuffix(const char *const basePath, const char *const suffix,
const BufferWithExtendableBuffer *const buffer);
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
index bf19a8b..59fe611 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
@@ -25,7 +25,7 @@
@SmallTest
public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
- private static final int NUMBER_OF_SUBTYPES = 68;
+ private static final int NUMBER_OF_SUBTYPES = 72;
private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 45;
private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Sinhala.java b/tests/src/com/android/inputmethod/keyboard/layout/Sinhala.java
new file mode 100644
index 0000000..bfd94d5
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Sinhala.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Sinhala keyboard.
+ */
+public final class Sinhala extends LayoutBase {
+ private static final String LAYOUT_NAME = "sinhala";
+
+ public Sinhala(final LayoutCustomizer customizer) {
+ super(customizer, Symbols.class, SymbolsShifted.class);
+ }
+
+ @Override
+ public String getName() { return LAYOUT_NAME; }
+
+ public static class SinhalaCustomizer extends LayoutCustomizer {
+ public SinhalaCustomizer(final Locale locale) { super(locale); }
+
+ @Override
+ public ExpectedKey getAlphabetKey() { return SINHALA_ALPHABET_KEY; }
+
+ @Override
+ public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+ return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+ }
+
+ // U+0D85: "අ" SINHALA LETTER AYANNA
+ // U+0D86: "ආ" SINHALA LETTER AAYANNA
+ private static final ExpectedKey SINHALA_ALPHABET_KEY = key(
+ "\u0D85,\u0D86", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+ }
+
+ @Override
+ ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+ @Override
+ ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+ if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+ return ALPHABET_COMMON;
+ }
+ return ALPHABET_SHIFTED_COMMON;
+ }
+
+ private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+ .setKeysOfRow(1,
+ // U+0DD4: "ු" SINHALA VOWEL SIGN KETTI PAA-PILLA
+ key("\u0DD4", moreKey("1")),
+ // U+0D85: "අ" SINHALA LETTER AYANNA
+ key("\u0D85", moreKey("2")),
+ // U+0DD0: "ැ" SINHALA VOWEL SIGN KETTI AEDA-PILLA
+ key("\u0DD0", moreKey("3")),
+ // U+0DBB: "ර" SINHALA LETTER RAYANNA
+ key("\u0DBB", moreKey("4")),
+ // U+0D91: "එ" SINHALA LETTER EYANNA
+ key("\u0D91", moreKey("5")),
+ // U+0DC4: "හ" SINHALA LETTER HAYANNA
+ key("\u0DC4", moreKey("6")),
+ // U+0DB8: "ම" SINHALA LETTER MAYANNA
+ key("\u0DB8", moreKey("7")),
+ // U+0DC3: "ස" SINHALA LETTER DANTAJA SAYANNA
+ key("\u0DC3", moreKey("8")),
+ // U+0DAF: "ද" SINHALA LETTER ALPAPRAANA DAYANNA
+ // U+0DB3: "ඳ" SINHALA LETTER SANYAKA DAYANNA
+ key("\u0DAF", joinMoreKeys("9", "\u0DB3")),
+ // U+0DA0: "ච" SINHALA LETTER ALPAPRAANA CAYANNA
+ key("\u0DA0", moreKey("0")),
+ // U+0DA4: "ඤ" SINHALA LETTER TAALUJA NAASIKYAYA
+ // U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA
+ key("\u0DA4", moreKey("\u0DF4")))
+ .setKeysOfRow(2,
+ // U+0DCA: "්" SINHALA SIGN AL-LAKUNA
+ // U+0DD2: "ි" SINHALA VOWEL SIGN KETTI IS-PILLA
+ // U+0DCF: "ා" SINHALA VOWEL SIGN AELA-PILLA
+ // U+0DD9: "ෙ" SINHALA VOWEL SIGN KOMBUVA
+ // U+0DA7: "ට" SINHALA LETTER ALPAPRAANA TTAYANNA
+ // U+0DBA: "ය" SINHALA LETTER YAYANNA
+ // U+0DC0: "ව" SINHALA LETTER VAYANNA
+ // U+0DB1: "න" SINHALA LETTER DANTAJA NAYANNA
+ // U+0D9A: "ක" SINHALA LETTER ALPAPRAANA KAYANNA
+ // U+0DAD: "ත" SINHALA LETTER ALPAPRAANA TAYANNA
+ // U+0D8F: "ඏ" SINHALA LETTER ILUYANNA
+ "\u0DCA", "\u0DD2", "\u0DCF", "\u0DD9", "\u0DA7", "\u0DBA", "\u0DC0", "\u0DB1",
+ "\u0D9A", "\u0DAD", "\u0D8F")
+ .setKeysOfRow(3,
+ // U+0D82: "ං" SINHALA SIGN ANUSVARAYA
+ // U+0D83: "ඃ" SINHALA SIGN VISARGAYA
+ key("\u0D82", moreKey("\u0D83")),
+ // U+0DA2: "ජ" SINHALA LETTER ALPAPRAANA JAYANNA
+ // U+0DA6: "ඦ" SINHALA LETTER SANYAKA JAYANNA
+ key("\u0DA2", moreKey("\u0DA6")),
+ // U+0DA9: "ඩ" SINHALA LETTER ALPAPRAANA DDAYANNA
+ // U+0DAC: "ඬ" SINHALA LETTER SANYAKA DDAYANNA
+ key("\u0DA9", moreKey("\u0DAC")),
+ // U+0D89: "ඉ" SINHALA LETTER IYANNA
+ // U+0DB6: "බ" SINHALA LETTER ALPAPRAANA BAYANNA
+ // U+0DB4: "ප" SINHALA LETTER ALPAPRAANA PAYANNA
+ // U+0DBD: "ල" SINHALA LETTER DANTAJA LAYANNA
+ "\u0D89", "\u0DB6", "\u0DB4", "\u0DBD",
+ // U+0D9C: "ග" SINHALA LETTER ALPAPRAANA GAYANNA
+ // U+0D9F: "ඟ" SINHALA LETTER SANYAKA GAYANNA
+ key("\u0D9C", moreKey("\u0D9F")),
+ // U+0DF3: "ෳ" SINHALA VOWEL SIGN DIGA GAYANUKITTA
+ "\u0DF3")
+ .build();
+
+ private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+ .setKeysOfRow(1,
+ // U+0DD6: "ූ" SINHALA VOWEL SIGN DIGA PAA-PILLA
+ key("\u0DD6", moreKey("1")),
+ // U+0D8B: "උ" SINHALA LETTER UYANNA
+ key("\u0D8B", moreKey("2")),
+ // U+0DD1: "ෑ" SINHALA VOWEL SIGN DIGA AEDA-PILLA
+ key("\u0DD1", moreKey("3")),
+ // U+0D8D: "ඍ" SINHALA LETTER IRUYANNA
+ key("\u0D8D", moreKey("4")),
+ // U+0D94: "ඔ" SINHALA LETTER OYANNA
+ key("\u0D94", moreKey("5")),
+ // U+0DC1: "ශ" SINHALA LETTER TAALUJA SAYANNA
+ key("\u0DC1", moreKey("6")),
+ // U+0DB9: "ඹ" SINHALA LETTER AMBA BAYANNA
+ key("\u0DB9", moreKey("7")),
+ // U+0DC2: "ෂ" SINHALA LETTER MUURDHAJA SAYANNA
+ key("\u0DC2", moreKey("8")),
+ // U+0DB0: "ධ" SINHALA LETTER MAHAAPRAANA DAYANNA
+ key("\u0DB0", moreKey("9")),
+ // U+0DA1: "ඡ" SINHALA LETTER MAHAAPRAANA CAYANNA
+ key("\u0DA1", moreKey("0")),
+ // U+0DA5: "ඥ" SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+ // U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA
+ key("\u0DA5", moreKey("\u0DF4")))
+ .setKeysOfRow(2,
+ // U+0DDF: "ෟ" SINHALA VOWEL SIGN GAYANUKITTA
+ // U+0DD3: "ී" SINHALA VOWEL SIGN DIGA IS-PILLA
+ // U+0DD8: "ෘ" SINHALA VOWEL SIGN GAETTA-PILLA
+ // U+0DC6: "ෆ" SINHALA LETTER FAYANNA
+ // U+0DA8: "ඨ" SINHALA LETTER MAHAAPRAANA TTAYANNA
+ // U+0DCA/U+200D/U+0DBA:
+ // "්ය" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER YAYANNA
+ // U+0DC5/U+0DD4:
+ // "ළු" SINHALA LETTER MUURDHAJA LAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA
+ // U+0DAB: "ණ" SINHALA LETTER MUURDHAJA NAYANNA
+ // U+0D9B: "ඛ" SINHALA LETTER MAHAAPRAANA KAYANNA
+ // U+0DAE: "ථ" SINHALA LETTER MAHAAPRAANA TAYANNA
+ // U+0DCA/U+200D/U+0DBB:
+ // "්ර" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER RAYANNA
+ "\u0DDF", "\u0DD3", "\u0DD8", "\u0DC6", "\u0DA8", "\u0DCA\u200D\u0DBA",
+ "\u0DC5\u0DD4", "\u0DAB", "\u0D9B", "\u0DAE", "\u0DCA\u200D\u0DBB")
+ .setKeysOfRow(3,
+ // U+0D9E: "ඞ" SINHALA LETTER KANTAJA NAASIKYAYA
+ // U+0DA3: "ඣ" SINHALA LETTER MAHAAPRAANA JAYANNA
+ // U+0DAA: "ඪ" SINHALA LETTER MAHAAPRAANA DDAYANNA
+ // U+0D8A: "ඊ" SINHALA LETTER IIYANNA
+ // U+0DB7: "භ" SINHALA LETTER MAHAAPRAANA BAYANNA
+ // U+0DB5: "ඵ" SINHALA LETTER MAHAAPRAANA PAYANNA
+ // U+0DC5: "ළ" SINHALA LETTER MUURDHAJA LAYANNA
+ // U+0D9D: "ඝ" SINHALA LETTER MAHAAPRAANA GAYANNA
+ // U+0DBB/U+0DCA/U+200D:
+ // "ර්" SINHALA LETTER RAYANNA/SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER
+ "\u0d9E", "\u0DA3", "\u0DAA", "\u0D8A", "\u0DB7", "\u0DB5", "\u0DC5", "\u0D9D",
+ "\u0DBB\u0DCA\u200D")
+ .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java
index 6380da5..2e676df 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java
@@ -16,7 +16,7 @@
package com.android.inputmethod.keyboard.layout.tests;
-import android.test.suitebuilder.annotation.Suppress;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.inputmethod.keyboard.layout.HindiCompact;
import com.android.inputmethod.keyboard.layout.HindiCompact.HindiCompactCustomizer;
@@ -27,7 +27,7 @@
/**
* hi: Hindi/hindi_compact
*/
-@Suppress
+@SmallTest
public final class TestsHindiCompact extends LayoutTestsBase {
private static final Locale LOCALE = new Locale("hi");
private static final LayoutBase LAYOUT = new HindiCompact(new HindiCompactCustomizer(LOCALE));
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
index d45d99d..b937629 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
@@ -16,7 +16,7 @@
package com.android.inputmethod.keyboard.layout.tests;
-import android.test.suitebuilder.annotation.Suppress;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.inputmethod.keyboard.layout.LayoutBase;
import com.android.inputmethod.keyboard.layout.Marathi;
@@ -27,7 +27,7 @@
/**
* mr_IN: Marathi (India)/marathi
*/
-@Suppress
+@SmallTest
public final class TestsMarathiIN extends LayoutTestsBase {
private static final Locale LOCALE = new Locale("mr", "IN");
private static final LayoutBase LAYOUT = new Marathi(new MarathiCustomizer(LOCALE));
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
index a0bd50c..e6d3b3b 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
@@ -16,7 +16,7 @@
package com.android.inputmethod.keyboard.layout.tests;
-import android.test.suitebuilder.annotation.Suppress;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.inputmethod.keyboard.layout.LayoutBase;
import com.android.inputmethod.keyboard.layout.Myanmar;
@@ -27,7 +27,7 @@
/**
* my_MM: Myanmar (Myanmar)/myanmar
*/
-@Suppress
+@SmallTest
public final class TestsMyanmarMM extends LayoutTestsBase {
private static final Locale LOCALE = new Locale("my", "MM");
private static final LayoutBase LAYOUT = new Myanmar(new MyanmarCustomizer(LOCALE));
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSinhalaLK.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSinhalaLK.java
new file mode 100644
index 0000000..1cea497
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSinhalaLK.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Sinhala;
+import com.android.inputmethod.keyboard.layout.Sinhala.SinhalaCustomizer;
+
+import java.util.Locale;
+
+/**
+ * si_LK: Sinhala (Sri Lanka)/sinhala
+ */
+@SmallTest
+public final class TestsSinhalaLK extends LayoutTestsBase {
+ private static final Locale LOCALE = new Locale("si", "LK");
+ private static final LayoutBase LAYOUT = new Sinhala(new SinhalaCustomizer(LOCALE));
+
+ @Override
+ LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
index 5a5ec6d..ac52a41 100644
--- a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
+++ b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
@@ -30,6 +30,7 @@
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputConnectionWrapper;
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import com.android.inputmethod.latin.utils.RunInLocale;
import com.android.inputmethod.latin.utils.StringUtils;
@@ -166,6 +167,16 @@
"abc def", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mIsBeginningOfSentence);
assertTrue(RichInputConnection.getPrevWordsInfoFromNthPreviousWord(
"abc", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mIsBeginningOfSentence);
+
+ // For n-gram
+ assertEquals(RichInputConnection.getPrevWordsInfoFromNthPreviousWord(
+ "abc def", mSpacingAndPunctuations, 1).mPrevWordsInfo[0].mWord, "def");
+ assertEquals(RichInputConnection.getPrevWordsInfoFromNthPreviousWord(
+ "abc def", mSpacingAndPunctuations, 1).mPrevWordsInfo[1].mWord, "abc");
+ assertEquals(RichInputConnection.getPrevWordsInfoFromNthPreviousWord(
+ "abc def", mSpacingAndPunctuations, 2).mPrevWordsInfo[1],
+ WordInfo.BEGINNING_OF_SENTENCE);
+
// The following tests reflect the current behavior of the function
// RichInputConnection#getNthPreviousWord.
// TODO: However at this time, the code does never go
diff --git a/tools/make-keyboard-text/res/values-si-rLK/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-si-rLK/donottranslate-more-keys.xml
new file mode 100644
index 0000000..89c9195
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-si-rLK/donottranslate-more-keys.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Label for "switch to alphabetic" key.
+ U+0D85: "අ" SINHALA LETTER AYANNA
+ U+0D86: "ආ" SINHALA LETTER AAYANNA -->
+ <string name="keylabel_to_alpha">අ,ආ</string>
+</resources>