diff options
100 files changed, 896 insertions, 250 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 6ef4b4e9e..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> 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 9616a26fc..e9b69697a 100644 --- a/java/res/values-gl-rES/strings.xml +++ b/java/res/values-gl-rES/strings.xml @@ -35,6 +35,14 @@ <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 a4f2dd39d..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> 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 8aea853a2..95c96f281 100644 --- a/java/res/values-km-rKH/strings.xml +++ b/java/res/values-km-rKH/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-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 ab4037861..5a49105cd 100644 --- a/java/res/values-my-rMM/strings.xml +++ b/java/res/values-my-rMM/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-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/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java index 59763c0fc..22fd90795 100644 --- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java @@ -39,6 +39,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +import javax.annotation.Nullable; + public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { private static final String[] PROJECTION = {BaseColumns._ID, Contacts.DISPLAY_NAME}; @@ -86,7 +88,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { // Note: This method is called by {@link DictionaryFacilitator} using Java reflection. @ExternallyReferenced public static ContactsBinaryDictionary getDictionary(final Context context, final Locale locale, - final File dictFile, final String dictNamePrefix) { + final File dictFile, final String dictNamePrefix, @Nullable final String account) { return new ContactsBinaryDictionary(context, locale, dictFile, dictNamePrefix + NAME); } diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java index acf9cf10c..b8893a5d8 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java @@ -44,6 +44,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -56,8 +57,16 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; import javax.annotation.Nullable; -// TODO: Consolidate dictionaries in native code. +/** + * Facilitates interaction with different kinds of dictionaries. Provides APIs + * to instantiate and select the correct dictionaries (based on language or account), + * update entries and fetch suggestions. + * + * Currently AndroidSpellCheckerService and LatinIME both use DictionaryFacilitator as + * a client for interacting with dictionaries. + */ public class DictionaryFacilitator { + // TODO: Consolidate dictionaries in native code. public static final String TAG = DictionaryFacilitator.class.getSimpleName(); // HACK: This threshold is being used when adding a capitalized entry in the User History @@ -99,7 +108,7 @@ public class DictionaryFacilitator { private static final String DICT_FACTORY_METHOD_NAME = "getDictionary"; private static final Class<?>[] DICT_FACTORY_METHOD_ARG_TYPES = - new Class[] { Context.class, Locale.class, File.class, String.class }; + new Class[] { Context.class, Locale.class, File.class, String.class, String.class }; private static final String[] SUB_DICT_TYPES = Arrays.copyOfRange(DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS, 1 /* start */, @@ -107,8 +116,8 @@ public class DictionaryFacilitator { /** * Returns whether this facilitator is exactly for this list of locales. + * * @param locales the list of locales to test against - * @return true if this facilitator handles exactly this list of locales, false otherwise */ public boolean isForLocales(final Locale[] locales) { if (locales.length != mDictionaryGroups.length) { @@ -130,33 +139,62 @@ public class DictionaryFacilitator { } /** + * Returns whether this facilitator is exactly for this account. + * + * @param account the account to test against. + */ + public boolean isForAccount(@Nullable final String account) { + for (final DictionaryGroup group : mDictionaryGroups) { + if (!TextUtils.equals(group.mAccount, account)) { + return false; + } + } + return true; + } + + /** * A group of dictionaries that work together for a single language. */ private static class DictionaryGroup { + // TODO: Add null analysis annotations. // TODO: Run evaluation to determine a reasonable value for these constants. The current // values are ad-hoc and chosen without any particular care or methodology. public static final float WEIGHT_FOR_MOST_PROBABLE_LANGUAGE = 1.0f; public static final float WEIGHT_FOR_GESTURING_IN_NOT_MOST_PROBABLE_LANGUAGE = 0.95f; public static final float WEIGHT_FOR_TYPING_IN_NOT_MOST_PROBABLE_LANGUAGE = 0.6f; - public final Locale mLocale; - private Dictionary mMainDict; + /** + * The locale associated with the dictionary group. + */ + @Nullable public final Locale mLocale; + + /** + * The user account associated with the dictionary group. + */ + @Nullable public final String mAccount; + + @Nullable private Dictionary mMainDict; // Confidence that the most probable language is actually the language the user is // typing in. For now, this is simply the number of times a word from this language // has been committed in a row. private int mConfidence = 0; + public float mWeightForTypingInLocale = WEIGHT_FOR_MOST_PROBABLE_LANGUAGE; public float mWeightForGesturingInLocale = WEIGHT_FOR_MOST_PROBABLE_LANGUAGE; public final ConcurrentHashMap<String, ExpandableBinaryDictionary> mSubDictMap = new ConcurrentHashMap<>(); public DictionaryGroup() { - mLocale = null; + this(null /* locale */, null /* mainDict */, null /* account */, + Collections.<String, ExpandableBinaryDictionary>emptyMap() /* subDicts */); } - public DictionaryGroup(final Locale locale, final Dictionary mainDict, + public DictionaryGroup(@Nullable final Locale locale, + @Nullable final Dictionary mainDict, + @Nullable final String account, final Map<String, ExpandableBinaryDictionary> subDicts) { mLocale = locale; + mAccount = account; // The main dictionary can be asynchronously loaded. setMainDict(mainDict); for (final Map.Entry<String, ExpandableBinaryDictionary> entry : subDicts.entrySet()) { @@ -190,10 +228,17 @@ public class DictionaryFacilitator { return mSubDictMap.get(dictType); } - public boolean hasDict(final String dictType) { + public boolean hasDict(final String dictType, @Nullable final String account) { if (Dictionary.TYPE_MAIN.equals(dictType)) { return mMainDict != null; } + if (Dictionary.TYPE_USER_HISTORY.equals(dictType) && + !TextUtils.equals(account, mAccount)) { + // If the dictionary type is user history, & if the account doesn't match, + // return immediately. If the account matches, continue looking it up in the + // sub dictionary map. + return false; + } return mSubDictMap.containsKey(dictType); } @@ -310,7 +355,7 @@ public class DictionaryFacilitator { @Nullable private static ExpandableBinaryDictionary getSubDict(final String dictType, final Context context, final Locale locale, final File dictFile, - final String dictNamePrefix) { + final String dictNamePrefix, @Nullable final String account) { final Class<? extends ExpandableBinaryDictionary> dictClass = DICT_TYPE_TO_CLASS.get(dictType); if (dictClass == null) { @@ -320,7 +365,7 @@ public class DictionaryFacilitator { final Method factoryMethod = dictClass.getMethod(DICT_FACTORY_METHOD_NAME, DICT_FACTORY_METHOD_ARG_TYPES); final Object dict = factoryMethod.invoke(null /* obj */, - new Object[] { context, locale, dictFile, dictNamePrefix }); + new Object[] { context, locale, dictFile, dictNamePrefix, account }); return (ExpandableBinaryDictionary) dict; } catch (final NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { @@ -332,17 +377,19 @@ public class DictionaryFacilitator { public void resetDictionaries(final Context context, final Locale[] newLocales, final boolean useContactsDict, final boolean usePersonalizedDicts, final boolean forceReloadMainDictionary, + @Nullable final String account, final DictionaryInitializationListener listener) { resetDictionariesWithDictNamePrefix(context, newLocales, useContactsDict, - usePersonalizedDicts, forceReloadMainDictionary, listener, "" /* dictNamePrefix */); + usePersonalizedDicts, forceReloadMainDictionary, listener, "" /* dictNamePrefix */, + account); } @Nullable static DictionaryGroup findDictionaryGroupWithLocale(final DictionaryGroup[] dictionaryGroups, final Locale locale) { - for (int i = 0; i < dictionaryGroups.length; ++i) { - if (locale.equals(dictionaryGroups[i].mLocale)) { - return dictionaryGroups[i]; + for (DictionaryGroup dictionaryGroup : dictionaryGroups) { + if (locale.equals(dictionaryGroup.mLocale)) { + return dictionaryGroup; } } return null; @@ -350,11 +397,13 @@ public class DictionaryFacilitator { public void resetDictionariesWithDictNamePrefix(final Context context, final Locale[] newLocales, - final boolean useContactsDict, final boolean usePersonalizedDicts, + final boolean useContactsDict, + final boolean usePersonalizedDicts, final boolean forceReloadMainDictionary, @Nullable final DictionaryInitializationListener listener, - final String dictNamePrefix) { - final HashMap<Locale, ArrayList<String>> existingDictsToCleanup = new HashMap<>(); + final String dictNamePrefix, + @Nullable final String account) { + final HashMap<Locale, ArrayList<String>> existingDictionariesToCleanup = new HashMap<>(); // TODO: Make subDictTypesToUse configurable by resource or a static final list. final HashSet<String> subDictTypesToUse = new HashSet<>(); subDictTypesToUse.add(Dictionary.TYPE_USER); @@ -369,20 +418,20 @@ public class DictionaryFacilitator { // Gather all dictionaries. We'll remove them from the list to clean up later. for (final Locale newLocale : newLocales) { - final ArrayList<String> dictsForLocale = new ArrayList<>(); - existingDictsToCleanup.put(newLocale, dictsForLocale); + final ArrayList<String> dictTypeForLocale = new ArrayList<>(); + existingDictionariesToCleanup.put(newLocale, dictTypeForLocale); final DictionaryGroup currentDictionaryGroupForLocale = findDictionaryGroupWithLocale(mDictionaryGroups, newLocale); if (null == currentDictionaryGroupForLocale) { continue; } for (final String dictType : SUB_DICT_TYPES) { - if (currentDictionaryGroupForLocale.hasDict(dictType)) { - dictsForLocale.add(dictType); + if (currentDictionaryGroupForLocale.hasDict(dictType, account)) { + dictTypeForLocale.add(dictType); } } - if (currentDictionaryGroupForLocale.hasDict(Dictionary.TYPE_MAIN)) { - dictsForLocale.add(Dictionary.TYPE_MAIN); + if (currentDictionaryGroupForLocale.hasDict(Dictionary.TYPE_MAIN, account)) { + dictTypeForLocale.add(Dictionary.TYPE_MAIN); } } @@ -391,34 +440,35 @@ public class DictionaryFacilitator { final Locale newLocale = newLocales[i]; final DictionaryGroup dictionaryGroupForLocale = findDictionaryGroupWithLocale(mDictionaryGroups, newLocale); - final ArrayList<String> dictsToCleanupForLocale = existingDictsToCleanup.get(newLocale); + final ArrayList<String> dictTypesToCleanupForLocale = + existingDictionariesToCleanup.get(newLocale); final boolean noExistingDictsForThisLocale = (null == dictionaryGroupForLocale); final Dictionary mainDict; if (forceReloadMainDictionary || noExistingDictsForThisLocale - || !dictionaryGroupForLocale.hasDict(Dictionary.TYPE_MAIN)) { + || !dictionaryGroupForLocale.hasDict(Dictionary.TYPE_MAIN, account)) { mainDict = null; } else { mainDict = dictionaryGroupForLocale.getDict(Dictionary.TYPE_MAIN); - dictsToCleanupForLocale.remove(Dictionary.TYPE_MAIN); + dictTypesToCleanupForLocale.remove(Dictionary.TYPE_MAIN); } final Map<String, ExpandableBinaryDictionary> subDicts = new HashMap<>(); for (final String subDictType : subDictTypesToUse) { final ExpandableBinaryDictionary subDict; if (noExistingDictsForThisLocale - || !dictionaryGroupForLocale.hasDict(subDictType)) { + || !dictionaryGroupForLocale.hasDict(subDictType, account)) { // Create a new dictionary. subDict = getSubDict(subDictType, context, newLocale, null /* dictFile */, - dictNamePrefix); + dictNamePrefix, account); } else { // Reuse the existing dictionary, and don't close it at the end subDict = dictionaryGroupForLocale.getSubDict(subDictType); - dictsToCleanupForLocale.remove(subDictType); + dictTypesToCleanupForLocale.remove(subDictType); } subDicts.put(subDictType, subDict); } - newDictionaryGroups[i] = new DictionaryGroup(newLocale, mainDict, subDicts); + newDictionaryGroups[i] = new DictionaryGroup(newLocale, mainDict, account, subDicts); } // Replace Dictionaries. @@ -437,9 +487,9 @@ public class DictionaryFacilitator { } // Clean up old dictionaries. - for (final Locale localeToCleanUp : existingDictsToCleanup.keySet()) { + for (final Locale localeToCleanUp : existingDictionariesToCleanup.keySet()) { final ArrayList<String> dictTypesToCleanUp = - existingDictsToCleanup.get(localeToCleanUp); + existingDictionariesToCleanup.get(localeToCleanUp); final DictionaryGroup dictionarySetToCleanup = findDictionaryGroupWithLocale(oldDictionaryGroups, localeToCleanUp); for (final String dictType : dictTypesToCleanUp) { @@ -493,7 +543,8 @@ public class DictionaryFacilitator { @UsedForTesting public void resetDictionariesForTesting(final Context context, final Locale[] locales, final ArrayList<String> dictionaryTypes, final HashMap<String, File> dictionaryFiles, - final Map<String, Map<String, String>> additionalDictAttributes) { + final Map<String, Map<String, String>> additionalDictAttributes, + @Nullable final String account) { Dictionary mainDictionary = null; final Map<String, ExpandableBinaryDictionary> subDicts = new HashMap<>(); @@ -507,7 +558,7 @@ public class DictionaryFacilitator { } else { final File dictFile = dictionaryFiles.get(dictType); final ExpandableBinaryDictionary dict = getSubDict( - dictType, context, locale, dictFile, "" /* dictNamePrefix */); + dictType, context, locale, dictFile, "" /* dictNamePrefix */, account); if (additionalDictAttributes.containsKey(dictType)) { dict.clearAndFlushDictionaryWithAdditionalAttributes( additionalDictAttributes.get(dictType)); @@ -520,7 +571,7 @@ public class DictionaryFacilitator { subDicts.put(dictType, dict); } } - dictionaryGroups[i] = new DictionaryGroup(locale, mainDictionary, subDicts); + dictionaryGroups[i] = new DictionaryGroup(locale, mainDictionary, account, subDicts); } mDictionaryGroups = dictionaryGroups; mMostProbableDictionaryGroup = dictionaryGroups[0]; @@ -576,7 +627,7 @@ public class DictionaryFacilitator { public boolean hasPersonalizationDictionary() { final DictionaryGroup[] dictionaryGroups = mDictionaryGroups; for (final DictionaryGroup dictionaryGroup : dictionaryGroups) { - if (dictionaryGroup.hasDict(Dictionary.TYPE_PERSONALIZATION)) { + if (dictionaryGroup.hasDict(Dictionary.TYPE_PERSONALIZATION, null /* account */)) { return true; } } @@ -677,7 +728,8 @@ public class DictionaryFacilitator { // History dictionary in order to avoid suggesting them until the dictionary // consolidation is done. // TODO: Remove this hack when ready. - final int lowerCaseFreqInMainDict = dictionaryGroup.hasDict(Dictionary.TYPE_MAIN) ? + final int lowerCaseFreqInMainDict = dictionaryGroup.hasDict(Dictionary.TYPE_MAIN, + null /* account */) ? dictionaryGroup.getDict(Dictionary.TYPE_MAIN).getFrequency(lowerCasedWord) : Dictionary.NOT_A_PROBABILITY; if (maxFreq < lowerCaseFreqInMainDict diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java index b578159eb..3119ff82f 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java @@ -102,10 +102,12 @@ public class DictionaryFacilitatorLruCache { private void resetDictionariesForLocaleLocked(final DictionaryFacilitator dictionaryFacilitator, final Locale locale) { + // Note: Given that personalized dictionaries are not used here; we can pass null account. dictionaryFacilitator.resetDictionariesWithDictNamePrefix(mContext, new Locale[] { locale }, mUseContactsDictionary, false /* usePersonalizedDicts */, false /* forceReloadMainDictionary */, null /* listener */, - mDictionaryNamePrefix); + mDictionaryNamePrefix, + null /* account */); } public void setUseContactsDictionary(final boolean useContectsDictionary) { diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 7f9cae58e..45156a31e 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -630,12 +630,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // been displayed. Opening dictionaries never affects responsivity as dictionaries are // asynchronously loaded. if (!mHandler.hasPendingReopenDictionaries()) { - resetDictionaryFacilitatorForLocale(locales); + resetDictionaryFacilitator(locales); } mDictionaryFacilitator.updateEnabledSubtypes(mRichImm.getMyEnabledInputMethodSubtypeList( true /* allowsImplicitlySelectedSubtypes */)); refreshPersonalizationDictionarySession(currentSettingsValues); mStatsUtilsManager.onLoadSettings(currentSettingsValues); + resetDictionaryFacilitatorIfNecessary(); } private void refreshPersonalizationDictionarySession( @@ -673,7 +674,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen void resetDictionaryFacilitatorIfNecessary() { final Locale[] subtypeSwitcherLocales = mRichImm.getCurrentSubtypeLocales(); - if (mDictionaryFacilitator.isForLocales(subtypeSwitcherLocales)) { + if (mDictionaryFacilitator.isForLocales(subtypeSwitcherLocales) + && mDictionaryFacilitator.isForAccount(mSettings.getCurrent().mAccount)) { return; } final Locale[] subtypeLocales; @@ -687,20 +689,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } else { subtypeLocales = subtypeSwitcherLocales; } - resetDictionaryFacilitatorForLocale(subtypeLocales); + resetDictionaryFacilitator(subtypeLocales); } /** - * Reset the facilitator by loading dictionaries for the locales and the current settings values + * Reset the facilitator by loading dictionaries for the locales and + * the current settings values. * * @param locales the locales */ - // TODO: make sure the current settings always have the right locales, and read from them - private void resetDictionaryFacilitatorForLocale(final Locale[] locales) { + // TODO: make sure the current settings always have the right locales, and read from them. + private void resetDictionaryFacilitator(final Locale[] locales) { final SettingsValues settingsValues = mSettings.getCurrent(); mDictionaryFacilitator.resetDictionaries(this /* context */, locales, settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts, - false /* forceReloadMainDictionary */, this); + false /* forceReloadMainDictionary */, + settingsValues.mAccount, + this /* DictionaryInitializationListener */); if (settingsValues.mAutoCorrectionEnabledPerUserSettings) { mInputLogic.mSuggest.setAutoCorrectionThreshold( settingsValues.mAutoCorrectionThreshold); @@ -715,7 +720,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final SettingsValues settingsValues = mSettings.getCurrent(); mDictionaryFacilitator.resetDictionaries(this /* context */, mDictionaryFacilitator.getLocales(), settingsValues.mUseContactsDict, - settingsValues.mUsePersonalizedDicts, true /* forceReloadMainDictionary */, this); + settingsValues.mUsePersonalizedDicts, + true /* forceReloadMainDictionary */, + settingsValues.mAccount, + this /* DictionaryInitializationListener */); } @Override @@ -1925,7 +1933,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final SettingsValues settingsValues = mSettings.getCurrent(); mDictionaryFacilitator.resetDictionaries(this, new Locale[] { locale }, settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts, - false /* forceReloadMainDictionary */, this /* listener */); + false /* forceReloadMainDictionary */, + settingsValues.mAccount, + this /* DictionaryInitializationListener */); } // DO NOT USE THIS for any other purpose than testing. diff --git a/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java index 2dbab0a3f..8926c06b1 100644 --- a/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java +++ b/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java @@ -114,7 +114,7 @@ public class PersonalizationHelperForDictionaryFacilitator { return personalizationDict; } personalizationDict = PersonalizationDictionary.getDictionary(context, locale, - null /* dictFile */, "" /* dictNamePrefix */); + null /* dictFile */, "" /* dictNamePrefix */, null /* account */); mPersonalizationDictsToUpdate.put(locale, personalizationDict); return personalizationDict; } diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java index 2b7fb1748..2d2b3d0a6 100644 --- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java @@ -36,6 +36,8 @@ import java.io.File; import java.util.Arrays; import java.util.Locale; +import javax.annotation.Nullable; + /** * An expandable dictionary that stores the words in the user dictionary provider into a binary * dictionary file to use it from native code. @@ -104,7 +106,7 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary { // Note: This method is called by {@link DictionaryFacilitator} using Java reflection. @ExternallyReferenced public static UserBinaryDictionary getDictionary(final Context context, final Locale locale, - final File dictFile, final String dictNamePrefix) { + final File dictFile, final String dictNamePrefix, @Nullable final String account) { return new UserBinaryDictionary(context, locale, false /* alsoUseMoreRestrictiveLocales */, dictFile, dictNamePrefix + NAME); } diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java index 39d9596ef..f663fe96a 100644 --- a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java +++ b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java @@ -25,6 +25,8 @@ import com.android.inputmethod.latin.ExpandableBinaryDictionary; import java.io.File; import java.util.Locale; +import javax.annotation.Nullable; + public class ContextualDictionary extends ExpandableBinaryDictionary { /* package */ static final String NAME = ContextualDictionary.class.getSimpleName(); @@ -40,7 +42,7 @@ public class ContextualDictionary extends ExpandableBinaryDictionary { @SuppressWarnings("unused") @ExternallyReferenced public static ContextualDictionary getDictionary(final Context context, final Locale locale, - final File dictFile, final String dictNamePrefix) { + final File dictFile, final String dictNamePrefix, @Nullable final String account) { return new ContextualDictionary(context, locale, dictFile); } diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java index 33d1273f7..76451cc6b 100644 --- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java +++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java @@ -24,6 +24,8 @@ import com.android.inputmethod.latin.Dictionary; import java.io.File; import java.util.Locale; +import javax.annotation.Nullable; + public class PersonalizationDictionary extends DecayingExpandableBinaryDictionaryBase { /* package */ static final String NAME = PersonalizationDictionary.class.getSimpleName(); @@ -37,7 +39,8 @@ public class PersonalizationDictionary extends DecayingExpandableBinaryDictionar @SuppressWarnings("unused") @ExternallyReferenced public static PersonalizationDictionary getDictionary(final Context context, - final Locale locale, final File dictFile, final String dictNamePrefix) { + final Locale locale, final File dictFile, final String dictNamePrefix, + @Nullable final String account) { return PersonalizationHelper.getPersonalizationDictionary(context, locale); } } diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java index b595f3974..4231450c1 100644 --- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java +++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java @@ -64,7 +64,8 @@ public class PersonalizationHelper { return dict; } } - final UserHistoryDictionary dict = new UserHistoryDictionary(context, locale); + final UserHistoryDictionary dict = new UserHistoryDictionary( + context, locale, accountName); sLangUserHistoryDictCache.put(lookupStr, new SoftReference<>(dict)); return dict; } diff --git a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java index 946835cbc..2e41027a4 100644 --- a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java +++ b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java @@ -37,20 +37,18 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; /** - * Locally gathers stats about the words user types and various other signals like auto-correction - * cancellation or manual picks. This allows the keyboard to adapt to the typist over time. + * Locally gathers statistics about the words user types and various other signals like + * auto-correction cancellation or manual picks. This allows the keyboard to adapt to the + * typist over time. */ public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBase { static final String NAME = UserHistoryDictionary.class.getSimpleName(); // TODO: Make this constructor private - UserHistoryDictionary(final Context context, final Locale locale) { + UserHistoryDictionary(final Context context, final Locale locale, + @Nullable final String account) { super(context, - getUserHistoryDictName( - NAME, - locale, - null /* dictFile */, - context), + getUserHistoryDictName(NAME, locale, null /* dictFile */, account), locale, Dictionary.TYPE_USER_HISTORY, null /* dictFile */); @@ -61,24 +59,21 @@ public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBas */ @UsedForTesting static String getUserHistoryDictName(final String name, final Locale locale, - @Nullable final File dictFile, final Context context) { + @Nullable final File dictFile, @Nullable final String account) { if (!ProductionFlags.ENABLE_PER_ACCOUNT_USER_HISTORY_DICTIONARY) { return getDictName(name, locale, dictFile); } - return getUserHistoryDictNamePerAccount(name, locale, dictFile, context); + return getUserHistoryDictNamePerAccount(name, locale, dictFile, account); } /** * Uses the currently signed in account to determine the dictionary name. */ private static String getUserHistoryDictNamePerAccount(final String name, final Locale locale, - @Nullable final File dictFile, final Context context) { + @Nullable final File dictFile, @Nullable final String account) { if (dictFile != null) { return dictFile.getName(); } - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - final String account = prefs.getString(LocalSettingsConstants.PREF_ACCOUNT_NAME, - null /* default */); String dictName = name + "." + locale.toString(); if (account != null) { dictName += "." + account; @@ -90,14 +85,7 @@ public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBas @SuppressWarnings("unused") @ExternallyReferenced public static UserHistoryDictionary getDictionary(final Context context, final Locale locale, - final File dictFile, final String dictNamePrefix) { - final String account; - if (ProductionFlags.ENABLE_PER_ACCOUNT_USER_HISTORY_DICTIONARY) { - account = PreferenceManager.getDefaultSharedPreferences(context) - .getString(LocalSettingsConstants.PREF_ACCOUNT_NAME, null /* default */); - } else { - account = null; - } + final File dictFile, final String dictNamePrefix, @Nullable final String account) { return PersonalizationHelper.getUserHistoryDictionary(context, locale, account); } diff --git a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java index 5a1cd8c20..8f4ec4f1b 100644 --- a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java @@ -49,12 +49,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) { @@ -79,13 +82,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); } } @@ -129,7 +137,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), @@ -222,7 +230,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 @@ -256,4 +264,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/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java index 5f1a7af44..0669026d8 100644 --- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java @@ -36,6 +36,7 @@ import java.util.Arrays; import java.util.Locale; import javax.annotation.Nonnull; +import javax.annotation.Nullable; /** * When you call the constructor of this class, you may want to change the current system locale by @@ -120,6 +121,8 @@ public class SettingsValues { public final float mKeyPreviewDismissEndXScale; public final float mKeyPreviewDismissEndYScale; + @Nullable public final String mAccount; + public SettingsValues(final Context context, final SharedPreferences prefs, final Resources res, @Nonnull final InputAttributes inputAttributes) { mLocale = res.getConfiguration().locale; @@ -176,6 +179,8 @@ public class SettingsValues { mPlausibilityThreshold = Settings.readPlausibilityThreshold(res); mGestureInputEnabled = Settings.readGestureInputEnabled(prefs, res); mGestureTrailEnabled = prefs.getBoolean(Settings.PREF_GESTURE_PREVIEW_TRAIL, true); + mAccount = prefs.getString(LocalSettingsConstants.PREF_ACCOUNT_NAME, + null /* default */); mGestureFloatingPreviewTextEnabled = !mInputAttributes.mDisableGestureFloatingPreviewText && prefs.getBoolean(Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, true); mPhraseGestureEnabled = Settings.readPhraseGestureEnabled(prefs, res); 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/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/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/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/ContextualDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/ContextualDictionaryTests.java index f07dac7c0..9d211c9e6 100644 --- a/tests/src/com/android/inputmethod/latin/personalization/ContextualDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/personalization/ContextualDictionaryTests.java @@ -18,6 +18,7 @@ package com.android.inputmethod.latin.personalization; import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -42,7 +43,7 @@ public class ContextualDictionaryTests extends AndroidTestCase { final DictionaryFacilitator dictionaryFacilitator = new DictionaryFacilitator(); dictionaryFacilitator.resetDictionariesForTesting(getContext(), new Locale[] { LOCALE_EN_US }, dictTypes, new HashMap<String, File>(), - new HashMap<String, Map<String, String>>()); + Collections.<String, Map<String, String>>emptyMap(), null /* account */); return dictionaryFacilitator; } diff --git a/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java index dc6fb0075..b133d61ab 100644 --- a/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java @@ -18,6 +18,7 @@ package com.android.inputmethod.latin.personalization; import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -57,7 +58,7 @@ public class PersonalizationDictionaryTests extends AndroidTestCase { final DictionaryFacilitator dictionaryFacilitator = new DictionaryFacilitator(getContext()); dictionaryFacilitator.resetDictionariesForTesting(getContext(), new Locale[] { LOCALE_EN_US }, dictTypes, new HashMap<String, File>(), - new HashMap<String, Map<String, String>>()); + Collections.<String, Map<String, String>>emptyMap(), null /* account */); // Set subtypes. RichInputMethodManager.init(getContext()); final RichInputMethodManager richImm = RichInputMethodManager.getInstance(); diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java index d83c4a55b..6dddc971b 100644 --- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java @@ -16,8 +16,6 @@ package com.android.inputmethod.latin.personalization; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import android.util.Log; @@ -25,7 +23,6 @@ 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.settings.LocalSettingsConstants; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; import com.android.inputmethod.latin.utils.DistracterFilter; @@ -35,8 +32,6 @@ import java.util.Locale; import java.util.Random; import java.util.concurrent.TimeUnit; -import javax.annotation.Nullable; - /** * Unit tests for UserHistoryDictionary */ @@ -48,9 +43,6 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { private int mCurrentTime = 0; - private SharedPreferences mPrefs; - private String mLastKnownAccount = null; - private static void printAllFiles(final File dir) { Log.d(TAG, dir.getAbsolutePath()); for (final File file : dir.listFiles()) { @@ -78,12 +70,6 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { @Override protected void setUp() throws Exception { super.setUp(); - - mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - // Keep track of the current account so that we restore it when the test finishes. - mLastKnownAccount = mPrefs.getString(LocalSettingsConstants.PREF_ACCOUNT_NAME, null); - updateAccountName(TEST_ACCOUNT); - resetCurrentTimeForTestMode(); UserHistoryDictionaryTestsHelper.removeAllTestDictFiles( UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, mContext); @@ -94,10 +80,6 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { UserHistoryDictionaryTestsHelper.removeAllTestDictFiles( UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, mContext); stopTestModeInNativeCode(); - - // Restore the account that was present before running the test. - updateAccountName(mLastKnownAccount); - super.tearDown(); } @@ -106,14 +88,6 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { setCurrentTimeForTestMode(mCurrentTime); } - private void updateAccountName(@Nullable final String accountName) { - if (accountName == null) { - mPrefs.edit().remove(LocalSettingsConstants.PREF_ACCOUNT_NAME).apply(); - } else { - mPrefs.edit().putString(LocalSettingsConstants.PREF_ACCOUNT_NAME, accountName).apply(); - } - } - private void forcePassingShortTime() { // 3 days. final int timeToElapse = (int)TimeUnit.DAYS.toSeconds(3); @@ -147,17 +121,20 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { dict.waitAllTasksForTests(); } - public void testRandomWords() { + private void doTestRandomWords(final String testAccount) { 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 = UserHistoryDictionaryTestsHelper.getDummyLocale("random_words"); final String dictName = UserHistoryDictionary.getUserHistoryDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); + UserHistoryDictionary.NAME, dummyLocale, + null /* dictFile */, + testAccount /* account */); final File dictFile = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( - getContext(), dummyLocale, TEST_ACCOUNT); + getContext(), dummyLocale, testAccount); clearHistory(dict); + final int numberOfWords = 1000; final Random random = new Random(123456); assertTrue(UserHistoryDictionaryTestsHelper.addAndWriteRandomWords( @@ -165,7 +142,23 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { assertDictionaryExists(dict, dictFile); } + public void testRandomWords_NullAccount() { + doTestRandomWords(null /* testAccount */); + } + + public void testRandomWords() { + doTestRandomWords(TEST_ACCOUNT); + } + public void testStressTestForSwitchingLanguagesAndAddingWords() { + doTestStressTestForSwitchingLanguagesAndAddingWords(TEST_ACCOUNT); + } + + public void testStressTestForSwitchingLanguagesAndAddingWords_NullAccount() { + doTestStressTestForSwitchingLanguagesAndAddingWords(null /* testAccount */); + } + + private void doTestStressTestForSwitchingLanguagesAndAddingWords(final String testAccount) { final int numberOfLanguages = 2; final int numberOfLanguageSwitching = 80; final int numberOfWordsInsertedForEachLanguageSwitch = 100; @@ -181,11 +174,12 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { final Locale dummyLocale = UserHistoryDictionaryTestsHelper.getDummyLocale("switching_languages" + i); final String dictName = UserHistoryDictionary.getUserHistoryDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); + UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, + testAccount /* account */); dictFiles[i] = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); dicts[i] = PersonalizationHelper.getUserHistoryDictionary(getContext(), - dummyLocale, TEST_ACCOUNT); + dummyLocale, testAccount); clearHistory(dicts[i]); } @@ -212,16 +206,24 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { } public void testAddManyWords() { + doTestAddManyWords(TEST_ACCOUNT); + } + + public void testAddManyWords_NullAccount() { + doTestAddManyWords(null /* testAccount */); + } + + private void doTestAddManyWords(final String testAccount) { final Locale dummyLocale = UserHistoryDictionaryTestsHelper.getDummyLocale("many_random_words"); final String dictName = UserHistoryDictionary.getUserHistoryDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); + UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, testAccount); final File dictFile = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); final int numberOfWords = 10000; final Random random = new Random(123456); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( - getContext(), dummyLocale, TEST_ACCOUNT); + getContext(), dummyLocale, testAccount); clearHistory(dict); assertTrue(UserHistoryDictionaryTestsHelper.addAndWriteRandomWords(dict, numberOfWords, random, true /* checksContents */, mCurrentTime)); @@ -229,9 +231,17 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { } public void testDecaying() { + doTestDecaying(TEST_ACCOUNT); + } + + public void testDecaying_NullAccount() { + doTestDecaying(null /* testAccount */); + } + + private void doTestDecaying(final String testAccount) { final Locale dummyLocale = UserHistoryDictionaryTestsHelper.getDummyLocale("decaying"); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( - getContext(), dummyLocale, TEST_ACCOUNT); + getContext(), dummyLocale, testAccount); resetCurrentTimeForTestMode(); clearHistory(dict); dict.waitAllTasksForTests(); @@ -262,9 +272,4 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { assertFalse(dict.isInDictionary(word)); } } - - public void testRandomWords_NullAccount() { - updateAccountName(null); - testRandomWords(); - } }
\ No newline at end of file diff --git a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java index 111d5c56a..b5232a3da 100644 --- a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java @@ -418,17 +418,9 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(HI)); // These are preliminary subtypes and may not exist. if (HI_LATN != null) { - // TODO: Uncommented because of the current translation of these strings - // in Hindi are described in Latin script. - // assertEquals("hi_ZZ", "हिंग्लिश", - // SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(HI_LATN)); - // assertEquals("hi_ZZ", "हिंग्लिश (Dvorak)", - // SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(HI_LATN_DVORAK)); - // TODO: Remove these tests once the translation of these strings in Hindi - // are described in Devanagari script. - assertEquals("hi_ZZ", "Hinglish", + assertEquals("hi_ZZ", "हिंग्लिश", SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(HI_LATN)); - assertEquals("hi_ZZ", "Hinglish (Dvorak)", + assertEquals("hi_ZZ", "हिंग्लिश (Dvorak)", SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(HI_LATN_DVORAK)); } return null; |