aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-af/strings.xml4
-rw-r--r--java/res/values-am/strings.xml4
-rw-r--r--java/res/values-ar/strings.xml5
-rw-r--r--java/res/values-bg/strings.xml15
-rw-r--r--java/res/values-ca/strings.xml15
-rw-r--r--java/res/values-cs/strings.xml15
-rw-r--r--java/res/values-da/strings.xml3
-rw-r--r--java/res/values-de/strings.xml15
-rw-r--r--java/res/values-el/strings.xml3
-rw-r--r--java/res/values-en-rGB/strings.xml3
-rw-r--r--java/res/values-es-rUS/strings.xml3
-rw-r--r--java/res/values-es/strings.xml15
-rw-r--r--java/res/values-fa/strings.xml15
-rw-r--r--java/res/values-fi/strings.xml3
-rw-r--r--java/res/values-fr/strings.xml15
-rw-r--r--java/res/values-hr/strings.xml15
-rw-r--r--java/res/values-hu/strings.xml7
-rw-r--r--java/res/values-in/strings.xml3
-rw-r--r--java/res/values-it/strings.xml6
-rw-r--r--java/res/values-iw/strings.xml15
-rw-r--r--java/res/values-ja/strings.xml3
-rw-r--r--java/res/values-ko/strings.xml3
-rw-r--r--java/res/values-lt/strings.xml15
-rw-r--r--java/res/values-lv/strings.xml3
-rw-r--r--java/res/values-ms/strings.xml4
-rw-r--r--java/res/values-nb/strings.xml3
-rw-r--r--java/res/values-nl/strings.xml3
-rw-r--r--java/res/values-pl/strings.xml3
-rw-r--r--java/res/values-pt-rPT/strings.xml15
-rw-r--r--java/res/values-pt/strings.xml3
-rw-r--r--java/res/values-rm/strings.xml4
-rw-r--r--java/res/values-ro/strings.xml15
-rw-r--r--java/res/values-ru/strings.xml15
-rw-r--r--java/res/values-sk/strings.xml15
-rw-r--r--java/res/values-sl/strings.xml3
-rw-r--r--java/res/values-sr/strings.xml15
-rw-r--r--java/res/values-sv/strings.xml15
-rw-r--r--java/res/values-sw/strings.xml4
-rw-r--r--java/res/values-th/strings.xml3
-rw-r--r--java/res/values-tl/strings.xml3
-rw-r--r--java/res/values-tr/strings.xml3
-rw-r--r--java/res/values-uk/strings.xml3
-rw-r--r--java/res/values-vi/strings.xml3
-rw-r--r--java/res/values-zh-rCN/strings.xml15
-rw-r--r--java/res/values-zh-rTW/strings.xml15
-rw-r--r--java/res/values-zu/strings.xml4
-rw-r--r--java/res/values/styles.xml1
-rw-r--r--java/src/com/android/inputmethod/keyboard/ProximityInfo.java10
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java96
-rw-r--r--java/src/com/android/inputmethod/latin/ContactsDictionary.java16
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java43
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java8
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java16
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerProximityInfo.java94
54 files changed, 439 insertions, 214 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index 70369ed0f..cbe64062f 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -79,6 +79,10 @@
<string name="label_done_key" msgid="2441578748772529288">"Klaar"</string>
<string name="label_send_key" msgid="2815056534433717444">"Stuur"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
+ <skip />
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Meer"</string>
<string name="label_pause_key" msgid="181098308428035340">"Laat wag"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Wag"</string>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index 862b33812..4d8ace549 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -79,6 +79,10 @@
<string name="label_done_key" msgid="2441578748772529288">"ተከናውኗል"</string>
<string name="label_send_key" msgid="2815056534433717444">" ይላኩ"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
+ <skip />
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"ተጨማሪ"</string>
<string name="label_pause_key" msgid="181098308428035340">"ላፍታ አቁም"</string>
<string name="label_wait_key" msgid="6402152600878093134">"ቆይ"</string>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 49edcb2b1..433081306 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -62,7 +62,10 @@
<string name="label_next_key" msgid="362972844525672568">"التالي"</string>
<string name="label_done_key" msgid="2441578748772529288">"تم"</string>
<string name="label_send_key" msgid="2815056534433717444">"إرسال"</string>
- <string name="label_to_alpha_key" msgid="4793983863798817523">"أ ب ج د"</string>
+ <string name="label_to_alpha_key" msgid="4793983863798817523">"أ ب ج"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"المزيد"</string>
<string name="label_pause_key" msgid="181098308428035340">"توقف مؤقت"</string>
<string name="label_wait_key" msgid="6402152600878093134">"انتظار"</string>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index 9e6aa2dd8..cc958af77 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
<string name="label_send_key" msgid="2815056534433717444">"Изпращане"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"АБВ"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Още"</string>
<string name="label_pause_key" msgid="181098308428035340">"Пауза"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Чака"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Микр. на клав. на симв."</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Глас. въвежд. е деакт."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Избор на метод на въвеждане"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Конфигуриране на въвеждането"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Входни езици"</string>
<string name="select_language" msgid="2573265881207142437">"Избор на езици за въвеждане"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Докоснете отново, за да запазите"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Докоснете, за да поправите думите"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Докоснете въведените думи, за да ги поправите – само когато предложенията са видими"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Тема на клавиатурата"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Немска „QWERTY“"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"английски (Великобритания)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"английски (САЩ)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за изучаване на използваемостта"</string>
</resources>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index a1c1e804f..2c9fbfbb6 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Fet"</string>
<string name="label_send_key" msgid="2815056534433717444">"Envia"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Més"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Espera"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro en tecl. símb."</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. veu desactiv."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Selecciona el mètode d\'entrada"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Configuració de mètodes d\'entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomes d\'entrada"</string>
<string name="select_language" msgid="2573265881207142437">"Selecciona l\'idioma d\'entrada"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Torna a tocar per desar"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Toca per corregir paraules"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Toca les paraules introduïdes per corregir-les, només quan els suggeriments siguin visibles"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclat"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY alemany"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Anglès (Regne Unit)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Anglès (EUA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'estudi d\'usabilitat"</string>
</resources>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 8660bd11d..38417a0d5 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Hotovo"</string>
<string name="label_send_key" msgid="2815056534433717444">"Odeslat"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Další"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pauza"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Čekat"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. na kláv. se symb."</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup vypnut"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Výběr metody zadávání dat"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Nakonfigurovat metody vstupu"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Vstupní jazyky"</string>
<string name="select_language" msgid="2573265881207142437">"Výběr jazyků vstupu"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Dalším dotykem slovo uložíte"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Dotykem aktivovat opravy"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Klepnutím na zadaná slova tato slova opravíte, musí však být viditelné návrhy."</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Motiv klávesnice"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"němčina (QWERTY)"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"angličtina (VB)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"angličtina (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim studie použitelnosti"</string>
</resources>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index 697250955..97dc8a0ad 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Udfør"</string>
<string name="label_send_key" msgid="2815056534433717444">"Send"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mere"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pause"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Vent"</string>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 0e987c350..fdce3bb01 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Fertig"</string>
<string name="label_send_key" msgid="2815056534433717444">"Senden"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mehr"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pause"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Warten"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikro auf Symboltastatur"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spracheingabe deaktiviert"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Eingabemethode auswählen"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Eingabemethoden konfigurieren"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Eingabesprachen"</string>
<string name="select_language" msgid="2573265881207142437">"Eingabesprachen auswählen"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Zum Speichern erneut berühren"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Wortkorrektur"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Tippen Sie zum Korrigieren auf eingegebene Wörter (nur, wenn Vorschläge angezeigt werden)."</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Tastaturdesign"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Deutsche QWERTZ-Tastaturbelegung"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Englisch (GB)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Englisch (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus der Studie zur Benutzerfreundlichkeit"</string>
</resources>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index f452c67ba..2629c2418 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Τέλος"</string>
<string name="label_send_key" msgid="2815056534433717444">"Αποστολή"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ΑΒΓ"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">";123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Περισσότερα"</string>
<string name="label_pause_key" msgid="181098308428035340">"Παύση"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Αναμ."</string>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index f31158d25..7a0449c27 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Done"</string>
<string name="label_send_key" msgid="2815056534433717444">"Send"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"More"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pause"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Wait"</string>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index f66f46cd2..4eacee950 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Hecho"</string>
<string name="label_send_key" msgid="2815056534433717444">"Enviar"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Más"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Espera"</string>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index bb996ff23..aae38ca8d 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Ok"</string>
<string name="label_send_key" msgid="2815056534433717444">"Enviar"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Más"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Espera"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro en teclado de símbolos"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entrada de voz inhabilitada"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Seleccionar método de introducción de texto"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introducción"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas"</string>
<string name="select_language" msgid="2573265881207142437">"Seleccionar idiomas de entrada"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Volver a tocar para guardar"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tocar para corregir palabras"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Toca las palabras introducidas para corregirlas, solo cuando las sugerencias sean visibles."</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Tema de teclado"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY alemán"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"inglés (Reino Unido)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"inglés (EE.UU.)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string>
</resources>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index 66971f2b2..bacc180a1 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"انجام شد"</string>
<string name="label_send_key" msgid="2815056534433717444">"ارسال"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"بیشتر"</string>
<string name="label_pause_key" msgid="181098308428035340">"توقف موقت"</string>
<string name="label_wait_key" msgid="6402152600878093134">"منتظر بمانید"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"میکروفن در صفحه کلید نمادها"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"ورودی صدا غیرفعال است"</string>
<string name="selectInputMethod" msgid="315076553378705821">"انتخاب روش ورودی"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"پیکربندی روش های ورودی"</string>
<string name="language_selection_title" msgid="1651299598555326750">"زبان های ورودی"</string>
<string name="select_language" msgid="2573265881207142437">"انتخاب زبان های ورودی"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← جهت ذخیره دوباره لمس کنید"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"برای تصحیح کلمات لمس کنید"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"فقط هنگامی که پیشنهادات قابل مشاهده هستند، برای تصحیح کلمات وارد شده آنها را لمس کنید"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"طرح زمینه صفحه کلید"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"آلمانی QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"انگیسی (انگلستان)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"انگیسی (US)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"حالت بررسی قابلیت استفاده"</string>
</resources>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index a065da97a..1b45be745 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Valmis"</string>
<string name="label_send_key" msgid="2815056534433717444">"Lähetä"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Lisää"</string>
<string name="label_pause_key" msgid="181098308428035340">"Tauko"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Odota"</string>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index e8238ee9f..e658da024 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"OK"</string>
<string name="label_send_key" msgid="2815056534433717444">"Envoyer"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Plus"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pause"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Attente"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro sur clavier symboles"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Saisie vocale désactivée"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Sélectionner un mode de saisie."</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Configurer les modes de saisie"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string>
<string name="select_language" msgid="2573265881207142437">"Sélectionner les langues de saisie"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Appuyer de nouveau pour enregistrer"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Appuyer pour corriger"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Appuyer sur les mots saisis pour les corriger, uniquement lorsque des suggestions sont visibles"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Thème du clavier"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Clavier QWERTY allemand"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Anglais (Royaume-Uni)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Anglais (États-Unis)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'étude de l\'utilisabilité"</string>
</resources>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index 24ecf190d..55d4b145c 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Gotovo"</string>
<string name="label_send_key" msgid="2815056534433717444">"Pošalji"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Više"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pauza"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Pričekaj"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. na tipk. simb."</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. unos onemog."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Odabir ulazne metode"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Konfiguriraj načine ulaza"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jezici unosa"</string>
<string name="select_language" msgid="2573265881207142437">"Odaberite jezike unosa"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Dodirnite opet za spremanje"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Dodirnite za ispravak riječi"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Dodirnite unesene riječi da biste ih ispravili samo kada su prijedlozi vidljivi"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"njemački QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"engleski (Velika Britanija)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"engleski (SAD)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način studije upotrebljivosti"</string>
</resources>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index be96f3f14..d682b82ec 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Kész"</string>
<string name="label_send_key" msgid="2815056534433717444">"Küldés"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Egyebek"</string>
<string name="label_pause_key" msgid="181098308428035340">"Szün."</string>
<string name="label_wait_key" msgid="6402152600878093134">"Vár"</string>
@@ -141,7 +144,7 @@
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"A beírt szavakat csak akkor javíthatja ki megérintve, ha látszanak javaslatok"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Billentyűzettéma"</string>
<string name="subtype_de_qwerty" msgid="3358900499589259491">"Német QWERTY"</string>
- <string name="subtype_en_GB" msgid="88170601942311355">"angol (Egyesült Királyság)"</string>
- <string name="subtype_en_US" msgid="6160452336634534239">"angol (Egyesült Államok)"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"angol (brit)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"angol (amerikai)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Használhatósági teszt"</string>
</resources>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index b211ca192..d8bb604d4 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Selesai"</string>
<string name="label_send_key" msgid="2815056534433717444">"Kirimkan"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Lainnya"</string>
<string name="label_pause_key" msgid="181098308428035340">"Jeda"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Tunggu"</string>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 52ef8d61c..d122f5087 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -23,8 +23,7 @@
<string name="english_ime_name" msgid="7252517407088836577">"Tastiera Android"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Impostazioni tastiera Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opzioni inserimento"</string>
- <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
- <skip />
+ <string name="spell_checker_service_name" msgid="2003013122022285508">"Correzione Android"</string>
<string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrazione tasti"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"Suono tasti"</string>
<string name="popup_on_keypress" msgid="123894815723512944">"Popup sui tasti"</string>
@@ -63,6 +62,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Fine"</string>
<string name="label_send_key" msgid="2815056534433717444">"Invia"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Altro"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Attesa"</string>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 81c094278..b49091335 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"בוצע"</string>
<string name="label_send_key" msgid="2815056534433717444">"שלח"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"אבג"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"עוד"</string>
<string name="label_pause_key" msgid="181098308428035340">"השהה"</string>
<string name="label_wait_key" msgid="6402152600878093134">"המתן"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"מיקרופון במקלדת הסמלים"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"הקלט הקולי מושבת"</string>
<string name="selectInputMethod" msgid="315076553378705821">"בחר שיטת קלט"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"הגדרת שיטות קלט"</string>
<string name="language_selection_title" msgid="1651299598555326750">"שפות קלט"</string>
<string name="select_language" msgid="2573265881207142437">"בחר שפות קלט"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← גע שוב כדי לשמור"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"גע כדי לתקן מילים"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"גע במילים שהוזנו כדי לתקן אותן, רק כאשר הצעות מוצגות"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"עיצוב מקלדת"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"מקלדת QWERTY גרמנית"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"אנגלית (בריטניה)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"אנגלית (ארה\"ב)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"מצב מחקר שימושיות"</string>
</resources>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 051aed59f..8ac407a06 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"完了"</string>
<string name="label_send_key" msgid="2815056534433717444">"送信"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Shift"</string>
<string name="label_pause_key" msgid="181098308428035340">"停止"</string>
<string name="label_wait_key" msgid="6402152600878093134">"待機"</string>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index a33bc8124..c9000d18a 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"완료"</string>
<string name="label_send_key" msgid="2815056534433717444">"전송"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"더보기"</string>
<string name="label_pause_key" msgid="181098308428035340">"일시 중지"</string>
<string name="label_wait_key" msgid="6402152600878093134">"대기"</string>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index 546d82f10..4113ef32c 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Atlikta"</string>
<string name="label_send_key" msgid="2815056534433717444">"Siųsti"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Daugiau"</string>
<string name="label_pause_key" msgid="181098308428035340">"Prist."</string>
<string name="label_wait_key" msgid="6402152600878093134">"Lauk."</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrof. simb. klav."</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balso įv. neleidž."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Pasirinkti įvesties metodą"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Konfigūruoti įvesties metodus"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Įvesties kalbos"</string>
<string name="select_language" msgid="2573265881207142437">"Pasirinkite įvesties kalbas"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Kad išsaugotumėte, dar kartą palieskite"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Jei norite ištais. žodž., paliesk."</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Jei norite ištaisyti įvestus žodžius, palieskite juos tik tada, kai matomi pasiūlymai"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Klaviatūros tema"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY klaviatūra vokiečių k."</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Anglų k. (JK)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Anglų k. (JAV)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tinkamumo tyrimo režimas"</string>
</resources>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 20cd33300..e5da1dc4e 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Gatavs"</string>
<string name="label_send_key" msgid="2815056534433717444">"Sūtīt"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Vairāk"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pauze"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Gaidīt"</string>
diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml
index e80160997..63fd65596 100644
--- a/java/res/values-ms/strings.xml
+++ b/java/res/values-ms/strings.xml
@@ -63,6 +63,10 @@
<string name="label_done_key" msgid="2441578748772529288">"Selesai"</string>
<string name="label_send_key" msgid="2815056534433717444">"Hantar"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
+ <skip />
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Lagi"</string>
<string name="label_pause_key" msgid="181098308428035340">"Jeda"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Tnggu"</string>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index c45f54f32..e86582289 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Utfør"</string>
<string name="label_send_key" msgid="2815056534433717444">"Send"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mer"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pause"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Vent"</string>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index f168c2944..ebb1c062e 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Gereed"</string>
<string name="label_send_key" msgid="2815056534433717444">"Verzenden"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Meer"</string>
<string name="label_pause_key" msgid="181098308428035340">"Onderbr."</string>
<string name="label_wait_key" msgid="6402152600878093134">"Wacht"</string>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index 34cea087d..1cf14166f 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"OK"</string>
<string name="label_send_key" msgid="2815056534433717444">"Wyślij"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Więcej"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pauza"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Czekaj"</string>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index 1ac77a0d7..22c99f22b 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Feito"</string>
<string name="label_send_key" msgid="2815056534433717444">"Enviar"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mais"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Esp."</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. tecl. símbolos"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. voz desact."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Seleccionar método de entrada"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introdução"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
<string name="select_language" msgid="2573265881207142437">"Selecionar idiomas de entrada"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Toque novamente para guardar"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tocar para corrigir palavras"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Tocar nas palavras introduzidas para as corrigir, apenas quando as sugestões estiverem visíveis"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY Alemão"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (RU)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo da capacidade de utilização"</string>
</resources>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index f7417c2f8..167ae0e0c 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Feito"</string>
<string name="label_send_key" msgid="2815056534433717444">"Enviar"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mais"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Esp."</string>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index 0bc5b2901..359dc7a12 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -89,6 +89,10 @@
<string name="label_send_key" msgid="2815056534433717444">"Trametter"</string>
<!-- no translation found for label_to_alpha_key (4793983863798817523) -->
<skip />
+ <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
+ <skip />
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<!-- no translation found for label_more_key (3760239494604948502) -->
<skip />
<!-- no translation found for label_pause_key (181098308428035340) -->
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index a459a59d6..c317cfd1d 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Terminat"</string>
<string name="label_send_key" msgid="2815056534433717444">"Trimiteţi"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mai multe"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pauză"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Aşt."</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micr. pe tast. simb."</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Intr. vocală dezact."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Selectaţi metoda de introducere a textului"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Configuraţi metodele de intrare"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Selectaţi limba"</string>
<string name="select_language" msgid="2573265881207142437">"Selectaţi limbile de intrare"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Atingeţi din nou pentru a salva"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Atingeţi pentru a corecta cuvintele"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Atingeţi cuvintele introduse pentru a le corecta, numai când pot fi văzute sugestii"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Temă pentru tastatură"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Tastatură germană QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Engleză (Marea Britanie)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Engleză (S.U.A.)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modul Studiu privind utilizarea"</string>
</resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 8ed8132e5..68d1ee28e 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
<string name="label_send_key" msgid="2815056534433717444">"Отправить"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"АБВ"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Ещё"</string>
<string name="label_pause_key" msgid="181098308428035340">"Приостановить"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Подождите"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Значок на клавиатуре символов"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голосовой ввод откл."</string>
<string name="selectInputMethod" msgid="315076553378705821">"Выбрать способ ввода"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Настройка раскладки клавиатуры"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Языки ввода"</string>
<string name="select_language" msgid="2573265881207142437">"Выберите языки ввода"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Нажмите еще раз, чтобы сохранить"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Исправление нажатием"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Нажмите на слово, чтобы исправить его (при наличии подсказок)"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Тема клавиатуры"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Немецкая клавиатура QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"английский (Великобритания)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"английский (США)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим проверки удобства использования"</string>
</resources>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index 6a9a20637..a8c57008f 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Hotovo"</string>
<string name="label_send_key" msgid="2815056534433717444">"Odoslať"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Viac"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pozastaviť"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Čakajte"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofón na klávesnici so symbolmi"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup je zakázaný"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Výber metódy vstupu"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Konfigurovať metódy vstupu"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jazyky vstupu"</string>
<string name="select_language" msgid="2573265881207142437">"Vybrať jazyky vstupu"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Ďalším dotykom slovo uložíte"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Dotykom opravíte slová"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Dotykom zadaných slov tieto slová opravíte, musia však byť viditeľné návrhy"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Motív klávesnice"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Nemecká klávesnica QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Anglická klávesnica (UK)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Anglická klávesnica (US)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim štúdie použiteľnosti"</string>
</resources>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index 75520462d..19bf04c8a 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Dokončano"</string>
<string name="label_send_key" msgid="2815056534433717444">"Pošlji"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Več"</string>
<string name="label_pause_key" msgid="181098308428035340">"Premor"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Čakaj"</string>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index 8243f0c85..46daea90e 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
<string name="label_send_key" msgid="2815056534433717444">"Пошаљи"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Још"</string>
<string name="label_pause_key" msgid="181098308428035340">"Паузирај"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Сачекајте"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Микрофон на тастатури са симболима"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Гласовни унос је онемогућен"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Изаберите метод уноса"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Конфигурисање метода уноса"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Језици за унос"</string>
<string name="select_language" msgid="2573265881207142437">"Изабери језике за унос"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Поново додирните да бисте сачували"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Додирните да бисте исправили речи"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Додирните унете речи да бисте их исправили само када су предлози видљиви"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Тема тастатуре"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY тастатура за немачки"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"енглески (УК)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"енглески (САД)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за студију могућности коришћења"</string>
</resources>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 10647e499..2c8bc7318 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Färdig"</string>
<string name="label_send_key" msgid="2815056534433717444">"Skicka"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Mer"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pausa"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Vänta"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mick bland symboler"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Röstinmatning inaktiv"</string>
<string name="selectInputMethod" msgid="315076553378705821">"Välj inmatningsmetod"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"Konfigurera inmatningsmetoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inmatningsspråk"</string>
<string name="select_language" msgid="2573265881207142437">"Välj inmatningsspråk"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tryck igen för att spara"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tryck om du vill korrigera ord"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Tryck på skrivna ord om du vill korrigera dem, endast när förslag visas"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Tangentbordstema"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Tyskt QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Engelskt (brittiskt)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Engelskt (amerikanskt)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Läge för studie av användbarhet"</string>
</resources>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 369534fa7..a916535b0 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -79,6 +79,10 @@
<string name="label_done_key" msgid="2441578748772529288">"Kwisha"</string>
<string name="label_send_key" msgid="2815056534433717444">"Tuma"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
+ <skip />
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Zaidi"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pumzisha"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Subiri"</string>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index de7d74e4c..780ff024a 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"เสร็จสิ้น"</string>
<string name="label_send_key" msgid="2815056534433717444">"ส่ง"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"เพิ่มเติม"</string>
<string name="label_pause_key" msgid="181098308428035340">"หยุดชั่วคราว"</string>
<string name="label_wait_key" msgid="6402152600878093134">"รอ"</string>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index 482afb84c..b0806bed3 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Tapos na"</string>
<string name="label_send_key" msgid="2815056534433717444">"Ipadala"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Higit pa"</string>
<string name="label_pause_key" msgid="181098308428035340">"Pause"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Intay"</string>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 381a3a57e..103f01618 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Bitti"</string>
<string name="label_send_key" msgid="2815056534433717444">"Gönder"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Diğer"</string>
<string name="label_pause_key" msgid="181098308428035340">"Durkl"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Bekle"</string>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index 498e4f472..cca56b842 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
<string name="label_send_key" msgid="2815056534433717444">"Надісл."</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"Алфавіт"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Більше"</string>
<string name="label_pause_key" msgid="181098308428035340">"Пауза"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Чек."</string>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 50211d79e..e7c684d2d 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"Xong"</string>
<string name="label_send_key" msgid="2815056534433717444">"Gửi"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Khác"</string>
<string name="label_pause_key" msgid="181098308428035340">"Tạm dừng"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Đợi"</string>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index 61bfa7eeb..189c17420 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"完成"</string>
<string name="label_send_key" msgid="2815056534433717444">"发送"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"更多"</string>
<string name="label_pause_key" msgid="181098308428035340">"暂停"</string>
<string name="label_wait_key" msgid="6402152600878093134">"等待"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符号键盘上的麦克风"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"语音输入功能已停用"</string>
<string name="selectInputMethod" msgid="315076553378705821">"选择输入法"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"配置输入法"</string>
<string name="language_selection_title" msgid="1651299598555326750">"输入语言"</string>
<string name="select_language" msgid="2573265881207142437">"选择输入语言"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← 再次触摸即可保存"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"触摸以更正字词"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"仅在系统显示建议后,才触摸输入的字词进行更正"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"键盘主题"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"德语 QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"英语(英式)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"英语(美式)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"可用性研究模式"</string>
</resources>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 692118837..aa65cdd82 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -63,6 +63,9 @@
<string name="label_done_key" msgid="2441578748772529288">"完成"</string>
<string name="label_send_key" msgid="2815056534433717444">"傳送"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"更多"</string>
<string name="label_pause_key" msgid="181098308428035340">"暫停"</string>
<string name="label_wait_key" msgid="6402152600878093134">"等候"</string>
@@ -130,8 +133,7 @@
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符號鍵盤上的麥克風"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"語音輸入已停用"</string>
<string name="selectInputMethod" msgid="315076553378705821">"選取輸入法"</string>
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
+ <string name="configure_input_method" msgid="373356270290742459">"設定輸入法"</string>
<string name="language_selection_title" msgid="1651299598555326750">"輸入語言"</string>
<string name="select_language" msgid="2573265881207142437">"選取輸入語言"</string>
<string name="hint_add_to_dictionary" msgid="9006292060636342317">"← 再次輕觸即可儲存"</string>
@@ -141,11 +143,8 @@
<string name="prefs_enable_recorrection" msgid="4588408906649533582">"輕觸此處可修正字詞"</string>
<string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"輕觸輸入的字詞即可加以修正 (出現建議時才適用)"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"鍵盤主題"</string>
- <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"德文 QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"英文 (英式)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"英文 (美式)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"使用性研究模式"</string>
</resources>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index b8d9106cf..4929c12ec 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -79,6 +79,10 @@
<string name="label_done_key" msgid="2441578748772529288">"Kwenziwe"</string>
<string name="label_send_key" msgid="2815056534433717444">"Thumela"</string>
<string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
+ <skip />
+ <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
+ <skip />
<string name="label_more_key" msgid="3760239494604948502">"Okungaphezulu"</string>
<string name="label_pause_key" msgid="181098308428035340">"Misa okwesikhashana"</string>
<string name="label_wait_key" msgid="6402152600878093134">"Linda"</string>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index c3a0f8b81..1ebd2cee1 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -149,7 +149,6 @@
<item name="verticalGap">@fraction/key_bottom_gap_ics</item>
</style>
<style name="LatinKeyboard.IceCreamSandwich" parent="LatinKeyboard">
- <item name="autoCorrectionSpacebarLedEnabled">false</item>
<item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
</style>
<style name="KeyboardView.IceCreamSandwich" parent="KeyboardView">
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index 07dae168f..5e73d6300 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.keyboard;
import com.android.inputmethod.latin.Utils;
+import com.android.inputmethod.latin.spellcheck.SpellCheckerProximityInfo;
import java.util.Arrays;
import java.util.Collections;
@@ -59,6 +60,15 @@ public class ProximityInfo {
return new ProximityInfo(1, 1, 1, 1, 1, Collections.<Key>emptyList());
}
+ public static ProximityInfo getSpellCheckerProximityInfo() {
+ final ProximityInfo spellCheckerProximityInfo = getDummyProximityInfo();
+ spellCheckerProximityInfo.mNativeProximityInfo =
+ spellCheckerProximityInfo.setProximityInfoNative(
+ SpellCheckerProximityInfo.ROW_SIZE,
+ 480, 300, 10, 3, SpellCheckerProximityInfo.PROXIMITY);
+ return spellCheckerProximityInfo;
+ }
+
private int mNativeProximityInfo;
static {
Utils.loadNativeLibrary();
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 1c7599442..b8850680b 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -23,7 +23,6 @@ import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
import android.text.TextUtils;
-import android.util.Log;
import java.io.File;
import java.io.FileInputStream;
@@ -53,38 +52,55 @@ public class BinaryDictionaryFileDumper {
}
/**
- * Generates a file name that matches the locale passed as an argument.
- * The file name is basically the result of the .toString() method, except we replace
- * any @File.separator with an underscore to avoid generating a file name that may not
- * be created.
- * @param locale the locale for which to get the file name
- * @param context the context to use for getting the directory
- * @return the name of the file to be created
+ * Escapes a string for any characters that may be suspicious for a file or directory name.
+ *
+ * Concretely this does a sort of URL-encoding except it will encode everything that's not
+ * alphanumeric or underscore. (true URL-encoding leaves alone characters like '*', which
+ * we cannot allow here)
*/
- private static String getCacheFileNameForLocale(Locale locale, Context context) {
- // The following assumes two things :
- // 1. That File.separator is not the same character as "_"
- // I don't think any android system will ever use "_" as a path separator
- // 2. That no two locales differ by only a File.separator versus a "_"
- // Since "_" can't be part of locale components this should be safe.
- // Examples:
- // en -> en
- // en_US_POSIX -> en_US_POSIX
- // en__foo/bar -> en__foo_bar
- final String[] separator = { File.separator };
- final String[] empty = { "_" };
- final CharSequence basename = TextUtils.replace(locale.toString(), separator, empty);
- return context.getFilesDir() + File.separator + basename;
+ // TODO: create a unit test for this method
+ private static String replaceFileNameDangerousCharacters(String name) {
+ // This assumes '%' is fully available as a non-separator, normal
+ // character in a file name. This is probably true for all file systems.
+ final StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < name.length(); ++i) {
+ final int codePoint = name.codePointAt(i);
+ if (Character.isLetterOrDigit(codePoint) || '_' == codePoint) {
+ sb.appendCodePoint(codePoint);
+ } else {
+ sb.append('%');
+ sb.append(Integer.toHexString(codePoint));
+ }
+ }
+ return sb.toString();
}
/**
- * Return for a given locale the provider URI to query to get the dictionary.
+ * Find out the cache directory associated with a specific locale.
*/
- // TODO: remove this
- public static Uri getProviderUri(Locale locale) {
- return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
- .authority(BinaryDictionary.DICTIONARY_PACK_AUTHORITY).appendPath(
- locale.toString()).build();
+ private static String getCacheDirectoryForLocale(Locale locale, Context context) {
+ final String directoryName = replaceFileNameDangerousCharacters(locale.toString());
+ return context.getFilesDir() + File.separator + directoryName;
+ }
+
+ /**
+ * Generates a file name for the id and locale passed as an argument.
+ *
+ * In the current implementation the file name returned will always be unique for
+ * any id/locale pair, but please do not expect that the id can be the same for
+ * different dictionaries with different locales. An id should be unique for any
+ * dictionary.
+ * The file name is pretty much an URL-encoded version of the id inside a directory
+ * named like the locale, except it will also escape characters that look dangerous
+ * to some file systems.
+ * @param id the id of the dictionary for which to get a file name
+ * @param locale the locale for which to get the file name
+ * @param context the context to use for getting the directory
+ * @return the name of the file to be created
+ */
+ private static String getCacheFileName(String id, Locale locale, Context context) {
+ final String fileName = replaceFileNameDangerousCharacters(id);
+ return getCacheDirectoryForLocale(locale, context) + File.separator + fileName;
}
/**
@@ -102,7 +118,7 @@ public class BinaryDictionaryFileDumper {
*/
private static List<String> getDictIdList(final Locale locale, final Context context) {
final ContentResolver resolver = context.getContentResolver();
- final Uri dictionaryPackUri = getProviderUri(locale);
+ final Uri dictionaryPackUri = getProviderUri(locale.toString());
final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null);
if (null == c) return Collections.<String>emptyList();
@@ -137,10 +153,6 @@ public class BinaryDictionaryFileDumper {
*/
public static List<AssetFileAddress> getDictSetFromContentProvider(final Locale locale,
final Context context) throws FileNotFoundException, IOException {
- // TODO: check whether the dictionary is the same or not and if it is, return the cached
- // file.
- // TODO: This should be able to read a number of files from the dictionary pack, copy
- // them all and return them.
final ContentResolver resolver = context.getContentResolver();
final List<String> idList = getDictIdList(locale, context);
final List<AssetFileAddress> fileAddressList = new ArrayList<AssetFileAddress>();
@@ -149,8 +161,8 @@ public class BinaryDictionaryFileDumper {
final AssetFileDescriptor afd =
resolver.openAssetFileDescriptor(dictionaryPackUri, "r");
if (null == afd) continue;
- final String fileName =
- copyFileTo(afd.createInputStream(), getCacheFileNameForLocale(locale, context));
+ final String fileName = copyFileTo(afd.createInputStream(),
+ getCacheFileName(id, locale, context));
afd.close();
fileAddressList.add(AssetFileAddress.makeFromFileName(fileName));
}
@@ -158,18 +170,6 @@ public class BinaryDictionaryFileDumper {
}
/**
- * Accepts a file as dictionary data for some locale and returns the name of a file.
- *
- * This will make the data in the input file the cached dictionary for this locale, overwriting
- * any previous cached data.
- */
- public static String getDictionaryFileFromFile(String fileName, Locale locale,
- Context context) throws FileNotFoundException, IOException {
- return copyFileTo(new FileInputStream(fileName), getCacheFileNameForLocale(locale,
- context));
- }
-
- /**
* Accepts a resource number as dictionary data for some locale and returns the name of a file.
*
* This will make the resource the cached dictionary for this locale, overwriting any previous
@@ -181,7 +181,7 @@ public class BinaryDictionaryFileDumper {
final Locale savedLocale = Utils.setSystemLocale(res, locale);
final InputStream stream = res.openRawResource(resource);
Utils.setSystemLocale(res, savedLocale);
- return copyFileTo(stream, getCacheFileNameForLocale(locale, context));
+ return copyFileTo(stream, getCacheFileName(Integer.toString(resource), locale, context));
}
/**
diff --git a/java/src/com/android/inputmethod/latin/ContactsDictionary.java b/java/src/com/android/inputmethod/latin/ContactsDictionary.java
index 66a041508..8a7dfb839 100644
--- a/java/src/com/android/inputmethod/latin/ContactsDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsDictionary.java
@@ -49,20 +49,28 @@ public class ContactsDictionary extends ExpandableDictionary {
private long mLastLoadedContacts;
- public ContactsDictionary(Context context, int dicTypeId) {
+ public ContactsDictionary(final Context context, final int dicTypeId) {
super(context, dicTypeId);
+ registerObserver(context);
+ loadDictionary();
+ }
+
+ private synchronized void registerObserver(final Context context) {
// Perform a managed query. The Activity will handle closing and requerying the cursor
// when needed.
+ if (mObserver != null) return;
ContentResolver cres = context.getContentResolver();
-
cres.registerContentObserver(
- Contacts.CONTENT_URI, true,mObserver = new ContentObserver(null) {
+ Contacts.CONTENT_URI, true, mObserver = new ContentObserver(null) {
@Override
public void onChange(boolean self) {
setRequiresReload(true);
}
});
- loadDictionary();
+ }
+
+ public void reopen(final Context context) {
+ registerObserver(context);
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index a58815892..d74babf4f 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -509,7 +509,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (null == mPrefs) mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
if (null == mSubtypeSwitcher) mSubtypeSwitcher = SubtypeSwitcher.getInstance();
mSettingsValues = new Settings.Values(mPrefs, this, mSubtypeSwitcher.getInputLocaleStr());
- resetContactsDictionary();
+ resetContactsDictionary(null == mSuggest ? null : mSuggest.getContactsDictionary());
}
private void initSuggest() {
@@ -518,8 +518,12 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
final Resources res = mResources;
final Locale savedLocale = Utils.setSystemLocale(res, keyboardLocale);
+ final ContactsDictionary oldContactsDictionary;
if (mSuggest != null) {
+ oldContactsDictionary = mSuggest.getContactsDictionary();
mSuggest.close();
+ } else {
+ oldContactsDictionary = null;
}
int mainDicResId = Utils.getMainDictionaryResourceId(res);
@@ -533,7 +537,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mSuggest.setUserDictionary(mUserDictionary);
mIsUserDictionaryAvaliable = mUserDictionary.isEnabled();
- resetContactsDictionary();
+ resetContactsDictionary(oldContactsDictionary);
mUserUnigramDictionary
= new UserUnigramDictionary(this, this, localeStr, Suggest.DIC_USER_UNIGRAM);
@@ -548,11 +552,36 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
Utils.setSystemLocale(res, savedLocale);
}
- private void resetContactsDictionary() {
- if (null == mSuggest) return;
- ContactsDictionary contactsDictionary = mSettingsValues.mUseContactsDict
- ? new ContactsDictionary(this, Suggest.DIC_CONTACTS) : null;
- mSuggest.setContactsDictionary(contactsDictionary);
+ /**
+ * Resets the contacts dictionary in mSuggest according to the user settings.
+ *
+ * This method takes an optional contacts dictionary to use. Since the contacts dictionary
+ * does not depend on the locale, it can be reused across different instances of Suggest.
+ * The dictionary will also be opened or closed as necessary depending on the settings.
+ *
+ * @param oldContactsDictionary an optional dictionary to use, or null
+ */
+ private void resetContactsDictionary(final ContactsDictionary oldContactsDictionary) {
+ final boolean shouldSetDictionary = (null != mSuggest && mSettingsValues.mUseContactsDict);
+
+ final ContactsDictionary dictionaryToUse;
+ if (!shouldSetDictionary) {
+ // Make sure the dictionary is closed. If it is already closed, this is a no-op,
+ // so it's safe to call it anyways.
+ if (null != oldContactsDictionary) oldContactsDictionary.close();
+ dictionaryToUse = null;
+ } else if (null != oldContactsDictionary) {
+ // Make sure the old contacts dictionary is opened. If it is already open, this is a
+ // no-op, so it's safe to call it anyways.
+ oldContactsDictionary.reopen(this);
+ dictionaryToUse = oldContactsDictionary;
+ } else {
+ dictionaryToUse = new ContactsDictionary(this, Suggest.DIC_CONTACTS);
+ }
+
+ if (null != mSuggest) {
+ mSuggest.setContactsDictionary(dictionaryToUse);
+ }
}
/* package private */ void resetSuggestMainDict() {
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 36a29e896..a2d66f398 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -88,6 +88,7 @@ public class Suggest implements Dictionary.WordCallback {
private AutoCorrection mAutoCorrection;
private Dictionary mMainDict;
+ private ContactsDictionary mContactsDict;
private WhitelistDictionary mWhiteListDictionary;
private final Map<String, Dictionary> mUnigramDictionaries = new HashMap<String, Dictionary>();
private final Map<String, Dictionary> mBigramDictionaries = new HashMap<String, Dictionary>();
@@ -197,6 +198,10 @@ public class Suggest implements Dictionary.WordCallback {
return mMainDict != null;
}
+ public ContactsDictionary getContactsDictionary() {
+ return mContactsDict;
+ }
+
public Map<String, Dictionary> getUnigramDictionaries() {
return mUnigramDictionaries;
}
@@ -218,7 +223,8 @@ public class Suggest implements Dictionary.WordCallback {
* the contacts dictionary by passing null to this method. In this case no contacts dictionary
* won't be used.
*/
- public void setContactsDictionary(Dictionary contactsDictionary) {
+ public void setContactsDictionary(ContactsDictionary contactsDictionary) {
+ mContactsDict = contactsDictionary;
addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary);
addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary);
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index 7c92bc82a..44e999572 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -19,7 +19,6 @@ package com.android.inputmethod.latin.spellcheck;
import android.content.res.Resources;
import android.service.textservice.SpellCheckerService;
import android.service.textservice.SpellCheckerService.Session;
-import android.util.Log;
import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;
@@ -33,6 +32,7 @@ import com.android.inputmethod.latin.DictionaryFactory;
import com.android.inputmethod.latin.Utils;
import com.android.inputmethod.latin.WordComposer;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.LinkedList;
@@ -48,7 +48,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
private static final boolean DBG = true;
private final static String[] emptyArray = new String[0];
- private final ProximityInfo mProximityInfo = ProximityInfo.getDummyProximityInfo();
+ private final ProximityInfo mProximityInfo = ProximityInfo.getSpellCheckerProximityInfo();
private final Map<String, Dictionary> mDictionaries =
Collections.synchronizedMap(new TreeMap<String, Dictionary>());
@@ -141,8 +141,16 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
final WordComposer composer = new WordComposer();
final int length = text.length();
for (int i = 0; i < length; ++i) {
- int character = text.codePointAt(i);
- composer.add(character, new int[] { character },
+ final int character = text.codePointAt(i);
+ final int proximityIndex = SpellCheckerProximityInfo.getIndexOf(character);
+ final int[] proximities;
+ if (-1 == proximityIndex) {
+ proximities = new int[] { character };
+ } else {
+ proximities = Arrays.copyOfRange(SpellCheckerProximityInfo.PROXIMITY,
+ proximityIndex, proximityIndex + SpellCheckerProximityInfo.ROW_SIZE);
+ }
+ composer.add(character, proximities,
WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
}
dictionary.getWords(composer, suggestionsGatherer, mProximityInfo);
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerProximityInfo.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerProximityInfo.java
new file mode 100644
index 000000000..abcf7e52a
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerProximityInfo.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin.spellcheck;
+
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.ProximityInfo;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+public class SpellCheckerProximityInfo {
+ final private static int NUL = KeyDetector.NOT_A_CODE;
+
+ // This must be the same as MAX_PROXIMITY_CHARS_SIZE else it will not work inside
+ // native code - this value is passed at creation of the binary object and reused
+ // as the size of the passed array afterwards so they can't be different.
+ final public static int ROW_SIZE = ProximityInfo.MAX_PROXIMITY_CHARS_SIZE;
+
+ // This is a map from the code point to the index in the PROXIMITY array.
+ // At the time the native code to read the binary dictionary needs the proximity info be passed
+ // as a flat array spaced by MAX_PROXIMITY_CHARS_SIZE columns, one for each input character.
+ // Since we need to build such an array, we want to be able to search in our big proximity data
+ // quickly by character, and a map is probably the best way to do this.
+ final private static TreeMap<Integer, Integer> INDICES = new TreeMap<Integer, Integer>();
+
+ // The proximity here is the union of
+ // - the proximity for a QWERTY keyboard.
+ // - the proximity for an AZERTY keyboard.
+ // - the proximity for a QWERTZ keyboard.
+ // ...plus, add all characters in the ('a', 'e', 'i', 'o', 'u') set to each other.
+ //
+ // The reasoning behind this construction is, almost any alphabetic text we may want
+ // to spell check has been entered with one of the keyboards above. Also, specifically
+ // to English, many spelling errors consist of the last vowel of the word being wrong
+ // because in English vowels tend to merge with each other in pronunciation.
+ final public static int[] PROXIMITY = {
+ 'q', 'w', 's', 'a', 'z', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'w', 'q', 'a', 's', 'd', 'e', 'x', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'e', 'w', 's', 'd', 'f', 'r', 'a', 'i', 'o', 'u', NUL, NUL, NUL, NUL, NUL, NUL,
+ 'r', 'e', 'd', 'f', 'g', 't', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 't', 'r', 'f', 'g', 'h', 'y', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'y', 't', 'g', 'h', 'j', 'u', 'a', 's', 'd', 'x', NUL, NUL, NUL, NUL, NUL, NUL,
+ 'u', 'y', 'h', 'j', 'k', 'i', 'a', 'e', 'o', NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'i', 'u', 'j', 'k', 'l', 'o', 'a', 'e', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'o', 'i', 'k', 'l', 'p', 'a', 'e', 'u', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'p', 'o', 'l', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+
+ 'a', 'z', 'x', 's', 'w', 'q', 'e', 'i', 'o', 'u', NUL, NUL, NUL, NUL, NUL, NUL,
+ 's', 'q', 'a', 'z', 'x', 'c', 'd', 'e', 'w', NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'd', 'w', 's', 'x', 'c', 'v', 'f', 'r', 'e', 'w', NUL, NUL, NUL, NUL, NUL, NUL,
+ 'f', 'e', 'd', 'c', 'v', 'b', 'g', 't', 'r', NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'g', 'r', 'f', 'v', 'b', 'n', 'h', 'y', 't', NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'h', 't', 'g', 'b', 'n', 'm', 'j', 'u', 'y', NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'j', 'y', 'h', 'n', 'm', 'k', 'i', 'u', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'k', 'u', 'j', 'm', 'l', 'o', 'i', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'l', 'i', 'k', 'p', 'o', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+
+ 'z', 'a', 's', 'd', 'x', 't', 'g', 'h', 'j', 'u', 'q', 'e', NUL, NUL, NUL, NUL,
+ 'x', 'z', 'a', 's', 'd', 'c', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'c', 'x', 's', 'd', 'f', 'v', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'v', 'c', 'd', 'f', 'g', 'b', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'b', 'v', 'f', 'g', 'h', 'n', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'n', 'b', 'g', 'h', 'j', 'm', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ 'm', 'n', 'h', 'j', 'k', 'l', 'o', 'p', NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL, NUL,
+ };
+ static {
+ for (int i = 0; i < PROXIMITY.length; i += ROW_SIZE) {
+ if (NUL != PROXIMITY[i]) INDICES.put(PROXIMITY[i], i);
+ }
+ }
+ public static int getIndexOf(int characterCode) {
+ final Integer result = INDICES.get(characterCode);
+ if (null == result) return -1;
+ return result;
+ }
+}