diff options
104 files changed, 1148 insertions, 350 deletions
diff --git a/java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java b/java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java index c0a599c6e..60d420fc3 100644 --- a/java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java +++ b/java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java @@ -63,4 +63,13 @@ public class AccountStateChangedListener { */ public static void forceSync(@Nullable String account) { } + + /** + * Forces an immediate deletion of user's data. + * This should only be used for debugging purposes. + * + * @param account the account to use for sync. + */ + public static void forceDelete(@Nullable String account) { + } } diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml index f8be8f1d3..cbee42a08 100644 --- a/java/res/values-af/strings.xml +++ b/java/res/values-af/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Gevorderd"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Aktiveer verdeelde sleutelbord"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skakel oor na die ander invoermetodes"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Taal-wisselsleutel dek ook ander invoermetodes"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Taal-wisselsleutel"</string> diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml index 9beccdf18..8bc90f0d0 100644 --- a/java/res/values-am/strings.xml +++ b/java/res/values-am/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"የላቀ"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"ገፅታ"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"የተከፈለ ቁልፍ ሰሌዳ አንቃ"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ወደ ሌሎች የግቤት ስልቶች ቀይር"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"የቋንቋ መቀየሪያ ቁልፍ ሌሎች የግቤት ስልቶችንም ይሸፍናል"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"የቋንቋ መቀየሪያ ቁልፍ"</string> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index da414a66d..ec6b8a543 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"الإعدادات المتقدمة"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"المظهر"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"هل تريد تمكين لوحة المفاتيح المقسمة"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"لحذف بياناتك التي تمت مزامنتها من Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"سيتم حذف البيانات التي تمت مزامنتها. هل تريد ذلك بالتأكيد؟"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"حذف"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"إلغاء"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"التبديل إلى أسلوب إدخال آخر"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"يغطي مفتاح تبديل اللغات أساليب الإدخال الأخرى أيضًا"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"مفتاح تبديل اللغة"</string> diff --git a/java/res/values-az-rAZ/strings.xml b/java/res/values-az-rAZ/strings.xml index b1a192ce5..d88d9baea 100644 --- a/java/res/values-az-rAZ/strings.xml +++ b/java/res/values-az-rAZ/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Qabaqcıl"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Klaviaturanı ayırmağa icazə verin"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Digər daxiletmə metodlarına keçin"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Dil keçid düyməsi başqa daxiletmə metodlarını da əhatə edir"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Dil keçidi düyməsi"</string> diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml index 5d7e6b4b1..de56050fd 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Разширени"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тема"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Активиране на разделената клавиатура"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Други методи за въвеждане"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Клавишът за превкл. на езика обхваща и други методи за въвеждане"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Клавиш за превкл. на езика"</string> diff --git a/java/res/values-bn-rBD/strings.xml b/java/res/values-bn-rBD/strings.xml index f47e27135..ff08769f7 100644 --- a/java/res/values-bn-rBD/strings.xml +++ b/java/res/values-bn-rBD/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"উন্নত"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"থিম"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"বিভক্ত কীবোর্ড সক্ষম করুন"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"অন্য ইনপুট পদ্ধতিতে স্যুইচ করুন"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ভাষা স্যুইচ কীতে অন্যান্য ইনপুট পদ্ধতি পাওয়া যায়"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"ভাষা স্যুইচ কী"</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index 3f0e447f9..e0c79fc91 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avançat"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Activa el teclat partit"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Altres mètodes d\'introducció"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La tecla de canvi d\'idioma serveix també per a altres mètodes d\'entrada"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de canvi d\'idioma"</string> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index 4fd0e71e1..d30f8e824 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Rozšířená nastavení"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Motiv"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Aktivovat rozdělenou klávesnici"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Přepínat metody zadávání"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Klávesa pro přepínání jazyka ovládá i další metody zadávání"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Klávesa přepínání jazyka"</string> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index 39c51e9ea..6f2adf05e 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avanceret"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Aktivér delt tastatur"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skift inputmetode"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasten til sprogskift gælder også for andre inputmetoder"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Knap til sprogskift"</string> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 1ced6d099..86e504e13 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Erweitert"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Design"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Geteilte Tastatur aktivieren"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Eingabemethoden wechseln"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Sprachwechseltaste umfasst auch andere Eingabemethoden."</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Sprachwechsel"</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index d9c4a40f0..963c0c8c2 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Σύνθετες"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Θέμα"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ενεργοποίηση διαχωρισμού πληκτρολογίου"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Άλλη μέθοδος εισόδου"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Το κλειδί αλλαγής γλώσσας καλύπτει και άλλες μεθόδους εισόδου"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Πλήκτρο εναλλαγής γλώσσας"</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index 1778cded3..0adcc085a 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Advanced"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Theme"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Enable split keyboard"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Deletes your synced data from Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"Your synced data will be deleted. Are you sure?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"Delete"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"Cancel"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Language switch key"</string> diff --git a/java/res/values-en-rIN/strings.xml b/java/res/values-en-rIN/strings.xml index 1778cded3..0adcc085a 100644 --- a/java/res/values-en-rIN/strings.xml +++ b/java/res/values-en-rIN/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Advanced"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Theme"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Enable split keyboard"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Deletes your synced data from Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"Your synced data will be deleted. Are you sure?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"Delete"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"Cancel"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Language switch key"</string> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index 7b9e3ba66..03846e77d 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avanzada"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Habilitar teclado dividido"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Otros métodos de entrada"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La tecla de cambio de idioma abarca otros métodos de entrada."</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de selección de idioma"</string> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index a49ae31e8..d4c3ade11 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Opciones avanzadas"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Habilitar teclado dividido"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Otros métodos de introducción"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La tecla de cambio de idioma sirve también para otros métodos"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla para cambiar de idioma"</string> diff --git a/java/res/values-et-rEE/strings.xml b/java/res/values-et-rEE/strings.xml index 440331e84..7606c1f1d 100644 --- a/java/res/values-et-rEE/strings.xml +++ b/java/res/values-et-rEE/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Täpsem"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Teema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Luba kaheks jaotatud klaviatuur"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Vaheta sisestusmeetodit"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Keelevahetuse võti hõlmab ka muid sisestusmeetodeid"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Keelevahetuse nupp"</string> diff --git a/java/res/values-eu-rES/strings.xml b/java/res/values-eu-rES/strings.xml index 23d15930c..d510f6ac5 100644 --- a/java/res/values-eu-rES/strings.xml +++ b/java/res/values-eu-rES/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Ezarpen aurreratuak"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Gaia"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Gaitu teklatu banatua"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Aldatu idazketa-metodoa"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Hizkuntza aldatzeko teklak beste idazketa-metodoetarako ere balio du"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Hizkuntza aldatzeko tekla"</string> diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml index 16a6f8767..0feb10f80 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"پیشرفته"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"طرحزمینه"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"فعال کردن دونیمکردن صفحهکلید"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"اطلاعات همگامسازی شده شما را از Google حذف میکند"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"اطلاعات همگامسازی شده شما حذف میشوند. مطمئن هستید؟"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"حذف"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"لغو"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"تغییر به دیگر روشهای ورودی"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"کلید تغییر زبان، سایر ورودیهای زبان را نیز پوشش میدهد"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"کلید تغییر زبان"</string> diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml index 0308d18d7..1d4ac6c74 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Lisäasetukset"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Teema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ota jaettu näppäimistö käyttöön"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Käytä toista syöttötapaa"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kielenvaihtonäppäin kattaa myös muut syöttötavat"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Kielenvaihtonäppäin"</string> @@ -170,9 +178,9 @@ <string name="install_dict" msgid="180852772562189365">"Asenna"</string> <string name="cancel_download_dict" msgid="7843340278507019303">"Peruuta"</string> <string name="delete_dict" msgid="756853268088330054">"Poista"</string> - <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Laitteesi käyttökielelle on saatavilla sanakirja.<br/> Suosittelemme <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-sanakirjan <b>lataamista</b>, sillä se helpottaa laitteella kirjoittamista.<br/> <br/> Lataus kestää useimmiten muutaman minuutin 3G-yhteydellä. Latauksesta saatetaan periä maksu, ellei käytössäsi ole <b>rajoittamatonta tiedonsiirtopakettia</b>.<br/> Jos et ole varma tiedonsiirtosopimuksesi tyypistä, etsi käyttöösi wifi-yhteys, niin lataus alkaa automaattisesti.<br/> <br/> Vinkki: voit ladata ja poistaa sanakirjoja mobiililaitteesi <b>Asetukset</b>-valikon <b>Kieli ja syöttötapa</b> -osiossa."</string> + <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Laitteesi käyttökielelle on saatavilla sanakirja.<br/> Suosittelemme <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-sanakirjan <b>lataamista</b>, sillä se helpottaa laitteella kirjoittamista.<br/> <br/> Lataus kestää useimmiten muutaman minuutin 3G-yhteydellä. Latauksesta saatetaan periä maksu, ellei käytössäsi ole <b>rajoittamatonta tiedonsiirtopakettia</b>.<br/> Jos et ole varma tiedonsiirtosopimuksesi tyypistä, etsi käyttöösi Wi-Fi-yhteys, niin lataus alkaa automaattisesti.<br/> <br/> Vinkki: voit ladata ja poistaa sanakirjoja mobiililaitteesi <b>Asetukset</b>-valikon <b>Kieli ja syöttötapa</b> -osiossa."</string> <string name="download_over_metered" msgid="1643065851159409546">"Lataa nyt (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> Mt)"</string> - <string name="do_not_download_over_metered" msgid="2176209579313941583">"Lataa wifi-yhteydellä"</string> + <string name="do_not_download_over_metered" msgid="2176209579313941583">"Lataa Wi-Fi-yhteydellä"</string> <string name="dict_available_notification_title" msgid="4583842811218581658">"Sanakirja on saatavilla kielelle <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string> <string name="dict_available_notification_description" msgid="1075194169443163487">"Paina tätä, jos haluat tarkastella kohdetta ja ladata sen"</string> <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Ladataan: kielen <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ehdotukset ovat pian käytettävissä."</string> diff --git a/java/res/values-fr-rCA/strings.xml b/java/res/values-fr-rCA/strings.xml index 6730a7982..4cb0523b2 100644 --- a/java/res/values-fr-rCA/strings.xml +++ b/java/res/values-fr-rCA/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avancés"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Thème"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Activer le clavier en deux parties"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Autres modes de saisie"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La touche de sélection de langue couvre d\'autres modes de saisie"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Touche de sélection de langue"</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index 3349f4a6a..404470aff 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Paramètres avancés"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Thème"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Activer le clavier en deux parties"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Autres modes de saisie"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La touche de sélection de langue couvre d\'autres modes de saisie."</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Touche de sélection de langue"</string> diff --git a/java/res/values-gl-rES/strings.xml b/java/res/values-gl-rES/strings.xml index d72bcb8b1..e9b69697a 100644 --- a/java/res/values-gl-rES/strings.xml +++ b/java/res/values-gl-rES/strings.xml @@ -30,11 +30,19 @@ <string name="settings_screen_accounts" msgid="7570397912370223287">"Contas e privacidade"</string> <string name="settings_screen_appearance" msgid="9153102634339912029">"Aparencia e deseños"</string> <string name="settings_screen_multilingual" msgid="1391301621464509659">"Opcións multilingües"</string> - <string name="settings_screen_gesture" msgid="8826372746901183556">"Escritura mediante xestos"</string> + <string name="settings_screen_gesture" msgid="8826372746901183556">"Escritura xestual"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Corrección de texto"</string> - <string name="settings_screen_advanced" msgid="7472408607625972994">"Avanzada"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"Opcións avanzadas"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Activar teclado dividido"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Outros métodos de entrada"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla de cambio de idioma inclúe outros métodos de entrada"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de cambio de idioma"</string> diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml index 239b56f8e..3d0edf423 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"अतिरिक्त सेटिंग"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"थीम"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"स्प्लिट कीबोर्ड सक्षम करें"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अन्य इनपुट पद्धतियों पर जाएं"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"भाषा स्विच कुंजी में अन्य इनपुट पद्धतियां भी शामिल हैं"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"भाषा स्विच कुंजी"</string> @@ -94,12 +102,12 @@ <string name="subtype_en_GB" msgid="88170601942311355">"अंग्रेज़ी (यूके)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"अंग्रेज़ी (यूएस)"</string> <string name="subtype_es_US" msgid="5583145191430180200">"स्पेनिश (यूएस)"</string> - <string name="subtype_hi_ZZ" msgid="8860448146262798623">"Hinglish"</string> + <string name="subtype_hi_ZZ" msgid="8860448146262798623">"हिंग्लिश"</string> <string name="subtype_sr_ZZ" msgid="9059219552986034343">"सर्बियाई (लैटिन)"</string> <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"अंग्रेज़ी (यूके) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"अंग्रेज़ी (यूएस) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> <string name="subtype_with_layout_es_US" msgid="510930471167541338">"स्पेनिश (यूएस) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> - <string name="subtype_with_layout_hi_ZZ" msgid="6827402953860547044">"Hinglish (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_hi_ZZ" msgid="6827402953860547044">"हिंग्लिश (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> <string name="subtype_with_layout_sr_ZZ" msgid="2859024772719772407">"सर्बियाई (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (पारंपरिक)"</string> <string name="subtype_generic_compact" msgid="3353673321203202922">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (संक्षिप्त)"</string> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index e1893714e..ce400d267 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Napredno"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Omogući razdvojenu tipkovnicu"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prebaci na druge unose"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tipka za prebacivanje jezika pokriva i druge načine unosa"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tipka za izmjenjivanje jezika"</string> diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml index 71314b0eb..e10248ec4 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Speciális"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Téma"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Megosztott billentyűzet bekapcsolása"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Váltás más beviteli módra"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A nyelvkapcsoló gomb egyéb beviteli módokat is tartalmaz"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"A nyelvkapcsoló"</string> diff --git a/java/res/values-hy-rAM/strings.xml b/java/res/values-hy-rAM/strings.xml index 8d7c5c8c1..fee35130c 100644 --- a/java/res/values-hy-rAM/strings.xml +++ b/java/res/values-hy-rAM/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Հավելյալ"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Թեմա"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Միացնել բաժանված ստեղնաշարը"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Անցնել մուտքագրման այլ եղանակների"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Լեզվի փոխարկման բանալին ընդգրկում է այլ մուտքագրման եղանակներ ևս"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Լեզվի փոխարկման ստեղն"</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index bd86f01b1..a83c64d85 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Lanjutan"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Aktifkan keyboard terpisah"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Menghapus data yang disinkronkan dari Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"Data yang disinkronkan akan dihapus. Anda yakin?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"Hapus"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"Batal"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Beralih ke metode masukan lain"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tombol beralih bahasa juga mencakup metode masukan lain"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tombol pengalih bahasa"</string> diff --git a/java/res/values-is-rIS/strings.xml b/java/res/values-is-rIS/strings.xml index 8a6927af1..6d18ffdf0 100644 --- a/java/res/values-is-rIS/strings.xml +++ b/java/res/values-is-rIS/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Ítarlegt"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Þema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Virkja skipt lyklaborð"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skipta um innsláttaraðferð"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Lykill til að skipta um mál inniheldur aðrar innsláttaraðferðir"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Lykill til að breyta tungumáli"</string> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index 2bca3b40b..1c0ffa9a6 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avanzate"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Attiva tastiera divisa"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Altri metodi immissione"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Il tasto per cambiare lingua offre altri metodi di immissione"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tasto cambio lingua"</string> diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml index c99d5123b..bb7aa9f81 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"מתקדם"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"עיצוב"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"הפעל מקלדת מפוצלת"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"מוחק את הנתונים המסונכרנים שלך מ-Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"הנתונים המסונכרנים שלך יימחקו. האם אתה בטוח?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"מחק"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"בטל"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"עבור לשיטות קלט אחרות"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"מתג החלפת השפה מכסה גם שיטות קלט אחרות"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"מתג החלפת שפה"</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 53ef5779f..9a43008d6 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"詳細設定"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"テーマ"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"スプリットキーボードを有効にする"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"他の入力方法に切り替え"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"言語切り替えキーは他の入力方法にも対応しています"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"言語切り替えキー"</string> diff --git a/java/res/values-ka-rGE/strings.xml b/java/res/values-ka-rGE/strings.xml index d4457a508..71ec1f19b 100644 --- a/java/res/values-ka-rGE/strings.xml +++ b/java/res/values-ka-rGE/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"გაფართოებული"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"თემა"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"გაყოფილი კლავიატურის გააქტიურება"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"შეყვანის სხვა მეთოდებზე გადართვა"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ენის გადართვის ღილაკს შეყვანის სხვა მეთოდებსაც შეიცავს"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"ენის გადართვის კლავიში"</string> diff --git a/java/res/values-kk-rKZ/strings.xml b/java/res/values-kk-rKZ/strings.xml index 58f8f306e..31097d72e 100644 --- a/java/res/values-kk-rKZ/strings.xml +++ b/java/res/values-kk-rKZ/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Кеңейтілген"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тақырып"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Бөлінген пернетақтаны қосу"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Басқа енгізу әдістеріне ауыстырыңыз"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Тілді ауыстыру пернесі басқа енгізу әдістерін де қамтиды"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Тілді ауыстыру пернесі"</string> diff --git a/java/res/values-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml index 86fdf2957..95c96f281 100644 --- a/java/res/values-km-rKH/strings.xml +++ b/java/res/values-km-rKH/strings.xml @@ -35,11 +35,19 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"កម្រិតខ្ពស់"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"រូបរាង"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"បើកការបំបែកក្ដារចុច"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ប្ដូរទៅវិធីសាស្ត្របញ្ចូលផ្សេងទៀត"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"គ្រាប់ចុចប្ដូរភាសាតាមវិធីសាស្ត្របញ្ចូលផ្សេងទៀត"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"គ្រាប់ចុចប្ដូរភាសា"</string> <string name="show_language_switch_key_summary" msgid="7343403647474265713">"បង្ហាញនៅពេលដែលបើកភាសាបញ្ចូលច្រើន"</string> - <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"សោលេចឡើងបោះបង់ការពន្យារពេល"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"សោលេចឡើងបោះបង់ការពន្យារពេល"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"គ្មានការពន្យារពេល"</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"លំនាំដើម"</string> <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> មិល្លីវិនាទី"</string> @@ -50,7 +58,7 @@ <string name="enable_metrics_logging" msgid="5506372337118822837">"ធ្វើឲ្យ <xliff:g id="APPLICATION_NAME">%s</xliff:g> ប្រសើរឡើង"</string> <string name="use_double_space_period" msgid="8781529969425082860">"រយៈពេលចុចដកឃ្លាពីរដង"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"ប៉ះដកឃ្លាពីរដងបញ្ចូលរយៈពេលដែលអនុវត្តតាមដកឃ្លា"</string> - <string name="auto_cap" msgid="1719746674854628252">"ការសរសេរជាអក្សរធំស្វ័យប្រវត្តិ"</string> + <string name="auto_cap" msgid="1719746674854628252">"ការសរសេរជាអក្សរធំស្វ័យប្រវត្តិ"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"សរសេរពាក្យដំបូងជាអក្សរធំនៃប្រយោគនីមួយៗ"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"វចនានុក្រមផ្ទាល់ខ្លួន"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"ផ្នែកបន្ថែមវចនានុក្រម"</string> @@ -58,7 +66,7 @@ <string name="prefs_show_suggestions" msgid="8026799663445531637">"បង្ហាញការស្នើកែ"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"បង្ហាញពាក្យបានផ្ដល់ស្នើខណៈពេលវាយបញ្ចូល"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"ទប់ស្កាត់ពាក្យបំពាន"</string> - <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"កុំស្នើឲ្យពាក្យបំពានមានសក្ដានុពល"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"កុំស្នើឲ្យពាក្យបំពានមានសក្ដានុពល"</string> <string name="auto_correction" msgid="7630720885194996950">"ការកែស្វ័យប្រវត្តិ"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"ចន្លោះមិនឃើញ និងសញ្ញាវណ្ណយុត្តកែពាក្យដែលបានវាយខុសស្វ័យប្រវត្តិ"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"បិទ"</string> @@ -149,7 +157,7 @@ <string name="dictionary_provider_name" msgid="3027315045397363079">"កម្មវិធីផ្ដល់វចនានុក្រម"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"សេវាកម្មវចនានុក្រម"</string> <string name="download_description" msgid="6014835283119198591">"ព័ត៌មានបច្ចុប្បន្នភាពវចនានុក្រម"</string> - <string name="dictionary_settings_title" msgid="8091417676045693313">"ផ្នែកបន្ថែមវចនានុក្រម"</string> + <string name="dictionary_settings_title" msgid="8091417676045693313">"ផ្នែកបន្ថែមវចនានុក្រម"</string> <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"វចនានុក្រមអាចប្រើបាន"</string> <string name="dictionary_settings_summary" msgid="5305694987799824349">"ការកំណត់សម្រាប់វចនានុក្រម"</string> <string name="user_dictionaries" msgid="3582332055892252845">"វចនានុក្រមអ្នកប្រើ"</string> @@ -165,10 +173,10 @@ <string name="message_updating" msgid="4457761393932375219">"ពិនិត្យមើលបច្ចុប្បន្នភាព"</string> <string name="message_loading" msgid="5638680861387748936">"កំពុងផ្ទុក..."</string> <string name="main_dict_description" msgid="3072821352793492143">"វចនានុក្រមចម្បង"</string> - <string name="cancel" msgid="6830980399865683324">"បោះបង់"</string> + <string name="cancel" msgid="6830980399865683324">"បោះបង់"</string> <string name="go_to_settings" msgid="3876892339342569259">"ការកំណត់"</string> <string name="install_dict" msgid="180852772562189365">"ដំឡើង"</string> - <string name="cancel_download_dict" msgid="7843340278507019303">"បោះបង់"</string> + <string name="cancel_download_dict" msgid="7843340278507019303">"បោះបង់"</string> <string name="delete_dict" msgid="756853268088330054">"លុប"</string> <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ភាសាដែលបានជ្រើសនៅលើឧបករណ៍ចល័តមានវចនានុក្រមអាចប្រើបាន។<br/> យើងផ្ដល់អនុសាសន៍ឲ្យ <b>ទាញយក</b> វចនានុក្រមភាសា <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ដើម្បីបង្កើនបទពិសោធន៍វាយបញ្ចូលរបស់អ្នក។<br/> <br/> ការទាញយកអាចចំណាយពេលប្រហែលពីរនាទីនៅតាម 3G។ ការគិតថ្លៃអាចអនុវត្តប្រសិនបើអ្នកមិនប្រើ <b>ផែនការទិន្នន័យគ្មានដែនកំណត់</b>.<br/> បើអ្នកមិនប្រាកដថាផែនការណាមួយដែលអ្នកមាន យើងផ្ដល់អនុសាសន៍ឲ្យភ្ជាប់វ៉ាយហ្វាយ ដើម្បីចាប់ផ្ដើមទាញយកដោយស្វ័យប្រវត្តិ។<br/> <br/> ជំនួយ៖ អ្នកអាចទាញយក និងលុបវចនានុក្រមដោយចូលទៅ <b>ភាសា & ការបញ្ចូល</b> នៅក្នុងម៉ឺនុយ <b>ការកំណត់</b> សម្រាប់ឧបករណ៍ចល័ត។"</string> <string name="download_over_metered" msgid="1643065851159409546">"ទាញយកឥឡូវនេះ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> មេកាបៃ)"</string> @@ -186,7 +194,7 @@ <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"ពាក្យ៖"</string> <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"ផ្លូវកាត់៖"</string> <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"ភាសា៖"</string> - <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"វាយបញ្ចូលពាក្យ"</string> + <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"វាយបញ្ចូលពាក្យ"</string> <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ផ្លូវកាត់ជាជម្រើស"</string> <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"កែពាក្យ"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"កែ"</string> diff --git a/java/res/values-kn-rIN/strings.xml b/java/res/values-kn-rIN/strings.xml index 04d9b1c49..3b45511c1 100644 --- a/java/res/values-kn-rIN/strings.xml +++ b/java/res/values-kn-rIN/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"ಸುಧಾರಿತ"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"ಥೀಮ್"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"ಬೇರ್ಪಡೆ ಕೀಬೋರ್ಡ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ಇತರೆ ಇನ್ಪುಟ್ ವಿಧಾನಗಳಿಗೆ ಬದಲಾಯಿಸು"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ಭಾಷಾ ಬದಲಾವಣೆ ಕೀಯು ಇತರೆ ಇನ್ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಕೂಡ ಒಳಗೊಂಡಿರುತ್ತದೆ"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"ಭಾಷೆ ಬದಲಾವಣೆ ಕೀ"</string> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index 68195f0d1..7e609e945 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"고급"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"테마"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"분할 키보드 사용"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"다른 입력 방법으로 전환"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"언어 전환 키가 제공하는 기타 입력 방법"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"언어 전환 키"</string> diff --git a/java/res/values-ky-rKG/strings.xml b/java/res/values-ky-rKG/strings.xml index 6b46785e3..14d5601bb 100644 --- a/java/res/values-ky-rKG/strings.xml +++ b/java/res/values-ky-rKG/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Өркүндөтүлгөн"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тема"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Баскычтопту бөлүүнү иштетүү"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Башка киргзүү ыкмалрна которуу"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Тил которуштуруу баскычында башка киргизүү ыкмалары дагы камтылган"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Тил которуштуруу баскычы"</string> diff --git a/java/res/values-lo-rLA/strings.xml b/java/res/values-lo-rLA/strings.xml index efc09bebc..3535f9408 100644 --- a/java/res/values-lo-rLA/strings.xml +++ b/java/res/values-lo-rLA/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"ຂັ້ນສູງ"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"ຮູບແບບສີສັນ"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"ເປີດນຳໃຊ້ແປ້ນພິມແຍກຕົວ"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"ລຶບຂໍ້ມູນທີ່ຊິງຄ໌ແລ້ວຂອງທ່ານຈາກ Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"ຂໍ້ມູນທີ່ຊິງຄ໌ແລ້ວຂອງທ່ານຈະຖືກລຶບ. ທ່ານແນ່ໃຈບໍ?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"ລຶບ"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"ຍົກເລີກ"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ປ່ຽນໄປໃຊ້ການປ້ອນຂໍ້ມູນແບບອື່ນ"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ໂຕປ່ຽນພາສາເປັນທັງໂຕປ່ຽນຮູບແບບການປ້ອນຂໍ້ມູນເຊັ່ນກັນ"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"ປຸ່ມປ່ຽນພາສາ"</string> diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml index cc8d0eaf6..881561441 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Išplėstiniai"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Įgalinti suskaidytą klaviatūrą"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Perj. į kt. įvesties būd."</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kalbos perjungimo klavišu taip pat perjungiami įvesties būdai"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Kalbos keitimo klavišas"</string> diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml index 833839b8a..663f427a1 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Papildu"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Motīvs"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Iespējot dalīto tastatūru"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Pārsl. uz citām iev. met."</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Valodas pārslēgš. taustiņu var lietot arī citām ievades metodēm."</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Valodas pārslēgšanas taustiņš"</string> diff --git a/java/res/values-mk-rMK/strings.xml b/java/res/values-mk-rMK/strings.xml index f3503f7bf..ba5402ab4 100644 --- a/java/res/values-mk-rMK/strings.xml +++ b/java/res/values-mk-rMK/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Напредни"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тема"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Овозможи поделена тастатура"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Префрли на други влезни методи"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Копчето за менување јазици покрива и други методи на внес"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Копче за промена на јазик"</string> diff --git a/java/res/values-ml-rIN/strings.xml b/java/res/values-ml-rIN/strings.xml index a34de64ac..845d04fca 100644 --- a/java/res/values-ml-rIN/strings.xml +++ b/java/res/values-ml-rIN/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"വിപുലമായ"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"തീം"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"സ്പ്ലിറ്റ് കീബോർഡ് പ്രവർത്തനക്ഷമമാക്കുക"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"മറ്റു ടൈപ്പുചെയ്യൽ രീതികളിലേക്ക് മാറുക"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ഭാഷ മാറൽ കീയിൽ മറ്റ് ടൈപ്പുചെയ്യൽ രീതികളും ഉൾപ്പെടുന്നു"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"ഭാഷ മാറൽ കീ"</string> diff --git a/java/res/values-mn-rMN/strings.xml b/java/res/values-mn-rMN/strings.xml index 938c90f29..d70fec6a9 100644 --- a/java/res/values-mn-rMN/strings.xml +++ b/java/res/values-mn-rMN/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Дэлгэрэнгүй"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Загвар"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Хуваагдмал гарыг идэвхжүүлэх"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Таны синк хийсэн мэдээллийг Google-ээс устгана."</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"Таны синк хийсэн мэдээлэл устах болно. Та итгэлтэй байна уу?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"Устгах"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"Цуцлах"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Оруулах өөр арга руу шилжүүлэх"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Хэл солих түлхүүрт өөр оруулах аргууд мөн багтсан байгаа"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Хэл солих товч"</string> diff --git a/java/res/values-mr-rIN/strings.xml b/java/res/values-mr-rIN/strings.xml index 2c6746e35..eb2bea5f9 100644 --- a/java/res/values-mr-rIN/strings.xml +++ b/java/res/values-mr-rIN/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"प्रगत"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"थीम"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"विभाजित कीबोर्ड सक्षम करा"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अन्य इनपुट पद्धतींवर स्विच करा"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"भाषा स्विच की अन्य इनपुट पद्धती देखील समाविष्ट करते"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"भाषा स्विच की"</string> diff --git a/java/res/values-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml index 3136c3bbd..a57099a79 100644 --- a/java/res/values-ms-rMY/strings.xml +++ b/java/res/values-ms-rMY/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Lanjutan"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Dayakan papan kekunci terpisah"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Tukar ke kaedah input lain"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kunci pertukaran bahasa meliputi kaedah masukan lain juga"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Kekunci tukar bahasa"</string> diff --git a/java/res/values-my-rMM/strings.xml b/java/res/values-my-rMM/strings.xml index 281004670..5a49105cd 100644 --- a/java/res/values-my-rMM/strings.xml +++ b/java/res/values-my-rMM/strings.xml @@ -30,11 +30,15 @@ <string name="settings_screen_accounts" msgid="7570397912370223287">"အကောင့်များ & ကိုယ်ပိုင်ကိစ္စ"</string> <string name="settings_screen_appearance" msgid="9153102634339912029">"အပြင်ပန်း & အပြင်အဆင်များ"</string> <string name="settings_screen_multilingual" msgid="1391301621464509659">"ဘာသာစကားစုံ ရွေးချယ်စရာများ"</string> - <string name="settings_screen_gesture" msgid="8826372746901183556">"လှုပ်ရှားမှုဖြင့်စာရိုက်ခြင်း"</string> + <string name="settings_screen_gesture" msgid="8826372746901183556">"လှုပ်ရှားမှုဖြင့်စာရိုက်ခြင်း"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"စာအမှားပြပြင်ခြင်း"</string> - <string name="settings_screen_advanced" msgid="7472408607625972994">"အဆင့်မြင့်"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"အဆင့်မြင့်"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"အပြင်အဆင်"</string> - <string name="enable_split_keyboard" msgid="4177264923999493614">"ကီးဘုတ် ခွဲခြမ်းမှု ဖွင့်ထားရန်"</string> + <string name="enable_split_keyboard" msgid="4177264923999493614">"ကီးဘုတ် ခွဲခြမ်းမှု ဖွင့်ထားရန်"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"သင်၏ စင့်က် လုပ်ပြီးသား ဒေတာ Google ထဲမှ ဖျက်ခံရမည်။"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"သင်၏ စင့်က် လုပ်ပြီးသား ဒေတာ ဖျက်ခံရမည်။ သင် သေချာသလား?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"ဖျက်ရန်"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"ဖျက်သိမ်းရန်"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"အခြားထည့်သွင်းမည့် နည်းလမ်းများသို့ ပြောင်းရန်"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ဘာသာပြောင်းသည့် ကီးသည် အခြားထည့်သွင်းရန် နည်းလမ်းများလည်း ပါဝင်သည်"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"ဘာသာစကား ပြောင်းခလုတ်"</string> @@ -47,7 +51,7 @@ <string name="use_contacts_dict" msgid="4435317977804180815">"အဆယ်ကသွယ်အမည်များ အကြံပြုမည်"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"အကြံပြုချက်များနှင့် အမှားပြင်ခြင်းများအတွက် အဆက်သွယ်မှ အမည်များ အသုံးပြုမည်"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"ကိုယ်ရေးကိုယ်တာ အကြံပြုချက်များ"</string> - <string name="enable_metrics_logging" msgid="5506372337118822837">"မြှင့်တင်ပါ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> + <string name="enable_metrics_logging" msgid="5506372337118822837">"မြှင့်တင်ပါ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="use_double_space_period" msgid="8781529969425082860">"နှစ်နေရာခြား အဆုံးသတ်"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"အချိန်ကာလ"</string> <string name="auto_cap" msgid="1719746674854628252">"အော်တိုစာလုံးကြီးပြောင်း"</string> @@ -84,7 +88,7 @@ <string name="hint_add_to_dictionary_without_word" msgid="3040385779511255101">"သိမ်းရန် ဤနေရာကို ထိပါ"</string> <string name="has_dictionary" msgid="6071847973466625007">"အဘိဓါန်ရနိုင်"</string> <string name="keyboard_layout" msgid="8451164783510487501">"ကီးဘုတ်အရောင်"</string> - <string name="switch_accounts" msgid="3321216593719006162">"အကောင့်များကို ပြောင်းရန်"</string> + <string name="switch_accounts" msgid="3321216593719006162">"အကောင့်များကို ပြောင်းရန်"</string> <string name="no_accounts_selected" msgid="2073821619103904330">"အကောင့်များ မရွေးရသေးပါ"</string> <string name="account_selected" msgid="2846876462199625974">"<xliff:g id="EMAIL_ADDRESS">%1$s</xliff:g>အား လတ်တလော သုံးနေ၏"</string> <string name="account_select_ok" msgid="9141195141763227797">"အိုကေ"</string> @@ -156,7 +160,7 @@ <string name="default_user_dict_pref_name" msgid="1625055720489280530">"သုံးစွဲသူ၏ အဘိဓာန်"</string> <string name="dictionary_available" msgid="4728975345815214218">"အဘိဓါန်ရရှိနိုင်"</string> <string name="dictionary_downloading" msgid="2982650524622620983">"လက်ရှိ ဒေါင်းလုပ်လုပ်နေသည်"</string> - <string name="dictionary_installed" msgid="8081558343559342962">"ထည့်သွင်းပြီး"</string> + <string name="dictionary_installed" msgid="8081558343559342962">"ထည့်သွင်းပြီး"</string> <string name="dictionary_disabled" msgid="8950383219564621762">"ထည့်သွင်းထားပြီး၊ ပိတ်ထားသည်"</string> <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"အဘိဓါန်ဝန်ဆောင်မှုသို့ ချိတ်ဆက်ရန် ပြဿနာရှိနေသည်"</string> <string name="no_dictionaries_available" msgid="8039920716566132611">"အဘိဓါန်မရှိ"</string> @@ -170,7 +174,7 @@ <string name="install_dict" msgid="180852772562189365">"တပ်ဆင်ပါ"</string> <string name="cancel_download_dict" msgid="7843340278507019303">"ထားတော့"</string> <string name="delete_dict" msgid="756853268088330054">"ဖျက်ရန်"</string> - <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"သင့်ဖုန်းရှိ ရွေးချယ်ထားသည့် ဘာသာအတွက် အဘိဓါန်ရှိပါသည်။ <br/> အဘိဓါန်အား <b>ဒေါင်းလုပ်လုပ်ကာ</b> the <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> သင့်စာရိုက် အတွေ့အကြုံတိုးတက်စေရန် ကျွန်ုပ်တို့အကြံပြုပါသည်။ <br/> <br/> ဒေါင်းလုပ်လုပ်ရန် 3G ပေါ်တွင် ၁ မှ ၂ မိနစ်ခန့်ကြာနိုင်သည်။ သင့်တွင် <b>အကန့်သတ်မှရိ အချက်လက် သုံးစွဲမှု</b>မရှိလျှင် ငွေကျသင့်နိုင်ပါသည်။ <br/> သင့်တွင် မည်သည့်အချက်လက်သုံးစွဲမှု ရှိနေသည်ကိုမသိလျှင်၊ အလိုအလျောက် ဒေါင်းလုပ်လုပ်ရန် Wi-Fi ကွန်ရက်တစ်ခု ရှာဖွေရန် တိုက်တွန်းပါသည်။ <br/> <br/> နည်းလမ်း: သင့်ဖုန်းကိရိယာရှိ <b>ဆက်တင်ထဲတွင်</b> <b>ဘာသာ & စာရိုက်ထည့်မှု</b> သို့သွားကာ အဘိဓါန်များကို ဒေါင်းလုပ်လုပ်နိုင် ဖယ်ရှားနိုင်ပါသည်။"</string> + <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"သင့်ဖုန်းရှိ ရွေးချယ်ထားသည့် ဘာသာအတွက် အဘိဓါန်ရှိပါသည်။ <br/> အဘိဓါန်အား <b>ဒေါင်းလုပ်လုပ်ကာ</b> the <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> သင့်စာရိုက် အတွေ့အကြုံတိုးတက်စေရန် ကျွန်ုပ်တို့အကြံပြုပါသည်။ <br/> <br/> ဒေါင်းလုပ်လုပ်ရန် 3G ပေါ်တွင် ၁ မှ ၂ မိနစ်ခန့်ကြာနိုင်သည်။ သင့်တွင် <b>အကန့်သတ်မှရိ အချက်လက် သုံးစွဲမှု</b>မရှိလျှင် ငွေကျသင့်နိုင်ပါသည်။ <br/> သင့်တွင် မည်သည့်အချက်လက်သုံးစွဲမှု ရှိနေသည်ကိုမသိလျှင်၊ အလိုအလျောက် ဒေါင်းလုပ်လုပ်ရန် Wi-Fi ကွန်ရက်တစ်ခု ရှာဖွေရန် တိုက်တွန်းပါသည်။ <br/> <br/> နည်းလမ်း: သင့်ဖုန်းကိရိယာရှိ <b>ဆက်တင်ထဲတွင်</b> <b>ဘာသာ & စာရိုက်ထည့်မှု</b> သို့သွားကာ အဘိဓါန်များကို ဒေါင်းလုပ်လုပ်နိုင် ဖယ်ရှားနိုင်ပါသည်။"</string> <string name="download_over_metered" msgid="1643065851159409546">"ယခုဒေါင်းလုပ်လုပ်မည် (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string> <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi အသုံးပြု၍ ဒေါင်းလုပ်လုပ်ရန်"</string> <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> အတွက် အဘိဓါန် ရနိုင်ပါသည်"</string> @@ -191,7 +195,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"စာလုံးကို ပြင်ဆင်မည်"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"တည်းဖြတ်ရန်"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"ဖျက်ရန်"</string> - <string name="user_dict_settings_empty_text" msgid="558499587532668203">"သင့်အဘိဓာန်ထဲတွင် မည်သည့်စာလုံးမှမရှိပါ။ ထပ်ထည့်ခြင်း(+)ခလုတ်ကို ထိ၍ စာလုံးထည့်ပါ။"</string> + <string name="user_dict_settings_empty_text" msgid="558499587532668203">"သင့်အဘိဓာန်ထဲတွင် မည်သည့်စာလုံးမှမရှိပါ။ ထပ်ထည့်ခြင်း(+)ခလုတ်ကို ထိ၍ စာလုံးထည့်ပါ။"</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"ဘာသာစကားအားလုံးအတွက်"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"ဘာသာစကားပိုများများ…"</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"ဖျက်သိမ်းရန်"</string> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index 849d7ab2d..c28c210c2 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avansert"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Aktivér delt tastatur"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Bytt inndatametode"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasten for språkbytte dekker også andre inndatametoder"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Nøkkel for språkskifte"</string> diff --git a/java/res/values-ne-rNP/strings.xml b/java/res/values-ne-rNP/strings.xml index 40c2d4f96..e6e709866 100644 --- a/java/res/values-ne-rNP/strings.xml +++ b/java/res/values-ne-rNP/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"उन्नत"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"विषयवस्तु"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"विभाजित कुञ्जीपाटी सक्षम गर्नुहोस्"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Google बाट तपाईँको सिङ्क गरिएको डाटा मेटाउँछ"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"तपाईंको समक्रमण गरिएको डाटा मेटाइनेछ। के तपाईं निश्चित हुनुहुन्छ?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"मेटाउनुहोस्"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"रद्द गर्नुहोस्"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अन्य इनपुट विधिमा स्विच गर्नुहोस्"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"भाषा स्विच किले अन्य इनपुट विधि पनि समेट्छ"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"भाषा स्विच कुञ्जी"</string> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index d09db3f17..4a967ac49 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Geavanceerd"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Thema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Gesplitst toetsenbord inschakelen"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Invoermeth. overschakelen"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Schakelknop voor taal ook van toepassing op andere invoermethoden"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Schakelknop voor taal"</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index 39cf7422d..9b8fac44f 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Zaawansowane"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Motyw"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Włącz podzieloną klawiaturę"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Inne metody wprowadzania"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Klawisz zmiany języka obejmuje też inne metody wprowadzania"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Klawisz zmiany języka"</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index e063cba31..34c6d1a22 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avançadas"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ativar teclado dividido"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Mudar p/ outros mét. ent."</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla de mudança de idioma abrange outros métodos de entrada"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla alterar idioma"</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index 2cc86e12f..181782c8b 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avançadas"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ativar teclado dividido"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Outros métodos de entrada"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla p/ mudar o idioma também cobre outros métodos de entrada"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de seleção de idioma"</string> diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml index 03398733c..052962184 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Setări avansate"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Temă"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Activați tastatura divizată"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Comut. alte metode de introd."</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasta de comutare între limbi include şi alte metode de introd."</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tastă comutare limbi"</string> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index e5aaf8ba7..304f9988d 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Дополнительные настройки"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тема"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Включить разделенную клавиатуру"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Смена способов ввода"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Клавиша переключения языков также служит для смены способа ввода"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Клавиша смены языка"</string> diff --git a/java/res/values-si-rLK/strings.xml b/java/res/values-si-rLK/strings.xml index f8fa5e7c3..27d68c6e4 100644 --- a/java/res/values-si-rLK/strings.xml +++ b/java/res/values-si-rLK/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"උසස්"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"තේමාව"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"බෙදු යතුරු පුවරුව සබල කරන්න"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"වෙනත් ආදාන ක්රම වෙත මාරුවන්න"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"භාෂා මාරු යතුර වෙනත් ආදාන ක්රමද ආවරණය කරයි"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"භාෂා මාරු යතුර"</string> diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml index 0d0e69fee..c9ce2970d 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Rozšírené"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Motív"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Povoliť rozdelenie klávesnice"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prepnúť na iné metódy vstupu"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kláves na prepnutie jazyka pokrýva aj ďalšie metódy vstupu"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Kľúč na prepínanie jazyka"</string> diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml index e1f86c36c..5aa810579 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Dodatno"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Omogoči razdeljeno tipkovnico"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prekl. na drug nač. vnosa"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tipka za preklop jezika, ki vključuje tudi druge načine vnosa"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tipka za preklop med jeziki"</string> diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml index f8c4ff601..4c43497b8 100644 --- a/java/res/values-sr/strings.xml +++ b/java/res/values-sr/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Напредно"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тема"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Омогући подељену тастатуру"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Пребаци на друге методе уноса"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Тастер за пребацивање језика обухвата и друге методе уноса"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Тастер за пребацивање језика"</string> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index 0c7d1a766..396c20eaf 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Avancerat"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Aktivera delat tangentbord"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Byt till annan inmatning"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Språkbytesknappen omfattar även andra inmatningsmetoder"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Knapp för att byta språk"</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index 04c4f2bb7..c24c900a8 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Mahiri"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Mandhari"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Washa muundo wa kibodi inayogawanyika"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Badilisha hadi kwa mbinu zingine za ingizo"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Ufunguo wa kubadilisha lugha unashughulikia mbinu zingine za ingizo pia"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Kitufe cha kubadilisha lugha"</string> diff --git a/java/res/values-ta-rIN/strings.xml b/java/res/values-ta-rIN/strings.xml index 64c573ba8..8e208b16d 100644 --- a/java/res/values-ta-rIN/strings.xml +++ b/java/res/values-ta-rIN/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"மேம்பட்டவை"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"தீம்"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"பிரிக்கப்பட்ட விசைப்பலகையை இயக்கு"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"பிற உள்ளீட்டு முறைகளுக்கு மாறு"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"மொழி மாற்றல் விசை பிற உள்ளீட்டு முறைகளையும் கட்டுப்படுத்துகிறது"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"மொழி மாற்ற விசை"</string> diff --git a/java/res/values-te-rIN/strings.xml b/java/res/values-te-rIN/strings.xml index 0fb55b4b2..4d891a999 100644 --- a/java/res/values-te-rIN/strings.xml +++ b/java/res/values-te-rIN/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"అధునాతనం"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"థీమ్"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"విభజన కీబోర్డ్ను ప్రారంభించు"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ఇతర ఇన్పుట్ పద్ధతులకు మారండి"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"భాష మార్పు కీ ఇతర ఇన్పుట్ పద్ధతులను కూడా కవర్ చేస్తుంది"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"భాష మార్పు కీ"</string> diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml index fcc76d9b9..d1580ba7e 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"ขั้นสูง"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"ธีม"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"เปิดใช้แป้นพิมพ์แยก"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ใช้วิธีการป้อนข้อมูลอื่น"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"แป้นสลับภาษาครอบคลุมวิธีการป้อนข้อมูลอื่นๆ ด้วย"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"แป้นสลับภาษา"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index 82617b889..1ebf4c352 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Advanced"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"I-enable ang split keyboard"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Lipat iba paraan ng input"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Saklaw din ng key ng pagpalit ng wika ang ibang paraan ng input"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Key ng panlipat ng wika"</string> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index 359e0d16f..340a41783 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Gelişmiş"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Bölünmüş klavyeyi etkinleştir"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Diğer giriş yöntemine geç"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Dil geçiş tuşu diğer giriş yöntemlerini de kapsar"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Dil değiştirme tuşu"</string> diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml index dd625cb70..dd1e068be 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Додатково"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тема"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Увімкнути розділену клавіатуру"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Інші методи введення"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Клавіша зміни мови дозволяє змінювати методи введення"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Клавіша зміни мови"</string> diff --git a/java/res/values-ur-rPK/strings.xml b/java/res/values-ur-rPK/strings.xml index 4b1f03b03..4827eb9e6 100644 --- a/java/res/values-ur-rPK/strings.xml +++ b/java/res/values-ur-rPK/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"جدید ترین"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"تھیم"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"الگ ہونے والا کی بورڈ فعال کریں"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"دیگر اندراج طریقوں پر سوئچ کریں"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"زبان سوئچ کرنے کی کلید اندراج کے دیگر طریقوں کا بھی احاطہ کرتی ہے"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"زبان سوئچ کرنے کی کلید"</string> diff --git a/java/res/values-uz-rUZ/strings.xml b/java/res/values-uz-rUZ/strings.xml index 59aba60f0..402140855 100644 --- a/java/res/values-uz-rUZ/strings.xml +++ b/java/res/values-uz-rUZ/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Qo‘shimcha"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Mavzu"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ikkiga ajratiladigan klaviaturani yoqish"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Boshqa usullarga o‘tish"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tilni o‘zgartirish tugmasi matn kiritish usulini ham o‘zgartiradi"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Tilni o‘zgartirish tugmasi"</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index ec0deb117..104a9dd57 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Nâng cao"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Chủ đề"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Bật chia bàn phím"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Phương thức nhập khác"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Khóa chuyển ngôn ngữ bao gồm cả các phương thức nhập liệu khác"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Phím chuyển đổi ngôn ngữ"</string> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index 52b0dac74..31d6ea611 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"高级"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"主题背景"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"使用分离式键盘"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"切换到其他输入法"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"语言切换键也可用于切换其他输入法"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"语言切换键"</string> diff --git a/java/res/values-zh-rHK/strings.xml b/java/res/values-zh-rHK/strings.xml index 840f33387..3e8d4059c 100644 --- a/java/res/values-zh-rHK/strings.xml +++ b/java/res/values-zh-rHK/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"進階"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"主題背景"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"啟用分離式鍵盤"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"切換至其他輸入法"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"語言切換鍵包括其他輸入法"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"語言切換鍵"</string> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index 8fac3105e..2be37d51a 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -35,6 +35,14 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"進階"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"主題"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"啟用分離式鍵盤"</string> + <!-- no translation found for clear_sync_data_summary (993477139012576584) --> + <skip /> + <!-- no translation found for clear_sync_data_confirmation (6415032621884042784) --> + <skip /> + <!-- no translation found for clear_sync_data_ok (613104067705915132) --> + <skip /> + <!-- no translation found for clear_sync_data_cancel (8543925137765830060) --> + <skip /> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"切換到其他輸入法"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"使語言切換鍵包含其他輸入法"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"語言切換鍵"</string> diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml index 0177129dc..db62fe864 100644 --- a/java/res/values-zu/strings.xml +++ b/java/res/values-zu/strings.xml @@ -35,6 +35,10 @@ <string name="settings_screen_advanced" msgid="7472408607625972994">"Okuthuthukisiwe"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Itimu"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Nika amandla ikhibhodi yokuhlukanisa"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Susa idatha yakho evumelanisiwe esuka ku-Google"</string> + <string name="clear_sync_data_confirmation" msgid="6415032621884042784">"Idatha yakho evumelanisiwe izosuswa. Ingabe uqinisekile?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"Susa"</string> + <string name="clear_sync_data_cancel" msgid="8543925137765830060">"Khansela"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Shintshela kwezinye izindlela zokungena"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Ukhiye wokushintsha ulimi ubandakanya ezinye izindlela zokungenayo"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Ukhiye wokushintsha ullimi"</string> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index e1a72c476..5eaac09a3 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -61,6 +61,11 @@ <string name="cloud_sync_summary" translatable="false">Sync your personal dictionary across devices</string> <string name="cloud_sync_summary_disabled_signed_out" translatable="false">Select an account to enable sync</string> <string name="sync_now_title" translatable="false">[DEBUG] Sync Now</string> + <string name="clear_sync_data_title" translatable="false">[DEBUG] Delete Google Keyboard cloud data</string> + <string name="clear_sync_data_summary" translable="false">Deletes your synced data from Google</string> + <string name="clear_sync_data_confirmation" translable="false">Your synced data will be deleted. Are you sure?</string> + <string name="clear_sync_data_ok" translable="false">Delete</string> + <string name="clear_sync_data_cancel" translable="false">Cancel</string> <!-- Option name for including other IMEs in the language switch list [CHAR LIMIT=30] --> <string name="include_other_imes_in_language_switch_list">Switch to other input methods</string> diff --git a/java/res/xml/prefs_screen_accounts.xml b/java/res/xml/prefs_screen_accounts.xml index 41642bf08..462488547 100644 --- a/java/res/xml/prefs_screen_accounts.xml +++ b/java/res/xml/prefs_screen_accounts.xml @@ -48,4 +48,11 @@ android:persistent="false" android:title="@string/sync_now_title" android:dependency="pref_enable_cloud_sync" /> + + <!-- This preference (acts like a button) enables the user to clear data from the cloud. --> + <Preference android:key="pref_beanstalk_clear_data" + android:persistent="false" + android:title="@string/clear_sync_data_title" + android:summary="@string/clear_sync_data_summary" + android:dependency="pref_enable_cloud_sync" /> </PreferenceScreen> diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 6ccd19f0a..4c2498893 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -23,7 +23,6 @@ import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.EditorInfo; -import android.widget.LinearLayout; import com.android.inputmethod.compat.InputMethodServiceCompatUtils; import com.android.inputmethod.event.Event; @@ -41,11 +40,14 @@ import com.android.inputmethod.latin.define.ProductionFlags; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.CapsModeUtils; +import com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils; +import com.android.inputmethod.latin.utils.NetworkConnectivityUtils; import com.android.inputmethod.latin.utils.RecapitalizeStatus; import com.android.inputmethod.latin.utils.ResourceUtils; import com.android.inputmethod.latin.utils.ScriptUtils; -public final class KeyboardSwitcher implements KeyboardState.SwitchActions { +public final class KeyboardSwitcher implements KeyboardState.SwitchActions, + NetworkConnectivityUtils.NetworkStateChangeListener { private static final String TAG = KeyboardSwitcher.class.getSimpleName(); private SubtypeSwitcher mSubtypeSwitcher; @@ -55,6 +57,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private MainKeyboardView mKeyboardView; private EmojiPalettesView mEmojiPalettesView; private LatinIME mLatinIME; + private RichInputMethodManager mRichImm; private boolean mIsHardwareAcceleratedDrawingEnabled; private KeyboardState mState; @@ -82,6 +85,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private void initInternal(final LatinIME latinIme) { mLatinIME = latinIme; + mRichImm = RichInputMethodManager.getInstance(); mSubtypeSwitcher = SubtypeSwitcher.getInstance(); mState = new KeyboardState(this); mIsHardwareAcceleratedDrawingEnabled = @@ -115,7 +119,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res); final int keyboardHeight = ResourceUtils.getKeyboardHeight(res, settingsValues); builder.setKeyboardGeometry(keyboardWidth, keyboardHeight); - builder.setSubtype(RichInputMethodManager.getInstance().getCurrentSubtype()); + builder.setSubtype(mRichImm.getCurrentSubtype()); builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); builder.setSplitLayoutEnabledByUser(ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED @@ -124,9 +128,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { try { mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); // TODO: revisit this for multi-lingual input - mKeyboardTextsSet.setLocale( - RichInputMethodManager.getInstance().getCurrentSubtypeLocales()[0], - mThemeContext); + mKeyboardTextsSet.setLocale(mRichImm.getCurrentSubtypeLocales()[0], mThemeContext); } catch (KeyboardLayoutSetException e) { Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause()); return; @@ -165,12 +167,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { currentSettingsValues.mKeyPreviewDismissEndXScale, currentSettingsValues.mKeyPreviewDismissEndYScale, currentSettingsValues.mKeyPreviewDismissDuration); - keyboardView.updateShortcutKey(RichInputMethodManager.getInstance().isShortcutImeReady()); + keyboardView.updateShortcutKey(mRichImm.isShortcutImeReady()); final boolean subtypeChanged = (oldKeyboard == null) || !keyboard.mId.mSubtype.equals(oldKeyboard.mId.mSubtype); - final int languageOnSpacebarFormatType = mSubtypeSwitcher.getLanguageOnSpacebarFormatType( - keyboard.mId.mSubtype); - final boolean hasMultipleEnabledIMEsOrSubtypes = RichInputMethodManager.getInstance() + final int languageOnSpacebarFormatType = LanguageOnSpacebarUtils + .getLanguageOnSpacebarFormatType(keyboard.mId.mSubtype); + final boolean hasMultipleEnabledIMEsOrSubtypes = mRichImm .hasMultipleEnabledIMEsOrSubtypes(true /* shouldIncludeAuxiliarySubtypes */); keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, languageOnSpacebarFormatType, hasMultipleEnabledIMEsOrSubtypes); @@ -415,11 +417,13 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { return mCurrentInputView; } + // {@link NetworkConnectivityUtils.NetworkStateChangeListener#onNetworkStateChanged(boolean)}. + @Override public void onNetworkStateChanged() { if (mKeyboardView == null) { return; } - mKeyboardView.updateShortcutKey(RichInputMethodManager.getInstance().isShortcutImeReady()); + mKeyboardView.updateShortcutKey(mRichImm.isShortcutImeReady()); } public int getKeyboardShiftMode() { diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java index eeac4755d..ab8b7515d 100644 --- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java @@ -47,7 +47,6 @@ import com.android.inputmethod.keyboard.internal.KeyDrawParams; import com.android.inputmethod.keyboard.internal.KeyPreviewChoreographer; import com.android.inputmethod.keyboard.internal.KeyPreviewDrawParams; import com.android.inputmethod.keyboard.internal.KeyPreviewView; -import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper; import com.android.inputmethod.keyboard.internal.MoreKeySpec; import com.android.inputmethod.keyboard.internal.NonDistinctMultitouchHelper; import com.android.inputmethod.keyboard.internal.SlidingKeyInputDrawingPreview; @@ -58,6 +57,7 @@ import com.android.inputmethod.latin.SuggestedWords; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.CoordinateUtils; import com.android.inputmethod.latin.settings.DebugSettings; +import com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils; import com.android.inputmethod.latin.utils.TypefaceUtils; import java.util.Locale; @@ -783,10 +783,10 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy mHasMultipleEnabledIMEsOrSubtypes = hasMultipleEnabledIMEsOrSubtypes; final ObjectAnimator animator = mLanguageOnSpacebarFadeoutAnimator; if (animator == null) { - mLanguageOnSpacebarFormatType = LanguageOnSpacebarHelper.FORMAT_TYPE_NONE; + mLanguageOnSpacebarFormatType = LanguageOnSpacebarUtils.FORMAT_TYPE_NONE; } else { if (subtypeChanged - && languageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) { + && languageOnSpacebarFormatType != LanguageOnSpacebarUtils.FORMAT_TYPE_NONE) { setLanguageOnSpacebarAnimAlpha(Constants.Color.ALPHA_OPAQUE); if (animator.isStarted()) { animator.cancel(); @@ -811,7 +811,7 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy final int code = key.getCode(); if (code == Constants.CODE_SPACE) { // If input language are explicitly selected. - if (mLanguageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) { + if (mLanguageOnSpacebarFormatType != LanguageOnSpacebarUtils.FORMAT_TYPE_NONE) { drawLanguageOnSpacebar(key, canvas, paint); } // Whether space key needs to show the "..." popup hint for special purposes @@ -843,7 +843,7 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy // Layout language name on spacebar. private String layoutLanguageOnSpacebar(final Paint paint, final RichInputMethodSubtype subtype, final int width) { - if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarHelper.FORMAT_TYPE_MULTIPLE) { + if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarUtils.FORMAT_TYPE_MULTIPLE) { final Locale[] locales = subtype.getLocales(); final String[] languages = new String[locales.length]; for (int i = 0; i < locales.length; ++i) { @@ -853,7 +853,7 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy } // Choose appropriate language name to fit into the width. - if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE) { + if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarUtils.FORMAT_TYPE_FULL_LOCALE) { final String fullText = subtype.getFullDisplayName(); if (fitsTextIntoWidth(width, fullText, paint)) { return fullText; diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index d9d22e0fc..1c54a20e7 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -77,6 +77,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private static final int DICTIONARY_FORMAT_VERSION = FormatSpec.VERSION4; + private static final WordProperty[] DEFAULT_WORD_PROPERTIES_FOR_SYNC = + new WordProperty[0] /* default */; + /** The application context. */ protected final Context mContext; @@ -802,4 +805,38 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } }); } + + /** + * Returns dictionary content required for syncing. + */ + public WordProperty[] getWordPropertiesForSyncing() { + reloadDictionaryIfRequired(); + final AsyncResultHolder<WordProperty[]> result = new AsyncResultHolder<>(); + asyncExecuteTaskWithLock(mLock.readLock(), "sync-read", new Runnable() { + @Override + public void run() { + final ArrayList<WordProperty> wordPropertyList = new ArrayList<>(); + final BinaryDictionary binaryDictionary = getBinaryDictionary(); + if (binaryDictionary == null) { + return; + } + int token = 0; + do { + // TODO: We need a new API that returns *new* un-synced data. + final BinaryDictionary.GetNextWordPropertyResult nextWordPropertyResult = + binaryDictionary.getNextWordProperty(token); + final WordProperty wordProperty = nextWordPropertyResult.mWordProperty; + if (wordProperty == null) { + break; + } + wordPropertyList.add(wordProperty); + token = nextWordPropertyResult.mNextToken; + } while (token != 0); + result.set(wordPropertyList.toArray(new WordProperty[wordPropertyList.size()])); + } + }); + // TODO: Figure out the best timeout duration for this API. + return result.get(DEFAULT_WORD_PROPERTIES_FOR_SYNC, + TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS); + } } diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 27115e266..d6ec57fe6 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -32,7 +32,6 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.inputmethodservice.InputMethodService; import android.media.AudioManager; -import android.net.ConnectivityManager; import android.os.Build; import android.os.Debug; import android.os.IBinder; @@ -100,6 +99,7 @@ import com.android.inputmethod.latin.utils.ImportantNoticeUtils; import com.android.inputmethod.latin.utils.IntentUtils; import com.android.inputmethod.latin.utils.JniUtils; import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper; +import com.android.inputmethod.latin.utils.NetworkConnectivityUtils; import com.android.inputmethod.latin.utils.StatsUtils; import com.android.inputmethod.latin.utils.StatsUtilsManager; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; @@ -592,13 +592,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen loadSettings(); resetDictionaryFacilitatorIfNecessary(); - // Register to receive ringer mode change and network state change. - // Also receive installation and removal of a dictionary pack. + NetworkConnectivityUtils.onCreate(this /* context */, mKeyboardSwitcher /* listener */); + + // Register to receive ringer mode change. final IntentFilter filter = new IntentFilter(); - filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); - registerReceiver(mConnectivityAndRingerModeChangeReceiver, filter); + registerReceiver(mRingerModeChangeReceiver, filter); + // Register to receive installation and removal of a dictionary pack. final IntentFilter packageFilter = new IntentFilter(); packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED); packageFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); @@ -726,7 +727,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen mPersonalizationDictionaryUpdater.onDestroy(); mContextualDictionaryUpdater.onDestroy(); mSettings.onDestroy(); - unregisterReceiver(mConnectivityAndRingerModeChangeReceiver); + NetworkConnectivityUtils.onDestroy(this /* context */); + unregisterReceiver(mRingerModeChangeReceiver); unregisterReceiver(mDictionaryPackInstallReceiver); unregisterReceiver(mDictionaryDumpBroadcastReceiver); mStatsUtilsManager.onDestroy(); @@ -738,7 +740,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen public void recycle() { unregisterReceiver(mDictionaryPackInstallReceiver); unregisterReceiver(mDictionaryDumpBroadcastReceiver); - unregisterReceiver(mConnectivityAndRingerModeChangeReceiver); + unregisterReceiver(mRingerModeChangeReceiver); + NetworkConnectivityUtils.onDestroy(this /* context */); mInputLogic.recycle(); } @@ -1828,15 +1831,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // boolean onKeyLongPress(final int keyCode, final KeyEvent event); // boolean onKeyMultiple(final int keyCode, final int count, final KeyEvent event); - // receive ringer mode change and network state change. - private final BroadcastReceiver mConnectivityAndRingerModeChangeReceiver = - new BroadcastReceiver() { + // receive ringer mode change. + private final BroadcastReceiver mRingerModeChangeReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { final String action = intent.getAction(); - if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { - mRichImm.onNetworkStateChanged(intent); - } else if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { + if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { AudioAndHapticFeedbackManager.getInstance().onRingerModeChanged(); } } diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java index 462121789..cb1de6b17 100644 --- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java +++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java @@ -20,11 +20,8 @@ import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MO import static com.android.inputmethod.latin.common.Constants.Subtype.ExtraValue.REQ_NETWORK_CONNECTIVITY; import android.content.Context; -import android.content.Intent; import android.content.SharedPreferences; import android.inputmethodservice.InputMethodService; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.Build; import android.os.IBinder; @@ -36,10 +33,10 @@ import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; -import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.latin.settings.AdditionalFeaturesSettingUtils; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils; +import com.android.inputmethod.latin.utils.NetworkConnectivityUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import java.util.Collections; @@ -72,7 +69,6 @@ public class RichInputMethodManager { private RichInputMethodSubtype mCurrentRichInputMethodSubtype; private InputMethodInfo mShortcutInputMethodInfo; private InputMethodSubtype mShortcutSubtype; - private boolean mIsNetworkConnected; final HashMap<InputMethodInfo, List<InputMethodSubtype>> mSubtypeListCacheWithImplicitlySelectedSubtypes = new HashMap<>(); final HashMap<InputMethodInfo, List<InputMethodSubtype>> @@ -116,11 +112,6 @@ public class RichInputMethodManager { // Initialize the current input method subtype and the shortcut IME. refreshSubtypeCaches(); - - final ConnectivityManager connectivityManager = - (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - final NetworkInfo info = connectivityManager.getActiveNetworkInfo(); - mIsNetworkConnected = (info != null && info.isConnected()); } public InputMethodSubtype[] getAdditionalSubtypes() { @@ -511,9 +502,7 @@ public class RichInputMethodManager { } private void updateCurrentSubtype(@Nonnull final InputMethodSubtype subtype) { - final RichInputMethodSubtype richSubtype = AdditionalFeaturesSettingUtils - .createRichInputMethodSubtype(this, subtype, mContext); - mCurrentRichInputMethodSubtype = richSubtype; + mCurrentRichInputMethodSubtype = new RichInputMethodSubtype(subtype); } private void updateShortcutIme() { @@ -591,16 +580,8 @@ public class RichInputMethodManager { return true; } if (mShortcutSubtype.containsExtraValueKey(REQ_NETWORK_CONNECTIVITY)) { - return mIsNetworkConnected; + return NetworkConnectivityUtils.isNetworkConnected(); } return true; } - - public void onNetworkStateChanged(final Intent intent) { - final boolean noConnection = intent.getBooleanExtra( - ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); - mIsNetworkConnected = !noConnection; - - KeyboardSwitcher.getInstance().onNetworkStateChanged(); - } } diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java index 92ba6c2d9..d7a03d40b 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java +++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java @@ -20,7 +20,7 @@ import android.content.Context; import android.content.res.Resources; import android.view.inputmethod.InputMethodSubtype; -import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper; +import com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import java.util.List; @@ -33,9 +33,6 @@ public final class SubtypeSwitcher { private /* final */ RichInputMethodManager mRichImm; private /* final */ Resources mResources; - private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper = - new LanguageOnSpacebarHelper(); - public static SubtypeSwitcher getInstance() { return sInstance; } @@ -68,18 +65,14 @@ public final class SubtypeSwitcher { public void updateParametersOnStartInputView() { final List<InputMethodSubtype> enabledSubtypesOfThisIme = mRichImm.getMyEnabledInputMethodSubtypeList(true); - mLanguageOnSpacebarHelper.onUpdateEnabledSubtypes(enabledSubtypesOfThisIme); + LanguageOnSpacebarUtils.setEnabledSubtypes(enabledSubtypesOfThisIme); } // Update the current subtype. LatinIME.onCurrentInputMethodSubtypeChanged calls this function. public void onSubtypeChanged(@Nonnull final RichInputMethodSubtype richSubtype) { final boolean implicitlyEnabledSubtype = mRichImm .checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(richSubtype.getRawSubtype()); - mLanguageOnSpacebarHelper.onSubtypeChanged( + LanguageOnSpacebarUtils.onSubtypeChanged( richSubtype, implicitlyEnabledSubtype, mResources.getConfiguration().locale); } - - public int getLanguageOnSpacebarFormatType(final RichInputMethodSubtype subtype) { - return mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(subtype); - } } diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index 30dd51aed..df8db0cd2 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -252,6 +252,7 @@ public class SuggestedWords { public static final int KIND_FLAG_POSSIBLY_OFFENSIVE = 0x80000000; public static final int KIND_FLAG_EXACT_MATCH = 0x40000000; public static final int KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION = 0x20000000; + public static final int KIND_FLAG_APPROPRIATE_FOR_AUTO_CORRECTION = 0x10000000; public final String mWord; // The completion info from the application. Null for suggestions that don't come from @@ -333,6 +334,10 @@ public class SuggestedWords { return (mKindAndFlags & KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION) != 0; } + public boolean isAprapreateForAutoCorrection() { + return (mKindAndFlags & KIND_FLAG_APPROPRIATE_FOR_AUTO_CORRECTION) != 0; + } + public void setDebugString(final String str) { if (null == str) throw new NullPointerException("Debug info is null"); mDebugString = str; diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java index 74196dd6d..b595f3974 100644 --- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java +++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java @@ -58,8 +58,7 @@ public class PersonalizationHelper { final UserHistoryDictionary dict = ref == null ? null : ref.get(); if (dict != null) { if (DEBUG) { - Log.d(TAG, "Use cached UserHistoryDictionary for " + locale + - " & account" + accountName); + Log.d(TAG, "Use cached UserHistoryDictionary with lookup: " + lookupStr); } dict.reloadDictionaryIfRequired(); return dict; diff --git a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java index 4bd15d037..0232853f7 100644 --- a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java @@ -50,12 +50,15 @@ import javax.annotation.Nullable; */ public final class AccountsSettingsFragment extends SubScreenFragment { private static final String PREF_SYNC_NOW = "pref_beanstalk"; + private static final String PREF_CLEAR_SYNC_DATA = "pref_beanstalk_clear_data"; static final String PREF_ACCCOUNT_SWITCHER = "account_switcher"; private final DialogInterface.OnClickListener mAccountChangedListener = new AccountChangedListener(); private final Preference.OnPreferenceClickListener mSyncNowListener = new SyncNowListener(); + private final Preference.OnPreferenceClickListener mClearSyncDataListener = + new ClearSyncDataListener(); @Override public void onCreate(final Bundle icicle) { @@ -86,13 +89,18 @@ public final class AccountsSettingsFragment extends SubScreenFragment { removePreference(PREF_ACCCOUNT_SWITCHER); removePreference(PREF_ENABLE_CLOUD_SYNC); removePreference(PREF_SYNC_NOW); + removePreference(PREF_CLEAR_SYNC_DATA); } if (!ProductionFlags.ENABLE_PERSONAL_DICTIONARY_SYNC) { removePreference(PREF_ENABLE_CLOUD_SYNC); removePreference(PREF_SYNC_NOW); + removePreference(PREF_CLEAR_SYNC_DATA); } else { final Preference syncNowPreference = findPreference(PREF_SYNC_NOW); syncNowPreference.setOnPreferenceClickListener(mSyncNowListener); + + final Preference clearSyncDataPreference = findPreference(PREF_CLEAR_SYNC_DATA); + clearSyncDataPreference.setOnPreferenceClickListener(mClearSyncDataListener); } } @@ -136,7 +144,7 @@ public final class AccountsSettingsFragment extends SubScreenFragment { final String[] accountsForLogin = LoginAccountUtils.getAccountsForLogin(context); accountSwitcher.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override - public boolean onPreferenceClick(Preference preference) { + public boolean onPreferenceClick(final Preference preference) { if (accountsForLogin.length == 0) { // TODO: Handle account addition. Toast.makeText(getActivity(), getString(R.string.account_select_cancel), @@ -229,7 +237,7 @@ public final class AccountsSettingsFragment extends SubScreenFragment { */ class AccountChangedListener implements DialogInterface.OnClickListener { @Override - public void onClick(DialogInterface dialog, int which) { + public void onClick(final DialogInterface dialog, final int which) { final String oldAccount = getSignedInAccountName(); switch (which) { case DialogInterface.BUTTON_POSITIVE: // Signed in @@ -263,4 +271,30 @@ public final class AccountsSettingsFragment extends SubScreenFragment { return true; } } + + /** + * Listener that initiates the process of deleting user's data from the cloud. + */ + class ClearSyncDataListener implements Preference.OnPreferenceClickListener { + @Override + public boolean onPreferenceClick(final Preference preference) { + final AlertDialog confirmationDialog = new AlertDialog.Builder(getActivity()) + .setTitle(R.string.clear_sync_data_title) + .setMessage(R.string.clear_sync_data_confirmation) + .setPositiveButton(R.string.clear_sync_data_ok, + new DialogInterface.OnClickListener() { + @Override + public void onClick(final DialogInterface dialog, final int which) { + if (which == DialogInterface.BUTTON_POSITIVE) { + AccountStateChangedListener.forceDelete( + getSignedInAccountName()); + } + } + }) + .setNegativeButton(R.string.clear_sync_data_cancel, null /* OnClickListener */) + .create(); + confirmationDialog.show(); + return true; + } + } } diff --git a/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java b/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java index 2fd257922..c9ecade91 100644 --- a/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java +++ b/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java @@ -36,6 +36,10 @@ public final class AutoCorrectionUtils { if (suggestion.isKindOf(SuggestedWordInfo.KIND_WHITELIST)) { return true; } + // TODO: return suggestion.isAprapreateForAutoCorrection(); + if (!suggestion.isAprapreateForAutoCorrection()) { + return false; + } final int autoCorrectionSuggestionScore = suggestion.mScore; // TODO: when the normalized score of the first suggestion is nearly equals to // the normalized score of the second suggestion, behave less aggressive. diff --git a/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java b/java/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtils.java index 8ed80107a..fa1583b7a 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java +++ b/java/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtils.java @@ -14,12 +14,11 @@ * limitations under the License. */ -package com.android.inputmethod.keyboard.internal; +package com.android.inputmethod.latin.utils; import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.latin.RichInputMethodSubtype; -import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import java.util.Collections; import java.util.List; @@ -30,21 +29,26 @@ import javax.annotation.Nonnull; /** * This class determines that the language name on the spacebar should be displayed in what format. */ -public final class LanguageOnSpacebarHelper { +public final class LanguageOnSpacebarUtils { public static final int FORMAT_TYPE_NONE = 0; public static final int FORMAT_TYPE_LANGUAGE_ONLY = 1; public static final int FORMAT_TYPE_FULL_LOCALE = 2; public static final int FORMAT_TYPE_MULTIPLE = 3; - private List<InputMethodSubtype> mEnabledSubtypes = Collections.emptyList(); - private boolean mIsSystemLanguageSameAsInputLanguage; + private static List<InputMethodSubtype> sEnabledSubtypes = Collections.emptyList(); + private static boolean sIsSystemLanguageSameAsInputLanguage; - public int getLanguageOnSpacebarFormatType(@Nonnull final RichInputMethodSubtype subtype) { + private LanguageOnSpacebarUtils() { + // This utility class is not publicly instantiable. + } + + public static int getLanguageOnSpacebarFormatType( + @Nonnull final RichInputMethodSubtype subtype) { if (subtype.isNoLanguage()) { return FORMAT_TYPE_FULL_LOCALE; } // Only this subtype is enabled and equals to the system locale. - if (mEnabledSubtypes.size() < 2 && mIsSystemLanguageSameAsInputLanguage) { + if (sEnabledSubtypes.size() < 2 && sIsSystemLanguageSameAsInputLanguage) { return FORMAT_TYPE_NONE; } final Locale[] locales = subtype.getLocales(); @@ -54,7 +58,7 @@ public final class LanguageOnSpacebarHelper { final String keyboardLanguage = locales[0].getLanguage(); final String keyboardLayout = subtype.getKeyboardLayoutSetName(); int sameLanguageAndLayoutCount = 0; - for (final InputMethodSubtype ims : mEnabledSubtypes) { + for (final InputMethodSubtype ims : sEnabledSubtypes) { final String language = SubtypeLocaleUtils.getSubtypeLocale(ims).getLanguage(); if (keyboardLanguage.equals(language) && keyboardLayout.equals( SubtypeLocaleUtils.getKeyboardLayoutSetName(ims))) { @@ -67,30 +71,30 @@ public final class LanguageOnSpacebarHelper { : FORMAT_TYPE_LANGUAGE_ONLY; } - public void onUpdateEnabledSubtypes(@Nonnull final List<InputMethodSubtype> enabledSubtypes) { - mEnabledSubtypes = enabledSubtypes; + public static void setEnabledSubtypes(@Nonnull final List<InputMethodSubtype> enabledSubtypes) { + sEnabledSubtypes = enabledSubtypes; } - public void onSubtypeChanged(@Nonnull final RichInputMethodSubtype subtype, + public static void onSubtypeChanged(@Nonnull final RichInputMethodSubtype subtype, final boolean implicitlyEnabledSubtype, @Nonnull final Locale systemLocale) { final Locale[] newLocales = subtype.getLocales(); if (newLocales.length > 1) { // In multi-locales mode, the system language is never the same as the input language // because there is no single input language. - mIsSystemLanguageSameAsInputLanguage = false; + sIsSystemLanguageSameAsInputLanguage = false; return; } final Locale newLocale = newLocales[0]; if (systemLocale.equals(newLocale)) { - mIsSystemLanguageSameAsInputLanguage = true; + sIsSystemLanguageSameAsInputLanguage = true; return; } if (!systemLocale.getLanguage().equals(newLocale.getLanguage())) { - mIsSystemLanguageSameAsInputLanguage = false; + sIsSystemLanguageSameAsInputLanguage = false; return; } // If the subtype is enabled explicitly, the language name should be displayed even when // the keyboard language and the system language are equal. - mIsSystemLanguageSameAsInputLanguage = implicitlyEnabledSubtype; + sIsSystemLanguageSameAsInputLanguage = implicitlyEnabledSubtype; } } diff --git a/java/src/com/android/inputmethod/latin/utils/NetworkConnectivityUtils.java b/java/src/com/android/inputmethod/latin/utils/NetworkConnectivityUtils.java new file mode 100644 index 000000000..101c55067 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/utils/NetworkConnectivityUtils.java @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin.utils; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + +import javax.annotation.Nonnull; + +/** + * This class keeps track of the network connectivity state by receiving the system intent + * {@link ConnectivityManager#CONNECTIVITY_ACTION}, and invokes an registered call back to notify + * changes of the network connectivity state. + */ +public final class NetworkConnectivityUtils { + private static NetworkConnectivityReceiver sNetworkConnectivityReceiver; + + public interface NetworkStateChangeListener { + /** + * Called when the network connectivity state has changed. + */ + public void onNetworkStateChanged(); + } + + private static class NetworkConnectivityReceiver extends BroadcastReceiver { + @Nonnull + private final NetworkStateChangeListener mListener; + private boolean mIsNetworkConnected; + + public NetworkConnectivityReceiver(@Nonnull final NetworkStateChangeListener listener, + final boolean isNetworkConnected) { + mListener = listener; + mIsNetworkConnected = isNetworkConnected; + } + + public synchronized boolean isNetworkConnected() { + return mIsNetworkConnected; + } + + @Override + public void onReceive(final Context context, final Intent intent) { + final String action = intent.getAction(); + if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { + final boolean noConnection = intent.getBooleanExtra( + ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); + synchronized (this) { + mIsNetworkConnected = !noConnection; + } + mListener.onNetworkStateChanged(); + } + } + } + + private NetworkConnectivityUtils() { + // This utility class is not publicly instantiable. + } + + public static void onCreate(@Nonnull final Context context, + @Nonnull final NetworkStateChangeListener listener) { + final ConnectivityManager connectivityManager = + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + final NetworkInfo info = connectivityManager.getActiveNetworkInfo(); + final boolean isNetworkConnected = (info != null && info.isConnected()); + + // Register {@link BroadcastReceiver} for the network connectivity state change. + final NetworkConnectivityReceiver receiver = new NetworkConnectivityReceiver( + listener, isNetworkConnected); + final IntentFilter filter = new IntentFilter(); + filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + context.registerReceiver(receiver, filter); + + sNetworkConnectivityReceiver = receiver; + } + + public static void onDestroy(final Context context) { + context.unregisterReceiver(sNetworkConnectivityReceiver); + } + + public static boolean isNetworkConnected() { + final NetworkConnectivityReceiver receiver = sNetworkConnectivityReceiver; + return receiver != null && receiver.isNetworkConnected(); + } +} diff --git a/native/jni/NativeFileList.mk b/native/jni/NativeFileList.mk index 55bb68344..0be7153d6 100644 --- a/native/jni/NativeFileList.mk +++ b/native/jni/NativeFileList.mk @@ -30,8 +30,7 @@ LATIN_IME_CORE_SRC_FILES := \ dictionary_utils.cpp \ digraph_utils.cpp \ error_type_utils.cpp \ - multi_bigram_map.cpp \ - property/word_property.cpp) \ + multi_bigram_map.cpp) \ $(addprefix suggest/core/layout/, \ additional_proximity_chars.cpp \ proximity_info.cpp \ diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index 9c065e0d1..8f1e35e0f 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -351,10 +351,9 @@ static void latinime_BinaryDictionary_getWordProperty(JNIEnv *env, jclass clazz, } const WordProperty wordProperty = dictionary->getWordProperty( CodePointArrayView(wordCodePoints, codePointCount)); - wordProperty.outputProperties(env, outCodePoints, outFlags, outProbabilityInfo, + JniDataUtils::outputWordProperty(env, wordProperty, outCodePoints, outFlags, outProbabilityInfo, outNgramPrevWordsArray, outNgramPrevWordIsBeginningOfSentenceArray, - outNgramTargets, outNgramProbabilityInfo, outShortcutTargets, - outShortcutProbabilities); + outNgramTargets, outNgramProbabilityInfo, outShortcutTargets, outShortcutProbabilities); } static bool latinime_BinaryDictionary_addUnigramEntry(JNIEnv *env, jclass clazz, jlong dict, diff --git a/native/jni/src/suggest/core/dictionary/dictionary.h b/native/jni/src/suggest/core/dictionary/dictionary.h index a5e986d15..b1774371b 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.h +++ b/native/jni/src/suggest/core/dictionary/dictionary.h @@ -60,6 +60,7 @@ class Dictionary { static const int KIND_FLAG_POSSIBLY_OFFENSIVE = 0x80000000; static const int KIND_FLAG_EXACT_MATCH = 0x40000000; static const int KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION = 0x20000000; + static const int KIND_FLAG_APPROPRIATE_FOR_AUTOCORRECTION = 0x10000000; Dictionary(JNIEnv *env, DictionaryStructureWithBufferPolicy::StructurePolicyPtr dictionaryStructureWithBufferPolicy); diff --git a/native/jni/src/suggest/core/dictionary/error_type_utils.cpp b/native/jni/src/suggest/core/dictionary/error_type_utils.cpp index 8f07ce275..61093e174 100644 --- a/native/jni/src/suggest/core/dictionary/error_type_utils.cpp +++ b/native/jni/src/suggest/core/dictionary/error_type_utils.cpp @@ -21,13 +21,14 @@ namespace latinime { const ErrorTypeUtils::ErrorType ErrorTypeUtils::NOT_AN_ERROR = 0x0; const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_WRONG_CASE = 0x1; const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_MISSING_ACCENT = 0x2; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_WRONG_ACCENT = 0x4; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_DIGRAPH = 0x8; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::INTENTIONAL_OMISSION = 0x10; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::EDIT_CORRECTION = 0x20; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::PROXIMITY_CORRECTION = 0x40; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::COMPLETION = 0x80; -const ErrorTypeUtils::ErrorType ErrorTypeUtils::NEW_WORD = 0x100; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_MISSING_EXPLICIT_ACCENT = 0x4; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_WRONG_ACCENT = 0x8; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_DIGRAPH = 0x10; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::INTENTIONAL_OMISSION = 0x20; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::EDIT_CORRECTION = 0x40; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::PROXIMITY_CORRECTION = 0x80; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::COMPLETION = 0x100; +const ErrorTypeUtils::ErrorType ErrorTypeUtils::NEW_WORD = 0x200; const ErrorTypeUtils::ErrorType ErrorTypeUtils::ERRORS_TREATED_AS_AN_EXACT_MATCH = NOT_AN_ERROR | MATCH_WITH_WRONG_CASE | MATCH_WITH_MISSING_ACCENT | MATCH_WITH_DIGRAPH; diff --git a/native/jni/src/suggest/core/dictionary/error_type_utils.h b/native/jni/src/suggest/core/dictionary/error_type_utils.h index e92c509fa..75111ba75 100644 --- a/native/jni/src/suggest/core/dictionary/error_type_utils.h +++ b/native/jni/src/suggest/core/dictionary/error_type_utils.h @@ -32,6 +32,7 @@ class ErrorTypeUtils { static const ErrorType NOT_AN_ERROR; static const ErrorType MATCH_WITH_WRONG_CASE; static const ErrorType MATCH_WITH_MISSING_ACCENT; + static const ErrorType MATCH_WITH_MISSING_EXPLICIT_ACCENT; static const ErrorType MATCH_WITH_WRONG_ACCENT; static const ErrorType MATCH_WITH_DIGRAPH; // Treat error as an intentional omission when the CorrectionType is omission and the node can @@ -61,6 +62,10 @@ class ErrorTypeUtils { & ~ERRORS_TREATED_AS_AN_EXACT_MATCH_WITH_INTENTIONAL_OMISSION) == 0; } + static bool isMissingExplicitAccent(const ErrorType errorType) { + return (errorType & MATCH_WITH_MISSING_EXPLICIT_ACCENT) != 0; + } + static bool isEditCorrectionError(const ErrorType errorType) { return (errorType & EDIT_CORRECTION) != 0; } diff --git a/native/jni/src/suggest/core/dictionary/property/word_property.cpp b/native/jni/src/suggest/core/dictionary/property/word_property.cpp deleted file mode 100644 index 019f0880f..000000000 --- a/native/jni/src/suggest/core/dictionary/property/word_property.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "suggest/core/dictionary/property/word_property.h" - -#include "utils/jni_data_utils.h" -#include "suggest/core/dictionary/property/historical_info.h" - -namespace latinime { - -void WordProperty::outputProperties(JNIEnv *const env, jintArray outCodePoints, - jbooleanArray outFlags, jintArray outProbabilityInfo, - jobject outNgramPrevWordsArray, jobject outNgramPrevWordIsBeginningOfSentenceArray, - jobject outNgramTargets, jobject outNgramProbabilities, jobject outShortcutTargets, - jobject outShortcutProbabilities) const { - JniDataUtils::outputCodePoints(env, outCodePoints, 0 /* start */, - MAX_WORD_LENGTH /* maxLength */, mCodePoints.data(), mCodePoints.size(), - false /* needsNullTermination */); - jboolean flags[] = {mUnigramProperty.isNotAWord(), mUnigramProperty.isPossiblyOffensive(), - !mNgrams.empty(), mUnigramProperty.hasShortcuts(), - mUnigramProperty.representsBeginningOfSentence()}; - env->SetBooleanArrayRegion(outFlags, 0 /* start */, NELEMS(flags), flags); - const HistoricalInfo &historicalInfo = mUnigramProperty.getHistoricalInfo(); - int probabilityInfo[] = {mUnigramProperty.getProbability(), historicalInfo.getTimestamp(), - historicalInfo.getLevel(), historicalInfo.getCount()}; - env->SetIntArrayRegion(outProbabilityInfo, 0 /* start */, NELEMS(probabilityInfo), - probabilityInfo); - - jclass integerClass = env->FindClass("java/lang/Integer"); - jmethodID intToIntegerConstructorId = env->GetMethodID(integerClass, "<init>", "(I)V"); - jclass arrayListClass = env->FindClass("java/util/ArrayList"); - jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z"); - - // Output ngrams. - jclass intArrayClass = env->FindClass("[I"); - for (const auto &ngramProperty : mNgrams) { - const NgramContext *const ngramContext = ngramProperty.getNgramContext(); - jobjectArray prevWordWordCodePointsArray = env->NewObjectArray( - ngramContext->getPrevWordCount(), intArrayClass, nullptr); - jbooleanArray prevWordIsBeginningOfSentenceArray = - env->NewBooleanArray(ngramContext->getPrevWordCount()); - for (size_t i = 0; i < ngramContext->getPrevWordCount(); ++i) { - const CodePointArrayView codePoints = ngramContext->getNthPrevWordCodePoints(i + 1); - jintArray prevWordCodePoints = env->NewIntArray(codePoints.size()); - JniDataUtils::outputCodePoints(env, prevWordCodePoints, 0 /* start */, - codePoints.size(), codePoints.data(), codePoints.size(), - false /* needsNullTermination */); - env->SetObjectArrayElement(prevWordWordCodePointsArray, i, prevWordCodePoints); - env->DeleteLocalRef(prevWordCodePoints); - JniDataUtils::putBooleanToArray(env, prevWordIsBeginningOfSentenceArray, i, - ngramContext->isNthPrevWordBeginningOfSentence(i + 1)); - } - env->CallBooleanMethod(outNgramPrevWordsArray, addMethodId, prevWordWordCodePointsArray); - env->CallBooleanMethod(outNgramPrevWordIsBeginningOfSentenceArray, addMethodId, - prevWordIsBeginningOfSentenceArray); - env->DeleteLocalRef(prevWordWordCodePointsArray); - env->DeleteLocalRef(prevWordIsBeginningOfSentenceArray); - - const std::vector<int> *const targetWordCodePoints = ngramProperty.getTargetCodePoints(); - jintArray targetWordCodePointArray = env->NewIntArray(targetWordCodePoints->size()); - JniDataUtils::outputCodePoints(env, targetWordCodePointArray, 0 /* start */, - targetWordCodePoints->size(), targetWordCodePoints->data(), - targetWordCodePoints->size(), false /* needsNullTermination */); - env->CallBooleanMethod(outNgramTargets, addMethodId, targetWordCodePointArray); - env->DeleteLocalRef(targetWordCodePointArray); - - const HistoricalInfo &ngramHistoricalInfo = ngramProperty.getHistoricalInfo(); - int bigramProbabilityInfo[] = {ngramProperty.getProbability(), - ngramHistoricalInfo.getTimestamp(), ngramHistoricalInfo.getLevel(), - ngramHistoricalInfo.getCount()}; - jintArray bigramProbabilityInfoArray = env->NewIntArray(NELEMS(bigramProbabilityInfo)); - env->SetIntArrayRegion(bigramProbabilityInfoArray, 0 /* start */, - NELEMS(bigramProbabilityInfo), bigramProbabilityInfo); - env->CallBooleanMethod(outNgramProbabilities, addMethodId, bigramProbabilityInfoArray); - env->DeleteLocalRef(bigramProbabilityInfoArray); - } - - // Output shortcuts. - for (const auto &shortcut : mUnigramProperty.getShortcuts()) { - const std::vector<int> *const targetCodePoints = shortcut.getTargetCodePoints(); - jintArray shortcutTargetCodePointArray = env->NewIntArray(targetCodePoints->size()); - JniDataUtils::outputCodePoints(env, shortcutTargetCodePointArray, 0 /* start */, - targetCodePoints->size(), targetCodePoints->data(), targetCodePoints->size(), - false /* needsNullTermination */); - env->CallBooleanMethod(outShortcutTargets, addMethodId, shortcutTargetCodePointArray); - env->DeleteLocalRef(shortcutTargetCodePointArray); - jobject integerProbability = env->NewObject(integerClass, intToIntegerConstructorId, - shortcut.getProbability()); - env->CallBooleanMethod(outShortcutProbabilities, addMethodId, integerProbability); - env->DeleteLocalRef(integerProbability); - } - env->DeleteLocalRef(integerClass); - env->DeleteLocalRef(arrayListClass); -} - -} // namespace latinime diff --git a/native/jni/src/suggest/core/dictionary/property/word_property.h b/native/jni/src/suggest/core/dictionary/property/word_property.h index d4db3f09f..9efc7f304 100644 --- a/native/jni/src/suggest/core/dictionary/property/word_property.h +++ b/native/jni/src/suggest/core/dictionary/property/word_property.h @@ -20,7 +20,6 @@ #include <vector> #include "defines.h" -#include "jni.h" #include "suggest/core/dictionary/property/ngram_property.h" #include "suggest/core/dictionary/property/unigram_property.h" #include "utils/int_array_view.h" @@ -39,12 +38,6 @@ class WordProperty { : mCodePoints(std::move(codePoints)), mUnigramProperty(unigramProperty), mNgrams(ngrams) {} - void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags, - jintArray outProbabilityInfo, jobject outNgramPrevWordsArray, - jobject outNgramPrevWordIsBeginningOfSentenceArray, jobject outNgramTargets, - jobject outNgramProbabilities, jobject outShortcutTargets, - jobject outShortcutProbabilities) const; - const CodePointArrayView getCodePoints() const { return CodePointArrayView(mCodePoints); } diff --git a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp index 74db95953..1aff72952 100644 --- a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp +++ b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp @@ -144,11 +144,16 @@ const int SuggestionsOutputUtils::MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT = 16; const bool isExactMatchWithIntentionalOmission = ErrorTypeUtils::isExactMatchWithIntentionalOmission( terminalDicNode->getContainedErrorTypes()); + // TODO: Decide whether the word should be auto-corrected or not here. + const bool isAppropriateForAutoCorrection = !ErrorTypeUtils::isMissingExplicitAccent( + terminalDicNode->getContainedErrorTypes()); const int outputTypeFlags = (wordAttributes.isPossiblyOffensive() ? Dictionary::KIND_FLAG_POSSIBLY_OFFENSIVE : 0) | ((isExactMatch && boostExactMatches) ? Dictionary::KIND_FLAG_EXACT_MATCH : 0) | (isExactMatchWithIntentionalOmission ? - Dictionary::KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION : 0); + Dictionary::KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION : 0) + | (isAppropriateForAutoCorrection ? + Dictionary::KIND_FLAG_APPROPRIATE_FOR_AUTOCORRECTION : 0); // Entries that are blacklisted or do not represent a word should not be output. const bool isValidWord = !(wordAttributes.isBlacklisted() || wordAttributes.isNotAWord()); diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp index 2bdf07752..7bda3dc95 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp @@ -16,7 +16,6 @@ #include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h" -#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h" #include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h" namespace latinime { diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/trie_map.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/trie_map.cpp index 39f417ebb..b7ef2b9bd 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/utils/trie_map.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/utils/trie_map.cpp @@ -79,6 +79,9 @@ int TrieMap::getNextLevelBitmapEntryIndex(const int key, const int bitmapEntryIn } // Create a value entry and a bitmap entry. const int valueEntryIndex = allocateTable(TERMINAL_LINKED_ENTRY_COUNT); + if (valueEntryIndex == INVALID_INDEX) { + return INVALID_INDEX; + } if (!writeEntry(Entry(0, terminalEntry.getValue()), valueEntryIndex)) { return INVALID_INDEX; } @@ -195,6 +198,9 @@ bool TrieMap::writeValue(const uint64_t value, const int terminalEntryIndex) { } // Create value entry and write value. const int valueEntryIndex = allocateTable(TERMINAL_LINKED_ENTRY_COUNT); + if (valueEntryIndex == INVALID_INDEX) { + return false; + } if (!writeEntry(Entry(value >> (FIELD1_SIZE * CHAR_BIT), value), valueEntryIndex)) { return false; } diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp index db7a39efb..a0e54115d 100644 --- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp +++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp @@ -17,6 +17,7 @@ #include "suggest/policyimpl/typing/typing_weighting.h" #include "suggest/core/dicnode/dic_node.h" +#include "suggest/core/layout/proximity_info.h" #include "suggest/policyimpl/typing/scoring_params.h" namespace latinime { @@ -39,6 +40,8 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor const int primaryCodePoint = pInfoState->getPrimaryCodePointAt( dicNode->getInputIndex(0)); const int nodeCodePoint = dicNode->getNodeCodePoint(); + const int keyIndex = traverseSession->getProximityInfo()->getKeyIndexOf( + primaryCodePoint); // TODO: Check whether the input code point is on the keyboard. if (primaryCodePoint == nodeCodePoint) { // Node code point is same as original code point on the keyboard. @@ -53,6 +56,9 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor } else if (CharUtils::toBaseCodePoint(primaryCodePoint) == CharUtils::toBaseCodePoint(nodeCodePoint)) { // Base code points are the same but the code point is intentionally input. + if (keyIndex == NOT_AN_INDEX) { + return ErrorTypeUtils::MATCH_WITH_MISSING_EXPLICIT_ACCENT; + } return ErrorTypeUtils::MATCH_WITH_WRONG_ACCENT; } else if (CharUtils::toLowerCase(primaryCodePoint) == CharUtils::toBaseLowerCase(nodeCodePoint)) { @@ -61,6 +67,10 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor return ErrorTypeUtils::MATCH_WITH_MISSING_ACCENT | ErrorTypeUtils::MATCH_WITH_WRONG_CASE; } else { + if (keyIndex == NOT_AN_INDEX) { + return ErrorTypeUtils::MATCH_WITH_MISSING_EXPLICIT_ACCENT + | ErrorTypeUtils::MATCH_WITH_WRONG_CASE; + } // Base code points are the same and the cases are different. return ErrorTypeUtils::MATCH_WITH_WRONG_ACCENT | ErrorTypeUtils::MATCH_WITH_WRONG_CASE; diff --git a/native/jni/src/utils/jni_data_utils.cpp b/native/jni/src/utils/jni_data_utils.cpp index 5555293d5..41f0623d8 100644 --- a/native/jni/src/utils/jni_data_utils.cpp +++ b/native/jni/src/utils/jni_data_utils.cpp @@ -16,9 +16,100 @@ #include "utils/jni_data_utils.h" +#include "utils/int_array_view.h" + namespace latinime { const int JniDataUtils::CODE_POINT_REPLACEMENT_CHARACTER = 0xFFFD; const int JniDataUtils::CODE_POINT_NULL = 0; +/* static */ void JniDataUtils::outputWordProperty(JNIEnv *const env, + const WordProperty &wordProperty, jintArray outCodePoints, jbooleanArray outFlags, + jintArray outProbabilityInfo, jobject outNgramPrevWordsArray, + jobject outNgramPrevWordIsBeginningOfSentenceArray, jobject outNgramTargets, + jobject outNgramProbabilities, jobject outShortcutTargets, + jobject outShortcutProbabilities) { + const CodePointArrayView codePoints = wordProperty.getCodePoints(); + JniDataUtils::outputCodePoints(env, outCodePoints, 0 /* start */, + MAX_WORD_LENGTH /* maxLength */, codePoints.data(), codePoints.size(), + false /* needsNullTermination */); + const UnigramProperty &unigramProperty = wordProperty.getUnigramProperty(); + const std::vector<NgramProperty> &ngrams = wordProperty.getNgramProperties(); + jboolean flags[] = {unigramProperty.isNotAWord(), unigramProperty.isPossiblyOffensive(), + !ngrams.empty(), unigramProperty.hasShortcuts(), + unigramProperty.representsBeginningOfSentence()}; + env->SetBooleanArrayRegion(outFlags, 0 /* start */, NELEMS(flags), flags); + const HistoricalInfo &historicalInfo = unigramProperty.getHistoricalInfo(); + int probabilityInfo[] = {unigramProperty.getProbability(), historicalInfo.getTimestamp(), + historicalInfo.getLevel(), historicalInfo.getCount()}; + env->SetIntArrayRegion(outProbabilityInfo, 0 /* start */, NELEMS(probabilityInfo), + probabilityInfo); + + jclass integerClass = env->FindClass("java/lang/Integer"); + jmethodID intToIntegerConstructorId = env->GetMethodID(integerClass, "<init>", "(I)V"); + jclass arrayListClass = env->FindClass("java/util/ArrayList"); + jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z"); + + // Output ngrams. + jclass intArrayClass = env->FindClass("[I"); + for (const auto &ngramProperty : ngrams) { + const NgramContext *const ngramContext = ngramProperty.getNgramContext(); + jobjectArray prevWordWordCodePointsArray = env->NewObjectArray( + ngramContext->getPrevWordCount(), intArrayClass, nullptr); + jbooleanArray prevWordIsBeginningOfSentenceArray = + env->NewBooleanArray(ngramContext->getPrevWordCount()); + for (size_t i = 0; i < ngramContext->getPrevWordCount(); ++i) { + const CodePointArrayView codePoints = ngramContext->getNthPrevWordCodePoints(i + 1); + jintArray prevWordCodePoints = env->NewIntArray(codePoints.size()); + JniDataUtils::outputCodePoints(env, prevWordCodePoints, 0 /* start */, + codePoints.size(), codePoints.data(), codePoints.size(), + false /* needsNullTermination */); + env->SetObjectArrayElement(prevWordWordCodePointsArray, i, prevWordCodePoints); + env->DeleteLocalRef(prevWordCodePoints); + JniDataUtils::putBooleanToArray(env, prevWordIsBeginningOfSentenceArray, i, + ngramContext->isNthPrevWordBeginningOfSentence(i + 1)); + } + env->CallBooleanMethod(outNgramPrevWordsArray, addMethodId, prevWordWordCodePointsArray); + env->CallBooleanMethod(outNgramPrevWordIsBeginningOfSentenceArray, addMethodId, + prevWordIsBeginningOfSentenceArray); + env->DeleteLocalRef(prevWordWordCodePointsArray); + env->DeleteLocalRef(prevWordIsBeginningOfSentenceArray); + + const std::vector<int> *const targetWordCodePoints = ngramProperty.getTargetCodePoints(); + jintArray targetWordCodePointArray = env->NewIntArray(targetWordCodePoints->size()); + JniDataUtils::outputCodePoints(env, targetWordCodePointArray, 0 /* start */, + targetWordCodePoints->size(), targetWordCodePoints->data(), + targetWordCodePoints->size(), false /* needsNullTermination */); + env->CallBooleanMethod(outNgramTargets, addMethodId, targetWordCodePointArray); + env->DeleteLocalRef(targetWordCodePointArray); + + const HistoricalInfo &ngramHistoricalInfo = ngramProperty.getHistoricalInfo(); + int bigramProbabilityInfo[] = {ngramProperty.getProbability(), + ngramHistoricalInfo.getTimestamp(), ngramHistoricalInfo.getLevel(), + ngramHistoricalInfo.getCount()}; + jintArray bigramProbabilityInfoArray = env->NewIntArray(NELEMS(bigramProbabilityInfo)); + env->SetIntArrayRegion(bigramProbabilityInfoArray, 0 /* start */, + NELEMS(bigramProbabilityInfo), bigramProbabilityInfo); + env->CallBooleanMethod(outNgramProbabilities, addMethodId, bigramProbabilityInfoArray); + env->DeleteLocalRef(bigramProbabilityInfoArray); + } + + // Output shortcuts. + for (const auto &shortcut : unigramProperty.getShortcuts()) { + const std::vector<int> *const targetCodePoints = shortcut.getTargetCodePoints(); + jintArray shortcutTargetCodePointArray = env->NewIntArray(targetCodePoints->size()); + JniDataUtils::outputCodePoints(env, shortcutTargetCodePointArray, 0 /* start */, + targetCodePoints->size(), targetCodePoints->data(), targetCodePoints->size(), + false /* needsNullTermination */); + env->CallBooleanMethod(outShortcutTargets, addMethodId, shortcutTargetCodePointArray); + env->DeleteLocalRef(shortcutTargetCodePointArray); + jobject integerProbability = env->NewObject(integerClass, intToIntegerConstructorId, + shortcut.getProbability()); + env->CallBooleanMethod(outShortcutProbabilities, addMethodId, integerProbability); + env->DeleteLocalRef(integerProbability); + } + env->DeleteLocalRef(integerClass); + env->DeleteLocalRef(arrayListClass); +} + } // namespace latinime diff --git a/native/jni/src/utils/jni_data_utils.h b/native/jni/src/utils/jni_data_utils.h index a259e1cd0..01295859c 100644 --- a/native/jni/src/utils/jni_data_utils.h +++ b/native/jni/src/utils/jni_data_utils.h @@ -21,6 +21,7 @@ #include "defines.h" #include "jni.h" +#include "suggest/core/dictionary/property/word_property.h" #include "suggest/core/session/ngram_context.h" #include "suggest/core/policy/dictionary_header_structure_policy.h" #include "suggest/policyimpl/dictionary/header/header_read_write_utils.h" @@ -140,6 +141,12 @@ class JniDataUtils { env->SetFloatArrayRegion(array, index, 1 /* len */, &value); } + static void outputWordProperty(JNIEnv *const env, const WordProperty &wordProperty, + jintArray outCodePoints, jbooleanArray outFlags, jintArray outProbabilityInfo, + jobject outNgramPrevWordsArray, jobject outNgramPrevWordIsBeginningOfSentenceArray, + jobject outNgramTargets, jobject outNgramProbabilities, jobject outShortcutTargets, + jobject outShortcutProbabilities); + private: DISALLOW_IMPLICIT_CONSTRUCTORS(JniDataUtils); diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java index a84df28c9..d83c4a55b 100644 --- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java @@ -25,15 +25,11 @@ import android.util.Log; import com.android.inputmethod.latin.ExpandableBinaryDictionary; import com.android.inputmethod.latin.NgramContext; import com.android.inputmethod.latin.NgramContext.WordInfo; -import com.android.inputmethod.latin.common.FileUtils; import com.android.inputmethod.latin.settings.LocalSettingsConstants; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; import com.android.inputmethod.latin.utils.DistracterFilter; import java.io.File; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Random; @@ -48,34 +44,13 @@ import javax.annotation.Nullable; public class UserHistoryDictionaryTests extends AndroidTestCase { private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName(); private static final int WAIT_FOR_WRITING_FILE_IN_MILLISECONDS = 3000; - private static final String TEST_LOCALE_PREFIX = "test_"; private static final String TEST_ACCOUNT = "account@example.com"; - private static final String[] CHARACTERS = { - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" - }; - private int mCurrentTime = 0; private SharedPreferences mPrefs; private String mLastKnownAccount = null; - private void removeAllTestDictFiles() { - final Locale dummyLocale = new Locale(TEST_LOCALE_PREFIX); - final String dictName = UserHistoryDictionary.getUserHistoryDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); - final File dictFile = ExpandableBinaryDictionary.getDictFile( - mContext, dictName, null /* dictFile */); - final FilenameFilter filenameFilter = new FilenameFilter() { - @Override - public boolean accept(final File dir, final String filename) { - return filename.startsWith(UserHistoryDictionary.NAME + "." + TEST_LOCALE_PREFIX); - } - }; - FileUtils.deleteFilteredFiles(dictFile.getParentFile(), filenameFilter); - } - private static void printAllFiles(final File dir) { Log.d(TAG, dir.getAbsolutePath()); for (final File file : dir.listFiles()) { @@ -83,7 +58,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { } } - private static void checkExistenceAndRemoveDictFile(final UserHistoryDictionary dict, + private static void assertDictionaryExists(final UserHistoryDictionary dict, final File dictFile) { Log.d(TAG, "waiting for writing ..."); dict.waitAllTasksForTests(); @@ -97,12 +72,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { Log.e(TAG, "Interrupted during waiting for writing the dict file."); } } - assertTrue("check exisiting of " + dictFile, dictFile.exists()); - FileUtils.deleteRecursively(dictFile); - } - - private static Locale getDummyLocale(final String name) { - return new Locale(TEST_LOCALE_PREFIX + name + System.currentTimeMillis()); + assertTrue("Following dictionary file doesn't exist: " + dictFile, dictFile.exists()); } @Override @@ -115,12 +85,14 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { updateAccountName(TEST_ACCOUNT); resetCurrentTimeForTestMode(); - removeAllTestDictFiles(); + UserHistoryDictionaryTestsHelper.removeAllTestDictFiles( + UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, mContext); } @Override protected void tearDown() throws Exception { - removeAllTestDictFiles(); + UserHistoryDictionaryTestsHelper.removeAllTestDictFiles( + UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, mContext); stopTestModeInNativeCode(); // Restore the account that was present before running the test. @@ -165,58 +137,6 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { } /** - * Generates a random word. - */ - private static String generateWord(final int value) { - final int lengthOfChars = CHARACTERS.length; - final StringBuilder builder = new StringBuilder(); - long lvalue = Math.abs((long)value); - while (lvalue > 0) { - builder.append(CHARACTERS[(int)(lvalue % lengthOfChars)]); - lvalue /= lengthOfChars; - } - return builder.toString(); - } - - private static List<String> generateWords(final int number, final Random random) { - final HashSet<String> wordSet = new HashSet<>(); - while (wordSet.size() < number) { - wordSet.add(generateWord(random.nextInt())); - } - return new ArrayList<>(wordSet); - } - - private static void addToDict(final UserHistoryDictionary dict, final List<String> words, - final int timestamp) { - NgramContext ngramContext = NgramContext.EMPTY_PREV_WORDS_INFO; - for (final String word : words) { - UserHistoryDictionary.addToDictionary(dict, ngramContext, word, true, timestamp, - DistracterFilter.EMPTY_DISTRACTER_FILTER); - ngramContext = ngramContext.getNextNgramContext(new WordInfo(word)); - } - } - - /** - * @param checkContents if true, checks whether written words are actually in the dictionary - * or not. - */ - private void addAndWriteRandomWords(final UserHistoryDictionary dict, - final int numberOfWords, final Random random, final boolean checkContents) { - final List<String> words = generateWords(numberOfWords, random); - // Add random words to the user history dictionary. - addToDict(dict, words, mCurrentTime); - if (checkContents) { - dict.waitAllTasksForTests(); - for (int i = 0; i < numberOfWords; ++i) { - final String word = words.get(i); - assertTrue(dict.isInDictionary(word)); - } - } - // write to file. - dict.close(); - } - - /** * Clear all entries in the user history dictionary. * @param dict the user history dictionary. */ @@ -230,19 +150,19 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { public void testRandomWords() { Log.d(TAG, "This test can be used for profiling."); Log.d(TAG, "Usage: please set UserHistoryDictionary.PROFILE_SAVE_RESTORE to true."); - final Locale dummyLocale = getDummyLocale("random_words"); + final Locale dummyLocale = UserHistoryDictionaryTestsHelper.getDummyLocale("random_words"); final String dictName = UserHistoryDictionary.getUserHistoryDictName( UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); final File dictFile = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( getContext(), dummyLocale, TEST_ACCOUNT); - + clearHistory(dict); final int numberOfWords = 1000; final Random random = new Random(123456); - clearHistory(dict); - addAndWriteRandomWords(dict, numberOfWords, random, true /* checksContents */); - checkExistenceAndRemoveDictFile(dict, dictFile); + assertTrue(UserHistoryDictionaryTestsHelper.addAndWriteRandomWords( + dict, numberOfWords, random, true /* checksContents */, mCurrentTime)); + assertDictionaryExists(dict, dictFile); } public void testStressTestForSwitchingLanguagesAndAddingWords() { @@ -258,7 +178,8 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { // Create filename suffixes for this test. for (int i = 0; i < numberOfLanguages; i++) { - final Locale dummyLocale = getDummyLocale("switching_languages" + i); + final Locale dummyLocale = + UserHistoryDictionaryTestsHelper.getDummyLocale("switching_languages" + i); final String dictName = UserHistoryDictionary.getUserHistoryDictName( UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); dictFiles[i] = ExpandableBinaryDictionary.getDictFile( @@ -273,8 +194,11 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { for (int i = 0; i < numberOfLanguageSwitching; i++) { final int index = i % numberOfLanguages; // Switch to dicts[index]. - addAndWriteRandomWords(dicts[index], numberOfWordsInsertedForEachLanguageSwitch, - random, false /* checksContents */); + assertTrue(UserHistoryDictionaryTestsHelper.addAndWriteRandomWords(dicts[index], + numberOfWordsInsertedForEachLanguageSwitch, + random, + false /* checksContents */, + mCurrentTime)); } final long end = System.currentTimeMillis(); @@ -282,13 +206,14 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { + (end - start) + " ms"); } finally { for (int i = 0; i < numberOfLanguages; i++) { - checkExistenceAndRemoveDictFile(dicts[i], dictFiles[i]); + assertDictionaryExists(dicts[i], dictFiles[i]); } } } public void testAddManyWords() { - final Locale dummyLocale = getDummyLocale("many_random_words"); + final Locale dummyLocale = + UserHistoryDictionaryTestsHelper.getDummyLocale("many_random_words"); final String dictName = UserHistoryDictionary.getUserHistoryDictName( UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); final File dictFile = ExpandableBinaryDictionary.getDictFile( @@ -298,23 +223,23 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( getContext(), dummyLocale, TEST_ACCOUNT); clearHistory(dict); - try { - addAndWriteRandomWords(dict, numberOfWords, random, true /* checksContents */); - } finally { - checkExistenceAndRemoveDictFile(dict, dictFile); - } + assertTrue(UserHistoryDictionaryTestsHelper.addAndWriteRandomWords(dict, + numberOfWords, random, true /* checksContents */, mCurrentTime)); + assertDictionaryExists(dict, dictFile); } public void testDecaying() { - final Locale dummyLocale = getDummyLocale("decaying"); + final Locale dummyLocale = UserHistoryDictionaryTestsHelper.getDummyLocale("decaying"); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( getContext(), dummyLocale, TEST_ACCOUNT); - final int numberOfWords = 5000; - final Random random = new Random(123456); resetCurrentTimeForTestMode(); clearHistory(dict); - final List<String> words = generateWords(numberOfWords, random); dict.waitAllTasksForTests(); + + final int numberOfWords = 5000; + final Random random = new Random(123456); + final List<String> words = UserHistoryDictionaryTestsHelper.generateWords(numberOfWords, + random); NgramContext ngramContext = NgramContext.EMPTY_PREV_WORDS_INFO; for (final String word : words) { UserHistoryDictionary.addToDictionary(dict, ngramContext, word, true, mCurrentTime, @@ -329,6 +254,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { for (final String word : words) { assertTrue(dict.isInDictionary(word)); } + // Long term decay results in words removed from the dictionary. forcePassingLongTime(); dict.runGCIfRequired(); dict.waitAllTasksForTests(); diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTestsHelper.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTestsHelper.java new file mode 100644 index 000000000..d394c0faa --- /dev/null +++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTestsHelper.java @@ -0,0 +1,144 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin.personalization; + +import android.content.Context; + +import com.android.inputmethod.latin.NgramContext; +import com.android.inputmethod.latin.NgramContext.WordInfo; +import com.android.inputmethod.latin.common.FileUtils; +import com.android.inputmethod.latin.utils.DistracterFilter; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Random; + +/** + * Utility class for helping while running tests involving {@link UserHistoryDictionary}. + */ +public class UserHistoryDictionaryTestsHelper { + + /** + * Locale prefix for generating dummy locales for tests. + */ + public static final String TEST_LOCALE_PREFIX = "test-"; + + /** + * Characters for generating random words. + */ + private static final String[] CHARACTERS = { + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", + "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" + }; + + /** + * Remove all the test dictionary files created for the given locale. + */ + public static void removeAllTestDictFiles(final String filter, final Context context) { + final FilenameFilter filenameFilter = new FilenameFilter() { + @Override + public boolean accept(final File dir, final String filename) { + return filename.startsWith(UserHistoryDictionary.NAME + "." + filter); + } + }; + FileUtils.deleteFilteredFiles(context.getFilesDir(), filenameFilter); + } + + /** + * Generates and writes random words to dictionary. Caller can be assured + * that the write tasks would be finished; and its success would be reflected + * in the returned boolean. + * + * @param dict {@link UserHistoryDictionary} to which words should be added. + * @param numberOfWords number of words to be added. + * @param random helps generate random words. + * @param checkContents if true, checks whether written words are actually in the dictionary. + * @param currentTime timestamp that would be used for adding the words. + * @returns true if all words have been written to dictionary successfully. + */ + public static boolean addAndWriteRandomWords(final UserHistoryDictionary dict, + final int numberOfWords, final Random random, final boolean checkContents, + final int currentTime) { + final List<String> words = generateWords(numberOfWords, random); + // Add random words to the user history dictionary. + addWordsToDictionary(dict, words, currentTime); + boolean success = true; + if (checkContents) { + dict.waitAllTasksForTests(); + for (int i = 0; i < numberOfWords; ++i) { + final String word = words.get(i); + if (!dict.isInDictionary(word)) { + success = false; + break; + } + } + } + // write to file. + dict.close(); + dict.waitAllTasksForTests(); + return success; + } + + private static void addWordsToDictionary(final UserHistoryDictionary dict, + final List<String> words, final int timestamp) { + NgramContext ngramContext = NgramContext.EMPTY_PREV_WORDS_INFO; + for (final String word : words) { + UserHistoryDictionary.addToDictionary(dict, ngramContext, word, true, timestamp, + DistracterFilter.EMPTY_DISTRACTER_FILTER); + ngramContext = ngramContext.getNextNgramContext(new WordInfo(word)); + } + } + + /** + * Creates unique test locale for using within tests. + */ + public static Locale getDummyLocale(final String name) { + return new Locale(TEST_LOCALE_PREFIX + name + System.currentTimeMillis()); + } + + /** + * Generates random words. + * + * @param numberOfWords number of words to generate. + * @param random salt used for generating random words. + */ + public static List<String> generateWords(final int numberOfWords, final Random random) { + final HashSet<String> wordSet = new HashSet<>(); + while (wordSet.size() < numberOfWords) { + wordSet.add(generateWord(random.nextInt())); + } + return new ArrayList<>(wordSet); + } + + /** + * Generates a random word. + */ + private static String generateWord(final int value) { + final int lengthOfChars = CHARACTERS.length; + final StringBuilder builder = new StringBuilder(); + long lvalue = Math.abs((long)value); + while (lvalue > 0) { + builder.append(CHARACTERS[(int)(lvalue % lengthOfChars)]); + lvalue /= lengthOfChars; + } + return builder.toString(); + } +} diff --git a/tests/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelperTests.java b/tests/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtilsTests.java index 6bb255b01..7f7f493b1 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelperTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtilsTests.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package com.android.inputmethod.keyboard.internal; +package com.android.inputmethod.latin.utils; -import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE; -import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_LANGUAGE_ONLY; -import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_NONE; +import static com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils.FORMAT_TYPE_FULL_LOCALE; +import static com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils.FORMAT_TYPE_LANGUAGE_ONLY; +import static com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils.FORMAT_TYPE_NONE; import android.content.Context; import android.test.AndroidTestCase; @@ -28,6 +28,7 @@ import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.RichInputMethodSubtype; import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils; +import com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import java.util.ArrayList; @@ -36,10 +37,7 @@ import java.util.Locale; import javax.annotation.Nonnull; @SmallTest -public class LanguageOnSpacebarHelperTests extends AndroidTestCase { - private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper = - new LanguageOnSpacebarHelper(); - +public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { private RichInputMethodManager mRichImm; RichInputMethodSubtype EN_US_QWERTY; @@ -84,21 +82,21 @@ public class LanguageOnSpacebarHelperTests extends AndroidTestCase { return new RichInputMethodSubtype(subtype); } - private void enableSubtypes(final RichInputMethodSubtype ... subtypes) { + private static void enableSubtypes(final RichInputMethodSubtype ... subtypes) { final ArrayList<InputMethodSubtype> enabledSubtypes = new ArrayList<>(); for (final RichInputMethodSubtype subtype : subtypes) { enabledSubtypes.add(subtype.getRawSubtype()); } - mLanguageOnSpacebarHelper.onUpdateEnabledSubtypes(enabledSubtypes); + LanguageOnSpacebarUtils.setEnabledSubtypes(enabledSubtypes); } - private void assertFormatType(final RichInputMethodSubtype subtype, + private static void assertFormatType(final RichInputMethodSubtype subtype, final boolean implicitlyEnabledSubtype, final Locale systemLocale, final int expectedFormat) { - mLanguageOnSpacebarHelper.onSubtypeChanged(subtype, implicitlyEnabledSubtype, systemLocale); + LanguageOnSpacebarUtils.onSubtypeChanged(subtype, implicitlyEnabledSubtype, systemLocale); assertEquals(subtype.getLocales()[0] + " implicitly=" + implicitlyEnabledSubtype + " in " + systemLocale, expectedFormat, - mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(subtype)); + LanguageOnSpacebarUtils.getLanguageOnSpacebarFormatType(subtype)); } public void testOneSubtypeImplicitlyEnabled() { |