diff options
90 files changed, 485 insertions, 145 deletions
diff --git a/common/src/com/android/inputmethod/latin/common/CollectionUtils.java b/common/src/com/android/inputmethod/latin/common/CollectionUtils.java index 48df413fd..80fae5f51 100644 --- a/common/src/com/android/inputmethod/latin/common/CollectionUtils.java +++ b/common/src/com/android/inputmethod/latin/common/CollectionUtils.java @@ -20,6 +20,7 @@ import com.android.inputmethod.annotations.UsedForTesting; import java.util.ArrayList; import java.util.Collection; +import java.util.Map; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -60,7 +61,17 @@ public final class CollectionUtils { * @return Whether c contains no elements. */ @UsedForTesting - public static boolean isNullOrEmpty(@Nullable final Collection<?> c) { + public static boolean isNullOrEmpty(@Nullable final Collection c) { return c == null || c.isEmpty(); } + + /** + * Tests whether map contains no elements, true if map is null or map is empty. + * @param map Map to test. + * @return Whether map contains no elements. + */ + @UsedForTesting + public static boolean isNullOrEmpty(@Nullable final Map map) { + return map == null || map.isEmpty(); + } } diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml index bc45714bc..59e70fa5c 100644 --- a/java/res/values-af/strings.xml +++ b/java/res/values-af/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Kanselleer"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Jou persoonlike woordeboek sal gesinkroniseer en in Google-bedieners gerugsteun word. Die statistiese inligting van woordfrekwensie sal dalk ingesamel word om ons produkte te help verbeter. Die insameling en gebruik van al die inligting sal voldoen aan "<a href="https://www.google.com/policies/privacy">"Google se privaatheidsbeleid"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Voeg \'n Google-rekening by die toestel om hierdie kenmerk te aktiveer"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Toestelle met Google Apps vir Besigheid-rekeninge kan nie sinkroniseer nie"</string> <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 48507e062..295fc819b 100644 --- a/java/res/values-am/strings.xml +++ b/java/res/values-am/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"ይቅር"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"የግል መዝገበ-ቃላትዎ ይመሳሰልና ምትኬው በGoogle አገልጋዮች ላይ ይቀመጣል። ምርቶቻችንን ለማሻሻል የቃላት ተደጋጋሚነት ስታቲስቲካዊ መረጃ ሊሰበሰብ ይችላል። የመረጃው አሰባሰብ እና አጠቃቀም በ"<a href="https://www.google.com/policies/privacy">"Google ግላዊነት መመሪያ"</a>" መሠረት የሚካሄድ ነው።"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ይህን ባህሪ ለማንቃት እባክዎ የGoogle መለያ ወደዚህ መሣሪያ ያክሉ"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ማመሳሰል Google Apps ለንግድ መለያዎች ላላቸው መሣሪያዎች ሊገኝ አይችልም"</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-ar/strings.xml b/java/res/values-ar/strings.xml index db78e31bf..66f5c3f8f 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"إلغاء"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"ستتم مزامنة قاموسك الشخصي والاحتفاظ بنسخة احتياطية منه على خوادم Google، وقد يتم جمع المعلومات الإحصائية لتكرار الكلمات للمساعدة في تحسين منتجاتنا هذا وسيتوافق جمع كل المعلومات واستخدامها مع "<a href="https://www.google.com/policies/privacy">"سياسة خصوصية Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"الرجاء إضافة حساب Google إلى هذا الجهاز لتمكين هذه الميزة."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"لا تتوفر إمكانية المزامنة للأجهزة التي تتضمن حسابات Google Apps للأنشطة التجارية"</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 4fff00068..1a8b0b2f1 100644 --- a/java/res/values-az-rAZ/strings.xml +++ b/java/res/values-az-rAZ/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Ləğv et"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Şəxsi lüğətiniz sinxronlaşdırılacaq və Google serverlərinə ehtiyat nüsxəsi çıxarılacaq. Söz tezliyinin statistik məlumatı məhsullarımızı təkmilləşdirməyə kömək üçün toplana bilər. Bütün məlumatın toplanması və istifadəsi "<a href="https://www.google.com/policies/privacy">"Google Məxfilik Siyasətinə"</a>" uyğun olmalıdır."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Bu funksiyanı aktivləşdirmək üçün cihaza Google hesabı əlavə edin"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Biznes hesablarına aid Google Tətbiqləri olan cihazlarda sinxronizasiya əlçatan deyil"</string> <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 e5b8f052c..8ad520fb7 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Отказ"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Личният ви речник ще бъде синхронизиран и за него ще бъде създадено резервно копие на сървърите на Google. Статистическата информация за честотата на използване на думите може да се събира с цел подобряване на продуктите ни. Събирането и ползването на всички данни ще бъде съгласно "<a href="https://www.google.com/policies/privacy">"Декларацията ни за поверителност"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"За да активирате функцията, добавете профил в Google към у-вото"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Синхронизирането не е налице за у-ва с профили в Google Apps for Business"</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-bn-rBD/strings.xml b/java/res/values-bn-rBD/strings.xml index de96826be..fdd197be8 100644 --- a/java/res/values-bn-rBD/strings.xml +++ b/java/res/values-bn-rBD/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"বাতিল"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"আপনার ব্যক্তিগত অভিধান Google সার্ভারগুলিতে সিঙ্ক এবং ব্যাকআপ নেওয়া হবে৷ শব্দ ফ্রিকোয়েন্সির পরিসংখ্যানগত তথ্য আমাদের পণ্য উন্নতিতে সহায়তার জন্য সংগ্রহ করা হতে পারে৷ এই সংগ্রহ এবং সমস্ত তথ্যের ব্যবহার "<a href="https://www.google.com/policies/privacy">"Google এর গোপনীয়তা নীতি"</a>"-র সাথে সঙ্গতিশীল হবে৷"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"এই বৈশিষ্ট্যটি সক্ষম করার জন্য অনুগ্রহ করে এই ডিভাইসে একটি Google অ্যাকাউন্ট যোগ করুন"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ব্যবসা অ্যাকাউন্টগুলির জন্য Google Apps এর সাথে ডিভাইসগুলির জন্য সিঙ্ক অনুপলব্ধ"</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-ca/strings.xml b/java/res/values-ca/strings.xml index d1c58b2d8..8c2c400f9 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel·la"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"El teu diccionari personal se sincronitzarà i se\'n farà una còpia de seguretat als servidors de Google. És possible que es recopili informació estadística sobre la freqüència de les paraules per poder millorar els nostres productes. La recopilació i l\'ús de tota la informació complirà la "<a href="https://www.google.com/policies/privacy">"Política de privadesa de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Afegeix un compte de Google al dispositiu per activar la funció"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sincron. no disponible per a disps. amb comptes de Google Apps for Business"</string> <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 2d812088e..373b233d3 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Zrušit"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Váš osobní slovník bude synchronizován a zálohován na servery Google. Za účelem vylepšení našich služeb mohou být shromažďovány statistické informace o četnosti slov. Shromažďování a využití všech informací bude probíhat v souladu se "<a href="https://www.google.com/policies/privacy">"zásadami ochrany soukromí společnosti Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Za účelem aktivace této funkce přidejte do zařízení účet Google."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"U zařízení s účty Google Apps pro firmy není synchronizace dostupná"</string> <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 f40b645f6..326adf810 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Annuller"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Din personlige ordbog synkroniseres og sikkerhedskopieres til Googles servere. De statistiske oplysninger om ordfrekvens indsamles muligvis med henblik på at forbedre vores produkter. Indsamlingen og brugen af alle oplysninger sker i overensstemmelse med "<a href="https://www.google.com/policies/privacy">"Googles privatlivspolitik"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Føj en Google-konto til enheden for at aktivere denne funktion"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synkronisering er ikke tilgængelig på enheder med Google Apps for Business-konti"</string> <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 bbee7698c..d214a4ddf 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Abbrechen"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Ihr persönliches Wörterbuch wird mit den Google-Servern synchronisiert und auf diesen Servern gesichert. Zur Verbesserung unserer Produkte werden eventuell statistische Daten zur Worthäufigkeit erfasst. Die Erfassung und Nutzung sämtlicher Daten erfolgt gemäß der "<a href="https://www.google.com/policies/privacy">"Datenschutzerklärung von Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Zur Aktivierung dieser Funktion Google-Konto zu Gerät hinzufügen"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synchronisierung für Geräte mit Apps für Business-Konten nicht verfügbar"</string> <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 72ecb6ceb..a98ca2cef 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Ακύρωση"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Θα γίνει συγχρονισμός και δημιουργία αντιγράφων ασφαλείας του προσωπικού σας λεξικού στους διακομιστές της Google. Ενδέχεται να γίνεται συλλογή στατιστικών στοιχείων σχετικά με τη συχνότητα των λέξεων για τη βελτίωση των προϊόντων μας. Η συλλογή και χρήση όλων των πληροφοριών θα συμμορφώνεται με την "<a href="https://www.google.com/policies/privacy">"Πολιτική Απορρήτου της Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Προσθέσετε Λογαριασμό Google για να ενεργοποιήσετε τη λειτουργία"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Μη διαθέσιμος συγχρονισμός για συσκευές με λογ. Google Apps for Business"</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-en-rAU/strings.xml b/java/res/values-en-rAU/strings.xml index 332e01e1b..1b39be1b2 100644 --- a/java/res/values-en-rAU/strings.xml +++ b/java/res/values-en-rAU/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</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-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index 332e01e1b..1b39be1b2 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</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 332e01e1b..1b39be1b2 100644 --- a/java/res/values-en-rIN/strings.xml +++ b/java/res/values-en-rIN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</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 3cb2982b1..cd98c673a 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Se creará una copia de tu diccionario personal y se sincronizará con los servidores de Google. Es posible que se recopile información estadística de la frecuencia de palabras para mejorar nuestros productos. La recopilación y el uso de toda la información se realizará conforme a la "<a href="https://www.google.com/policies/privacy">"Política de privacidad de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Para habilitar esta función, agrega una cuenta de Google."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinc. no disponible en dispositivos con cuentas de Google Apps for Business"</string> <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 dceecc73d..01051114f 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"El diccionario personal se sincroniza con los servidores de Google, donde se crea una copia de seguridad. Se puede recopilar información estadística sobre frecuencia de palabras para mejorar nuestros productos. Toda la información se recopila y se utiliza siguiendo las disposiciones de la "<a href="https://www.google.com/policies/privacy">"Política de privacidad de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Añade una cuenta de Google al dispositivo para activar la función"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinc. no disponible en dispositivos con cuentas de Google Apps for Business"</string> <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 15620af50..0000b5dc1 100644 --- a/java/res/values-et-rEE/strings.xml +++ b/java/res/values-et-rEE/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Tühista"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Teie isiklik sõnastik sünkroonitakse ja varundatakse Google\'i serveritesse. Meie toodete parandamiseks võidakse koguda sõna esinemissageduse statistikat. Kogu teabe kogumine ja kasutamine toimub "<a href="https://www.google.com/policies/privacy">"Google\'i privaatsuseeskirjade"</a>" järgi."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Lisage selle funktsiooni lubamiseks seadmesse Google\'i konto"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sünkroonimine pole Google Apps for Businessi kontodega seadmetele saadaval"</string> <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 179ebf403..f537ae8e4 100644 --- a/java/res/values-eu-rES/strings.xml +++ b/java/res/values-eu-rES/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Utzi"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Hiztegi pertsonalizatua sinkronizatu egingo da eta Google zerbitzarietan gordeko da babeskopia gisa. Hitzak erabiltzeko maiztasunari buruzko estatistikak bil daitezke produktuak hobetzen laguntzeko. Informazioaren bilketak eta erabilerak "<a href="https://www.google.com/policies/privacy">"Google Pribatutasun-gidalerroak"</a>" gordeko ditu uneoro."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Eginbidea gaitzeko, gehitu Google kontua gailuan"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinkronizazioa ez dago erabilgarri Google Apps for Business kontuak dituzten gailuetan"</string> <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 c6d059573..3a81dcebb 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"لغو"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"فرهنگ لغت شخصی شما با سرورهای Google همگامسازی و در آنها پشتیبان گرفته میشود. ممکن است برای کمک به بهبود محصولات ما، اطلاعات آماری از فراوانی کلمه جمعآوری شود. جمعآوری و استفاده از همه اطلاعات مطابق با "<a href="https://www.google.com/policies/privacy">"خطمشی رازداری Google"</a>" خواهد بود."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"برای فعال کردن این ویژگی، یک حساب Google به این دستگاه اضافه کنید"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"همگامسازی برای دستگاههای دارای حساب Google Apps for Business در دسترس نیست"</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 66cc4b23a..65d518d9a 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Peruuta"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Oma sanakirjasi synkronoidaan ja varmuuskopiodaan Googlen palvelimille. Sanojen yleisyyttä koskevia tilastotietoja voidaan kerätä tuotteidemme parantamiseksi. Tietojen keräämisessä ja käytössä noudatetaan "<a href="https://www.google.com/policies/privacy">"Googlen tietosuojakäytäntöä"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Ota tämä ominaisuus käyttöön lisäämällä Google-tili laitteeseen."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synkronointi ei ole käytettävissä Google Apps for Business -tilejä sisältäville laitteille."</string> <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 f0cd0ed75..054985dfb 100644 --- a/java/res/values-fr-rCA/strings.xml +++ b/java/res/values-fr-rCA/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Annuler"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Votre dictionnaire personnel sera synchronisé et sauvegardé sur les serveurs de Google. Des statistiques concernant la fréquence des mots peuvent être recueillies pour nous aider à améliorer nos produits. La collecte et l\'utilisation de toutes les données sont effectuées conformément à la "<a href="https://www.google.com/policies/privacy">"politique de confidentialité de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Ajoutez un compte Google à cet appareil pour activer la fonction."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synchronisation non disponible pour les comptes Google Apps pour entreprises"</string> <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 e1598e2a0..11d02b7ce 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Annuler"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Votre dictionnaire personnel sera synchronisé et sauvegardé sur les serveurs de Google. Des statistiques concernant la fréquence des mots peuvent être recueillies pour nous aider à améliorer nos produits. La collecte et l\'utilisation de toutes les informations sont effectuées conformément aux "<a href="https://www.google.com/policies/privacy">"Règles de confidentialité de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Ajoutez compte Google à cet appareil pour activer fonctionnalité."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synchronisation non disponible pour les comptes Google Apps for Business."</string> <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 8370aed6a..316fac182 100644 --- a/java/res/values-gl-rES/strings.xml +++ b/java/res/values-gl-rES/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Sincronizarase o teu dicionario persoal e realizarase unha copia de seguranza nos servidores de Google. Quizais se recompile información estatística da frecuencia das palabras para axudar a mellorar os nosos produtos. A recompilación e o uso de toda a información cumprirán coa "<a href="https://www.google.com/policies/privacy">"Política de privacidade de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Engade unha conta de Google ao dispositivo para activar a función"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sincronización non dispoñible para dispositivo con Google Apps for Business"</string> <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 6c2b84a9e..8b706d753 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"अभी नहीं"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"आपका व्यक्तिगत शब्दकोश Google सर्वरों पर समन्वयित किया जाएगा और उसका बैक अप लिया जाएगा. हमारे उत्पादों को बेहतर बनाने में सहायता करने के लिए शब्द को दोहराने की सांख्यिकीय जानकारी एकत्र की जा सकती है. सभी जानकारी को एकत्र करना और उपयोग करना "<a href="https://www.google.com/policies/privacy">"Google की गोपनीयता नीति"</a>" के अनुपालन में होगा."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"यह सुविधा सक्षम करने के लिए इस डिवाइस पर एक Google खाता जोड़ें"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps for Business खातों वाले डिवाइस के लिए समन्वय उपलब्ध नहीं है"</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-hr/strings.xml b/java/res/values-hr/strings.xml index 8cf4e524a..1f4383c62 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Odustani"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Vaš osobni rječnik sinkronizirat će se i sigurnosno kopirati na Googleovim poslužiteljima. Moguće je prikupljanje statističkih podataka o učestalosti riječi radi poboljšanja naših proizvoda. Prikupljanje i upotreba svih podataka odvijat će se u skladu s "<a href="https://www.google.com/policies/privacy">"Googleovim pravilima o privatnosti"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Dodajte Google račun na uređaj da biste omogućili tu značajku"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinkronizacija nije dostupna za uređaje s računima Google Apps za tvrtke"</string> <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 4c9a4b345..a39ae0d98 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Mégse"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"A rendszer szinkronizálni fogja az Ön személyes szótárát, és biztonsági mentést készít róla a Google szerverein. Termékeink továbbfejlesztése érdekében a rendszer a szavak előfordulási gyakoriságára vonatkozó statisztikai adatokat gyűjthet. Ezen információkat a "<a href="https://www.google.com/policies/privacy">"Google adatvédelmi irányelveivel"</a>" összhangban gyűjtjük és használjuk fel."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"A funkció engedélyezéséhez adjon egy Google-fiókot az eszközhöz"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"A Google Apps cégeknek-fiókkal rendelkező eszközökön nem érhető el a szinkronizálás"</string> <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 f98a5860d..ade4c152b 100644 --- a/java/res/values-hy-rAM/strings.xml +++ b/java/res/values-hy-rAM/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Չեղարկել"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Ձեր անհատական բառարանը համաժամեցվելու և կրկնօրինակվելու է Google սերվերներում: Կարող են հավաքվել բառերի օգտագործման հաճախականության վիճակագրական տվյալներ՝ մեր արտադրանքների որակը բարելավելու նպատակով: Բոլոր տվյալները հավաքվելու և օգտագործվելու են "<a href="https://www.google.com/policies/privacy">"Google-ի Գաղտնիության քաղաքականության"</a>" դրույթների համաձայն:"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Այս հնարավորությունն ընձեռելու համար սարքում հավելեք Google հաշիվ"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps for Business հաշիվներով սարքերում համաժամացումը հասանելի չէ"</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-in/strings.xml b/java/res/values-in/strings.xml index 49873b811..f7d542728 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Batal"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Kamus pribadi akan disinkronkan dan dicadangkan ke server Google. Informasi statistik tentang frekuensi kata dapat dikumpulkan untuk membantu menyempurnakan produk kami. Pengumpulan dan penggunaan data tunduk pada "<a href="https://www.google.com/policies/privacy">"Kebijakan Privasi Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Tambahkan akun Google ke perangkat ini untuk mengaktifkan fitur ini"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinkronisasi tidak tersedia untuk perangkat yang memiliki akun Google Apps for Business"</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 9e63a76d8..6a25ad28c 100644 --- a/java/res/values-is-rIS/strings.xml +++ b/java/res/values-is-rIS/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Hætta við"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Orðabókin þín verður samstillt og afrituð á netþjóna Google. Hugsanlega verður talnagögnum um tíðni orða safnað til að gera vörur okkar betri. Söfnun og notkun allra upplýsinga fellur undir "<a href="https://www.google.com/policies/privacy">"persónuverndarstefnu Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Bættu Google reikningi við tækið til að virkja þennan eiginleika"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Samstilling er ekki í boði fyrir tæki með Google Apps fyrirtækjareikning"</string> <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 fc5fed328..24c43f485 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Annulla"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Il·tuo·dizionario personale verrà·sincronizzato sui server di Google e ne verrà effettuato il backup. Potrebbero essere raccolte informazioni·statistiche·relative alla frequenza delle·parole·per migliorare i·nostri·prodotti. La·raccolta·e l\'utilizzo di tutte le informazioni·saranno·conformi·alle·"<a href="https://www.google.com/policies/privacy">"Norme sulla privacy di Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Per attivare la funzione, aggiungi un account Google al dispositivo"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"La sincronizzazione non è disponibile per i dispositivi con account Google Apps for Business"</string> <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 2acc08c51..70a7d5a01 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"בטל"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"המילון האישי שלך יסונכרן ויגובה בשרתי Google. ייתכן שהמידע הסטטיסטי לגבי תדירות מילים ייאסף כדי לעזור בשיפור המוצרים שלנו. איסוף המידע והשימוש בו יעשו בהתאם ל"<a href="https://www.google.com/policies/privacy">"מדיניות הפרטיות של Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"הוסף חשבון Google במכשיר הזה כדי להפעיל את התכונה הזו"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"סנכרון אינו זמין במכשירים עם חשבונות Google Apps for Business"</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 55305b827..8493bce24 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"キャンセル"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"単語リストがGoogleのサーバーと同期され、サーバーにバックアップされます。Googleのサービス改善を目的として、語句の使用頻度に関する統計情報が収集される場合があります。収集した情報およびその利用方法は、"<a href="https://www.google.com/policies/privacy">"Googleプライバシーポリシー"</a>"に準拠します。"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"この機能を有効にするには端末にGoogleアカウントを追加してください"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"同期は、Google Apps for Businessアカウントの端末ではご利用いただけません"</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-ka-rGE/strings.xml b/java/res/values-ka-rGE/strings.xml index 451eb3972..d571e1b36 100644 --- a/java/res/values-ka-rGE/strings.xml +++ b/java/res/values-ka-rGE/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"გაუქმება"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"თქვენი პერსონალური ლექსიკონი სინქრონიზდება და შეინახება სარეზერვოდ Google სერვერებზე. ჩვენი პროდუქტების გასაუმჯობესებლად, შეიძლება შეგროვდეს სტატისტიკური ინფორმაცია სიტყვების სიხშირის შესახებ. ნებისმიერი ინფორმაციის შეგროვება და გამოყენება "<a href="https://www.google.com/policies/privacy">"Google-ის კონფიდენციალურობის პოლიტიკასთან"</a>" შესაბამისობაში იქნება."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ფუნქციის ჩასართავად, გთხოვთ მოწყობილობას Google ანგარიში დაამატოთ"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"სინქრ. არ არის ხელმისაწვდომი Google Apps for Business ანგ. მქონე მოწყ."</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-kk-rKZ/strings.xml b/java/res/values-kk-rKZ/strings.xml index 99d9cf7f0..cc8e87ccc 100644 --- a/java/res/values-kk-rKZ/strings.xml +++ b/java/res/values-kk-rKZ/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Бас тарту"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Жеке сөздігіңіз синхрондалады және Google серверлеріне сақтық көшірмесі жасалады. Сөз жиілігінің статистикалық ақпараты өнімдерімізді жақсарту үшін жинақталуы мүмкін. Барлық ақпаратты жинау және пайдалану "<a href="https://www.google.com/policies/privacy">" Google құпиялылық саясатына "</a>"сәйкес орындалады."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Мүмкіндікті қосу үшін құрылғыға Google есептік жазбасын қосыңыз"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Бизнес ес.жазб.арн.Google қолд.бар құрылғылар үшін синхрондау қол жет.емес"</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-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml index 26ca12d19..7af96161f 100644 --- a/java/res/values-km-rKH/strings.xml +++ b/java/res/values-km-rKH/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"បោះបង់"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"បញ្ជីឯកសារផ្ទាល់ខ្លួនរបស់អ្នកនឹងត្រូវបានធ្វើសមកាលកម្ម និងបម្រុងទុកនៅក្នុងម៉ាស៊ីនមេ Google។ ព័ត៌មានស្ថិតិនៃចំនួនពាក្យដែលឧស្សាហ៍ប្រើអាចត្រូវបានប្រមូលដើម្បីធ្វើឲ្យផលិតផលរបស់ពួកយើងប្រសើរជាងមុន។ ការប្រមូល និងការប្រើប្រាស់ព័ត៌មាន នឹងត្រូវអនុលោមតាម "<a href="https://www.google.com/policies/privacy">"គោលការណ៍ភាពឯកជនរបស់ Google"</a>"។"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"សូមបន្ថែមគណនី Google ទៅឧបករណ៍នេះដើម្បីបើកដំណើរការលក្ខណៈពិសេសនេះ"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ការធ្វើសមកាលកម្មមិនមាននោះទេសម្រាប់ឧបករណ៍ដែលមានគណនីកម្មវិធី Google សម្រាប់ធុរកិច្ច។"</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-kn-rIN/strings.xml b/java/res/values-kn-rIN/strings.xml index b8d61ec6e..817a3d4f8 100644 --- a/java/res/values-kn-rIN/strings.xml +++ b/java/res/values-kn-rIN/strings.xml @@ -46,6 +46,7 @@ <!-- unknown quoting pattern: original -1, translation 1 --> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ನಿಘಂಟನ್ನು Google ಸರ್ವರ್ಗಳಿಗೆ ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತದೆ &amp; ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗುತ್ತದೆ. ನಮ್ಮ ಉತ್ಪನ್ನಗಳನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಲು ಪದ ಆವರ್ತನೆ ಅಂಕಿಅಂಶವನ್ನು ಸಂಗ್ರಹಿಸಬಹುದು. ಎಲ್ಲಾ ಮಾಹಿತಿಯ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬಳಕೆಯ "<a href="https://www.google.com/policies/privacy">"Google ನ ಗೌಪ್ಯತೆ ನೀತಿ"</a>" ಯ ಅಡಿಯಲ್ಲಿ ಅನುಸರಣೆ ಮಾಡಲಾಗುತ್ತದೆ."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ಈ ಸಾಧನಕ್ಕೆ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ದಯವಿಟ್ಟು Google ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ವ್ಯಾಪಾರಕ್ಕಾಗಿ Google Apps ಖಾತೆಗಳನ್ನು ಹೊಂದಿರುವ ಸಾಧನಗಳಿಗೆ ಸಿಂಕ್ ಲಭ್ಯವಿಲ್ಲ"</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-ko/strings.xml b/java/res/values-ko/strings.xml index d12e36da9..f40fa2d5c 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"취소"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"개인 사전이 Google 서버에 동기화되며 백업됩니다. Google의 제품 개선을 위해 단어 빈도에 관한 통계 정보가 수집될 수 있습니다. 모든 정보는 "<a href="https://www.google.com/policies/privacy">"Google 개인정보취급방침"</a>"에 따라 수집되고 사용됩니다."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"이 기능을 사용하려면 기기에 Google 계정을 추가하세요."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps for Work 계정을 사용하는 기기에서는 동기화할 수 없습니다."</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-ky-rKG/strings.xml b/java/res/values-ky-rKG/strings.xml index e00364f64..cc5c911a4 100644 --- a/java/res/values-ky-rKG/strings.xml +++ b/java/res/values-ky-rKG/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Жокко чыгаруу"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Жеке сөздүгүңүз шайкештирилет жана Google серверлерине сакталат. Өндүрүмдөрүбүздү жакшыртууга жардамдашуу максатында сөз жыштыгынын статистикалык маалыматы топтолушу мүмкүн. Бардык маалыматты топтоо жана колдонуу "<a href="https://www.google.com/policies/privacy">"Google\'дун Купуялык Саясатына"</a>" ылайык болот."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Бул өзгөчөлүктү иштт ү-н ушул түзмөккө Google каттоо эсбн кошңз"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Ишкердик каттоо эсептери үчүн Google Apps\'те шайкештирүү жеткиликтүү эмес"</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-lo-rLA/strings.xml b/java/res/values-lo-rLA/strings.xml index 521ff5d79..6d9854b77 100644 --- a/java/res/values-lo-rLA/strings.xml +++ b/java/res/values-lo-rLA/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"ຍົກເລີກ"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"ພົດຈະນານຸກົມສ່ວນຕົວຂອງທ່ານຈະຖືກຊິງຄ໌ ແລະສຳຮອງໄປໃສ່ເຊີບເວີ Google. ຂໍ້ມູນສະຖິຕິຂອງຄວາມຖີ່ຄຳເວົ້າອາດຈະຖືກເກັບກຳ ເພື່ອຊ່ວຍປັບປຸງຜະລິດຕະພັນຂອງທ່ານ. ການເກັບກຳ ແລະການນຳໃຊ້ທຸກຂໍ້ມູນຈະເປັນໄປຕາມ "<a href="https://www.google.com/policies/privacy">"ນະໂຍບາຍຄວາມເປັນສ່ວນຕົວຂອງ Googl"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ກະລຸນາເພີ່ມບັນຊີ Google ໃສ່ອຸປະກອນນີ້ ເພື່ອເປີດໃຊ້ງານຄຸນສົມບັດນີ້"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ບໍ່ມີການຊິງຄ໌ໃຫ້ສຳລັບອຸປະກອນທີ່ມີ Google Apps ສຳລັບບັນຊີ Business"</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 00d20d624..d4ba27ca4 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Atšaukti"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Asmeninis žodynas bus sinchronizuotas ir atsarginė kopija sukurta „Google“ serveriuose. Gali būti renkama statistinė žodžių dažnumo informacija, kad būtų galima patobulinti produktus. Visa informacija renkama ir naudojama laikantis "<a href="https://www.google.com/policies/privacy">"„Google“ privatumo politikos"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Pridėkite „Google“ paskyrą prie įreng., kad įgalint. šią funkciją"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinchronizuoti negalima įrengin. su „Google Apps for Business“ paskyromis"</string> <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 aefa32342..2eb89b200 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Atcelt"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Jūsu personiskā vārdnīca tiks sinhronizēta un dublēta Google serveros. Mūsu produktu uzlabošanas nolūkos var tikt apkopota statistiskā informācija par vārdu biežumu. Visa informācija tiks apkopota un izmantota saskaņā ar "<a href="https://www.google.com/policies/privacy">"Google konfidencialitātes politiku"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Lai iespējotu šo funkciju, pievienojiet Google kontu šai ierīcei."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Ierīcēm ar Google Apps for Business kontiem nav pieejama sinhronizācija."</string> <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 6d2846c1b..f44f7bc46 100644 --- a/java/res/values-mk-rMK/strings.xml +++ b/java/res/values-mk-rMK/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Откажи"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Вашиот личен речник ќе се синхронизира и ќе се создаде резервна копија на серверите на Google. Може да се собираат статистички информации за честотата на зборовите за помош при подобрување на нашите производи. Собирањето и користењето на сите информации ќе биде во согласност со "<a href="https://www.google.com/policies/privacy">"Политиката за приватност на Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Додајте сметка на Google на уредов за овозможување на функцијава"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Синхронизација не е достапна за уреди со сметки за бизнис на Апликации на Google"</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-ml-rIN/strings.xml b/java/res/values-ml-rIN/strings.xml index f24c5f286..344b7e7aa 100644 --- a/java/res/values-ml-rIN/strings.xml +++ b/java/res/values-ml-rIN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"റദ്ദാക്കുക"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"നിങ്ങളുടെ സ്വകാര്യ നിഘണ്ടു Google സെർവറുകളിലേക്ക് സമന്വയിപ്പിച്ച് ബാക്കപ്പുചെയ്യും. ഞങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നതിന് പദങ്ങളുടെ ആവർത്തനം സംബന്ധിച്ച സ്ഥിതിവിവരക്കണക്കുകൾ ശേഖരിച്ചേക്കാം. എല്ലാ വിവരങ്ങളും ശേഖരിക്കുന്നതും ഉപയോഗിക്കുന്നതും "<a href="https://www.google.com/policies/privacy">"Google-ന്റെ സ്വകാര്യത നയത്തിന്"</a>" വിധേയമായിട്ടായിരിക്കും."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ഈ ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കാൻ ഈ ഉപകരണത്തിൽ Google അക്കൗണ്ട് ചേർക്കുക"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ബിസിനസ്സിനായുള്ള Google Apps അക്കൗണ്ടുകൾ ഉള്ള ഉപകരണങ്ങൾക്ക് സമന്വയം ലഭ്യമല്ല"</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-mn-rMN/strings.xml b/java/res/values-mn-rMN/strings.xml index 36250893f..9646a3e3f 100644 --- a/java/res/values-mn-rMN/strings.xml +++ b/java/res/values-mn-rMN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Цуцлах"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Таны хувийн толь бичгийг синк хийж, Google-ийн серверүүд дээр хадгалж авч үлдэнэ. Манай бүтээгдэхүүнүүдийг сайжруулахад туслах зорилгоор үгийн давтамжийн статистик мэдээллийг цуглуулж болно. Бүх мэдээллийг "<a href="https://www.google.com/policies/privacy">"Google-ийн Нууцлалын бодлогын дагуу"</a>" цуглуулж, ашиглана."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Энэ горимыг идэвхжүүлэхийн тулд энэ төхөөрөмж рүү Google акаунт нэмж оруулна уу"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Бизнес акаунтуудын Google Апп бүхий төхөөрөмжүүдэд синк хийх боломжгүй"</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 77110d179..7d21092b2 100644 --- a/java/res/values-mr-rIN/strings.xml +++ b/java/res/values-mr-rIN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"रद्द करा"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"आपली वैयक्तिक निर्देशिका Google सर्व्हरवर संकालित केली जाईल आणि बॅकअप घेतला जाईल. आमचे उत्पादन सुधारित करण्यात मदत करण्यासाठी शब्दाच्या वारंवारतेची आकडेवारी माहिती गोळा केली जाऊ शकते. सर्व माहितीचे संकलन आणि वापर "<a href="https://www.google.com/policies/privacy">"Google चे गोपनीयता धोरण"</a>" शी सुसंगत असेल."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"या डिव्हाइसमध्ये हे वैशिष्ट्य सक्षम करण्यासाठी कृपया एक Google खाते जोडा"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps for Business खात्यांसह डिव्हाइसेससाठी संकालन उपलब्ध नाही"</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-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml index ac482d10a..600ef2673 100644 --- a/java/res/values-ms-rMY/strings.xml +++ b/java/res/values-ms-rMY/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Batal"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Kamus peribadi anda akan disegerakkan dan disandarkan ke pelayan Google. Maklumat statistik kekerapan perkataan mungkin dikumpulkan untuk membantu mempertingkatkan produk kami. Pengumpulan dan penggunaan semua maklumat adalah selaras dengan "<a href="https://www.google.com/policies/privacy">"Dasar Privasi Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Sila tambahkan akaun Google pada peranti ini untuk mendayakan ciri ini"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Segerak tidak tersedia untuk peranti dengan akaun Google Apps untuk Perniagaan"</string> <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 eafddb1c0..9ea2136a2 100644 --- a/java/res/values-my-rMM/strings.xml +++ b/java/res/values-my-rMM/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"ဖျက်သိမ်းရန်"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"သင့်ရဲ့ကိုယ်ပိုင်အဘိဓါန်ကို Google server များမှာ ထပ်တူညီအောင်လုပ် ပြီး မူလပုံစံ ပြန်သွားမည်။ အိုင်တီထုတ်ကုန်များ တိုးတက်မှုရှိအောင် စာလုံးရေ ကောက်ယူမှု အချက်အလက်ကို စုစည်းပါသည်။ အဆိုပါအချက်အလက်စုယူ သုံးစွဲမှုကို "<a href="https://www.google.com/policies/privacy">" Google၏မိမိအတွင်းရေးသီးသန့် မူဝါဒ "</a>" ဖြင့် စောဒကတက် နိုင်သည်။"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ဒီအင်္ဂါရပ်တွေကို ရဖို့ဒီစက်မှာ Google account တစ်ခုကို ဖွင့်ပါ"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"စီးပွားရေးအကောင့်များအတွက် Google အပ်ဖ်များဖြင့် စက်ပစ္စည်းများတွင် ထပ်တူပြုခြင်း မရနိုင်ပါ"</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 db04ee595..f4cdb9aff 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Avbryt"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Den personlige ordlisten din blir synkronisert og sikkerhetskopiert til Google-tjenere. For å bidra til å forbedre produktene våre, kan det hende vi samler inn informasjon om ordfrekvens. Innsamling og bruk av all informasjon skjer i henhold til "<a href="https://www.google.com/policies/privacy">"Googles personvernregler"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Legg en Google-konto til enheten for å aktivere denne funksjonen"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synkronisering er ikke tilgjengelig for enheter med Google Apps for Business-kontoer"</string> <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 bc96c49d1..99f0b6630 100644 --- a/java/res/values-ne-rNP/strings.xml +++ b/java/res/values-ne-rNP/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"रद्द गर्नुहोस्"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"तपाईँको व्यक्तिगत शब्दकोश सिंक गरेर Google सर्भरहरूमा जगेडा राखिने छ। शब्द आवृत्तिको तथ्याङ्क जानकारी हाम्रो उत्पादनहरू सुधार गर्न मद्दतका लागि संकलन हुन सक्छ। संग्रह र सबै जानकारीको प्रयोग "<a href="https://www.google.com/policies/privacy">" Google को गोपनीयता नीति "</a>" अनुरूप हुने छ।"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"कृपया यो सुविधा सक्षम गर्न यो यन्त्रमा एउटा Google खाता थप्नुहोस्"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"व्यापार खाताहरूको लागि Google Apps मार्फत यन्त्रको लागि सिंक उपलब्ध छैन"</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 807a1a32b..2694b37cf 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Annuleren"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Uw persoonlijke woordenboek wordt gesynchroniseerd en er wordt een back-up gemaakt op servers van Google. De statistische gegevens voor woordfrequentie kunnen worden verzameld om onze producten te verbeteren. Het verzamelen en gebruik van alle gegevens is in overeenstemming met het "<a href="https://www.google.com/policies/privacy">"Privacybeleid van Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Voeg een Google-account toe om deze functie in te schakelen"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synchronisatie is niet beschikbaar voor Google Apps for Business-accounts"</string> <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 930077519..d7ebf9085 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Anuluj"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Twój słownik osobisty będzie synchronizowany z serwerami Google i zostanie na nich utworzona jego kopia zapasowa. Aby ulepszać nasze usługi, możemy gromadzić informacje statystyczne dotyczące częstości występowania słów. Zbieranie i wykorzystywanie wszelkich informacji będzie się odbywać zgodnie z "<a href="https://www.google.com/policies/privacy">"Polityką prywatności Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Aby włączyć tę funkcję, dodaj konto Google do tego urządzenia"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synchronizacja niedostępna na urządzeniach z kontami Google Apps dla Firm"</string> <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> @@ -143,7 +144,7 @@ <string name="setup_next_action" msgid="371821437915144603">"Następny krok"</string> <string name="setup_steps_title" msgid="6400373034871816182">"Konfigurowanie aplikacji <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_title" msgid="3147967630253462315">"Włącz aplikację <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="setup_step1_instruction" msgid="2578631936624637241">"Zaznacz aplikację „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” w ustawieniach Język, klawiatura i głos. Umożliwi to jej uruchamianie na urządzeniu."</string> + <string name="setup_step1_instruction" msgid="2578631936624637241">"Zaznacz aplikację „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” w ustawieniach Język i wprowadzanie tekstu. Umożliwi to jej uruchamianie na urządzeniu."</string> <string name="setup_step1_finished_instruction" msgid="10761482004957994">"Aplikacja <xliff:g id="APPLICATION_NAME">%s</xliff:g> jest już włączona w Ustawieniach języka i wprowadzania danych. Przejdź do następnego kroku."</string> <string name="setup_step1_action" msgid="4366513534999901728">"Włącz w Ustawieniach"</string> <string name="setup_step2_title" msgid="6860725447906690594">"Przełącz się na aplikację <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> @@ -178,7 +179,7 @@ <string name="install_dict" msgid="180852772562189365">"Zainstaluj"</string> <string name="cancel_download_dict" msgid="7843340278507019303">"Anuluj"</string> <string name="delete_dict" msgid="756853268088330054">"Usuń"</string> - <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Do języka, którego używasz na swoim urządzeniu przenośnym, jest dostępny słownik.<br/> Warto <b>pobrać</b> ten słownik <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>, by ułatwić sobie pisanie.<br/> <br/> Pobieranie trwa do dwóch minut (przez 3G). Jeśli nie masz <b>abonamentu z nieograniczoną transmisją danych</b>, operator może naliczyć opłatę.<br/> Jeśli nie wiesz, jaki masz abonament, połącz się z Wi-Fi, by automatycznie rozpocząć pobieranie.<br/> <br/> Wskazówka: słowniki możesz pobierać i usuwać w sekcji <b>Język, klawiatura, głos</b> w menu <b>Ustawienia</b> na urządzeniu."</string> + <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Do języka, którego używasz na swoim urządzeniu mobilnym, jest dostępny słownik.<br/> Warto <b>pobrać</b> ten słownik <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>, by ułatwić sobie pisanie.<br/> <br/> Pobieranie trwa do dwóch minut (przez 3G). Jeśli nie masz <b>abonamentu z nieograniczoną transmisją danych</b>, operator może naliczyć opłatę.<br/> Jeśli nie wiesz, jaki masz abonament, połącz się z Wi-Fi, by automatycznie rozpocząć pobieranie.<br/> <br/> Wskazówka: słowniki możesz pobierać i usuwać w sekcji <b>Język i wprowadzanie tekstu</b> w menu <b>Ustawienia</b> na urządzeniu."</string> <string name="download_over_metered" msgid="1643065851159409546">"Pobierz teraz (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string> <string name="do_not_download_over_metered" msgid="2176209579313941583">"Pobierz przez Wi-Fi"</string> <string name="dict_available_notification_title" msgid="4583842811218581658">"Dostępny jest słownik <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index a9f2be815..f3ed61f44 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"O seu dicionário pessoal será sincronizado e será criada uma cópia de segurança do mesmo nos servidores da Google. As informações estatísticas de frequência das palavras podem ser recolhidas para ajudar a melhorar os nossos produtos. A recolha e a utilização de todas as informações são efetuadas em conformidade com a "<a href="https://www.google.com/policies/privacy">"Política de Privacidade da Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Adicione uma Conta Google a este disp. para ativar esta func."</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"A sinc. não está disp. para disp. com contas do Google Apps for Business"</string> <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 589ca7800..40cbf14cb 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Seu dicionário pessoal será sincronizado, e será feito backup dele nos servidores do Google. As informações estatísticas de frequência de palavras podem ser coletadas para ajudar a melhorar nossos produtos. A coleta e o uso de todas as informações cumprirão a "<a href="https://www.google.com/policies/privacy">"Política de Privacidade do Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Adicione uma Conta do Google ao dispositivo para ativar recurso"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sincron. indisponível a dispositivos com contas do Google Apps for Business"</string> <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 ffcc68b91..76b665019 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Anulați"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Dicționarul personal va fi sincronizat și i se va face backup pe serverele Google. Informațiile statistice privind frecvența cuvintelor pot fi culese pentru a îmbunătăți produsele noastre. Culegerea și folosirea informațiilor vor respecta "<a href="https://www.google.com/policies/privacy">"Politica de confidențialitate Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Pentru a activa funcția, adăugați un cont Google pe dispozitiv"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Fără sincronizare pe dispozitivele cu conturi Google Apps for Business"</string> <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 a064a45c6..a77a7c00e 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Отменить"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Словарь будет сохраняться на серверах Google и синхронизироваться. Чтобы повысить качество наших сервисов, мы можем отслеживать статистику использования тех или иных слов. Вся информация обрабатывается в соответствии с "<a href="https://www.google.com/policies/privacy">"Политикой конфиденциальности"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Чтобы включить функцию, добавьте аккаунт Google на устройство"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Синхронизация на устройствах с аккаунтом Google Apps for Business запрещена"</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-si-rLK/strings.xml b/java/res/values-si-rLK/strings.xml index 0d5143946..6582fa26f 100644 --- a/java/res/values-si-rLK/strings.xml +++ b/java/res/values-si-rLK/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"අවලංගු කරන්න"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"ඔබගේ පෞද්ගලික ශබ්දකෝෂය Google සේවාදායකයන් වෙත සමමුහුර්ත කර උපස්ථය කෙරෙනු ඇත. අපගේ නිෂ්පාදන වැඩි දියුණු කිරීමට උදවු වනු පිණිස වචන භාවිතා වන වාර ගණන පිළිබඳ සංඛ්යාත්මක තොරතුරු සමුච්චය කිරීමට ඉඩ ඇත. සියලු දත්ත සමුච්චය කිරීම සහ භාවිතා කිරීම "<a href="https://www.google.com/policies/privacy">"Google හි රහස්යතා ප්රතිපත්තිය"</a>"අනුව සිදු කරනු ඇත."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"මෙම විශේෂාංගය සබල කිරීමට කරුණාකර Google ගිණුමක් එක් කරන්න"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"ව්යාපාර ගිණුම් සඳහා Google යෙදුම් සමඟ සමමුහුර්ත කිරීම ලද නොහැකිය."</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-sk/strings.xml b/java/res/values-sk/strings.xml index f75e01d4f..e84462e66 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Zrušiť"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Váš osobný slovník sa synchronizuje a zálohuje na servery Google. S cieľom zlepšiť naše služby môžeme zhromažďovať štatistické informácie o frekvencii slov. Zhromažďovanie informácií a ich použitie bude v súlade s "<a href="https://www.google.com/policies/privacy">"pravidlami ochrany osobných údajov spoločnosti Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Povoľte túto funkciu tak, že do zariadenia pridáte účet Google"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synchronizácia je nedostupná pre zariadenia s účtami Google Apps pre firmy"</string> <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 cae331e3a..1fd40894c 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Prekliči"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Osebni slovar bo sinhroniziran in varnostno kopiran v Googlove strežnike. Statistične podatke o pogostosti rabe besed bomo morda zbirali zaradi izboljšanja naših izdelkov. Zbiranje in uporaba vseh podatkov bo skladna z "<a href="https://www.google.com/policies/privacy">"Googlovim pravilnikom o zasebnosti"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"V napravi dodajte Google Račun, če želite omogočiti to funkcijo"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinhronizacija ni na voljo za naprave z računi za Google Apps for Business"</string> <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 5ff279dc0..17c551592 100644 --- a/java/res/values-sr/strings.xml +++ b/java/res/values-sr/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Откажи"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Синхронизоваћемо лични речник и направићемо његову резервну копију на Google серверима. Можда ћемо прикупљати статистичке податке о учесталости речи да бисмо побољшали производе. Прикупљање и коришћење свих информација ће бити у складу са "<a href="https://www.google.com/policies/privacy">"Google-овом политиком приватности"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Додајте Google налог на уређај да бисте омогућили ову функцију"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Синхрониз. није доступна за уређаје са налозима Google Apps for Business"</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-sv/strings.xml b/java/res/values-sv/strings.xml index b9e84750b..9a910c398 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Avbryt"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Den egna ordboken synkroniseras och säkerhetskopieras till Googles servrar. Statistisk information om ordfrekvens kan samlas in och användas för att förbättra våra produkter. Insamlingen och användningen av all information sker i enlighet med "<a href="https://www.google.com/policies/privacy">"Googles sekretesspolicy"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Lägg till ett Google-konto på enheten om du vill aktivera detta"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Synkronisering är inte tillgänglig för enheter med Google Apps for Business-konton"</string> <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 e2471fb3c..b1bf995b0 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Ghairi"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Kamusi yako ya kibinafsi itasawazishwa na nakala ihifadhiwe kwenye seva za Google. Maelezo ya takwimu ya marudio ya maneno yanaweza kukusanywa ili kusaidia kuboresha bidhaa zetu. Ukusanyaji na matumizi ya maelezo haya yatatii "<a href="https://www.google.com/policies/privacy">"Sera ya Faragha ya Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Tafadhali ongeza akaunti ya Google kwenye kifaa hiki ili uwashe kipengele hiki"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Usawazishaji haupatikani kwa vifaa vyenye akaunti za Google Apps for Business"</string> <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 d0f3aee15..c280c6388 100644 --- a/java/res/values-ta-rIN/strings.xml +++ b/java/res/values-ta-rIN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"ரத்துசெய்"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"உங்கள் தனிப்பட்ட அகராதி ஒத்திசைக்கப்பட்டு, Google சேவையகங்களில் காப்புப் பிரதி எடுக்கப்படும். எங்கள் தயாரிப்புகளை மேம்படுத்த உதவ, சொல் உபயோகத்தின் புள்ளிவிவரத் தகவல் சேகரிக்கப்படலாம். எல்லா தகவல்களின் சேகரிப்பும், உபயோகமும் "<a href="https://www.google.com/policies/privacy">"Google இன் தனியுரிமைக் கொள்கைக்கு"</a>" இணங்கியபடியே இருக்கும்."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"இந்த அம்சத்தை இயக்க, சாதனத்தில் Google கணக்கைச் சேர்க்கவும்"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"வணிகத்திற்கான Google Apps கணக்குகள் இயங்கும் சாதனங்களில் ஒத்திசைக்க முடியாது."</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-te-rIN/strings.xml b/java/res/values-te-rIN/strings.xml index 085639c11..bc3463809 100644 --- a/java/res/values-te-rIN/strings.xml +++ b/java/res/values-te-rIN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"రద్దు చేయి"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"మీ వ్యక్తిగత నిఘంటువు Google సర్వర్లకు సమకాలీకరించబడుతుంది మరియు బ్యాకప్ చేయబడుతుంది. మా ఉత్పత్తులను మెరుగుపరచడంలో సహాయకరంగా ఉండటానికి పదం తరచుదనానికి సంబంధించిన గణాంక సమాచారం సేకరించవచ్చు. మొత్తం సమాచార సేకరణ మరియు వినియోగం "<a href="https://www.google.com/policies/privacy">"Google గోప్యతా విధానం"</a>"కి లోబడి ఉంటుంది."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"దయచేసి ఈ లక్షణాన్ని ప్రారంభించడానికి ఈ పరికరానికి Google ఖాతాను జోడించండి"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"వ్యాపారం కోసం Google Apps ఖాతాలు గల పరికరాల కోసం సమకాలీకరణ అందుబాటులో లేదు"</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-th/strings.xml b/java/res/values-th/strings.xml index 2dc653a71..715bad526 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"ยกเลิก"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"พจนานุกรมส่วนตัวของคุณจะซิงค์และสำรองข้อมูลไปยังเซิร์ฟเวอร์ Google ข้อมูลเชิงสถิติของความถี่ในการใช้คำอาจได้รับการเก็บรวบรวมเพื่อใช้ปรับปรุงผลิตภัณฑ์ของเรา การเก็บรวบรวมและการใช้งานข้อมูลทั้งหมดจะเป็นไปอย่างสอดคล้องกับ"<a href="https://www.google.com/policies/privacy">"นโยบายส่วนบุคคลของ Google"</a></string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"โปรดเพิ่มบัญชี Google ไปยังอุปกรณ์นี้เพื่อเปิดใช้คุณลักษณะนี้"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"การซิงค์ไม่พร้อมใช้งานสำหรับอุปกรณ์ที่มีบัญชี Google Apps for Business"</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-tl/strings.xml b/java/res/values-tl/strings.xml index 0f8f785c8..36dc43c4b 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Kanselahin"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Masi-sync at maba-back up ang iyong personal na dictionary sa mga server ng Google. Maaaring kolektahin ang istatistikal na impormasyon ng dalas ng salita upang makatulong na pahusayin ang aming mga produkto. Susunod ang pagkolekta at paggamit ng lahat ng impormasyon sa "<a href="https://www.google.com/policies/privacy">"Patakaran sa Privacy ng Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Mangyaring magdagdag ng Google account sa device na ito upang i-enable ang feature na ito"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Pag-sync, hindi available sa device na may Google Apps for Business account"</string> <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 8f84ca962..566ac790a 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"İptal"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Kişisel sözlüğünüz senkronize edilecek ve Google sunucularına yedeklenecektir. Ürünlerimizi iyileştirmeye yardımcı olması için kelime sıklığına ilişkin istatistiksel bilgiler toplanabilir. Tüm bilgilerin toplanması ve kullanımı "<a href="https://www.google.com/policies/privacy">"Google\'ın Gizlilik Politikası"</a>"\'na uygun olarak gerçekleştirilir."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Bu özelliği etkinleştirmek için cihaza bir Google Hesabı ekleyin"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Senkronizasyon Google Apps for Business hesabı olan cihazlarda kullanılamaz"</string> <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 4d21599b5..b29a34020 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Скасувати"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Ваш особистий словник буде синхронізовано із серверами Google. Ми можемо збирати статистичні дані про частоту пошуку слів, щоб покращити наші продукти. Ці дані збираються та використовуються відповідно до "<a href="https://www.google.com/policies/privacy">"Політики конфіденційності Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Щоб увімкнути функцію, додайте на пристрій обліковий запис Google"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Пристрої з обліковими записами Google Apps for Business не синхронізуються"</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-ur-rPK/strings.xml b/java/res/values-ur-rPK/strings.xml index 074b7021b..5b2de6e0e 100644 --- a/java/res/values-ur-rPK/strings.xml +++ b/java/res/values-ur-rPK/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"منسوخ کریں"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"آپ کی ذاتی لغت کی مطابقت پذیری کی جائے گی اور Google سرورز میں اس کا بیک اپ لیا جائے گا۔ ہمارے پروڈکٹس کو بہتر بنانے میں مدد کرنے کیلئے الفاظ کی فریکوئنسی کے اعداد و شمار کی معلومات کو جمع کیا جا سکتا ہے۔ سبھی معلومات کی جمع آوری اور استعمال "<a href="https://www.google.com/policies/privacy">"Google کی رازداری کی پالیسی"</a>" کے مطابق ہوگا۔"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"یہ خصوصیت فعال کرنے کیلئے اس آلہ پر ایک Google اکاؤنٹ شامل کریں"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps برائے کاروبار اکاؤنٹس کے ساتھ آلات کیلئے مطابقت پذیری دستیاب نہیں ہے"</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-uz-rUZ/strings.xml b/java/res/values-uz-rUZ/strings.xml index 64261ff03..73f24eb3b 100644 --- a/java/res/values-uz-rUZ/strings.xml +++ b/java/res/values-uz-rUZ/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Bekor qilish"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Sizning shaxsiy lug\'atingiz Google serverlarida sinxronlashadi va zahiraga nusxalanadi. So‘zning qayta uchrash ko‘rsatkichi statistik ma’lumotlari, bizga mahsulotlarimiz sifatini oshirishda ko‘maklashish uchun to‘planishi mumkin. Barcha ma’lumotlar yig‘ilishi va foydalanishi "<a href="https://www.google.com/policies/privacy">" Google maxfiylik siyosati "</a>" shartlari bo‘yicha amalga oshadi."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Ushbu imkoniyatni yoqish uchun, iltimos, Google hisobingizni qo‘shing"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"“Biznes uchun Google Apps” hisobi mavjud qurilmalarda sinxronlab bo‘lmaydi"</string> <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 14a029d38..38d8a87e1 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Hủy"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Từ điển cá nhân của bạn sẽ được đồng bộ hóa và sao lưu vào máy chủ Google. Chúng tôi có thể thu thập thông tin thống kê về tần suất của từ để giúp cải thiện sản phẩm của mình. Việc thu thập và sử dụng tất cả thông tin sẽ tuân thủ "<a href="https://www.google.com/policies/privacy">"Chính sách bảo mật của Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Vui lòng thêm một tài khoản Google vào thiết bị này để bật tính năng này"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Tính năng đồng bộ hóa không khả dụng cho các thiết bị có tài khoản Google Apps for Business"</string> <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 e1bbe15f2..6e9fb9ff7 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"取消"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"您的个人字典将会同步并备份到 Google 服务器。系统可能会收集字词出现频率的统计信息,来帮助改进我们的产品。所有信息的收集和使用都会遵守 "<a href="https://www.google.com/policies/privacy">"Google 隐私权政策"</a>"。"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"要启用此功能,请将 Google 帐户添加到此设备中"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"在登录了 Google Apps for Business 帐户的设备上无法使用同步功能"</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-zh-rHK/strings.xml b/java/res/values-zh-rHK/strings.xml index a3dd148a0..ca682bfdc 100644 --- a/java/res/values-zh-rHK/strings.xml +++ b/java/res/values-zh-rHK/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"取消"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"您的個人字典將同步處理並備份至 Google 伺服器。系統可能會收集字詞頻率的統計資料,以協助改善產品。所有資訊的收集和使用均遵循《"<a href="https://www.google.com/policies/privacy">"Google 私隱權政策"</a>"》。"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"請在這部裝置加入 Google 帳戶,以加入此功能。"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"擁有 Google Apps for Business 帳戶的裝置無法使用同步功能"</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-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index 21b3498d2..cfd083cdc 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"取消"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"系統將會同步處理您的個人字典並備份至 Google 伺服器,同時也會收集字詞頻率的統計資訊,藉此改善我們的產品品質。所有資訊的收集和使用方式都會遵守《"<a href="https://www.google.com/policies/privacy">"Google 隱私權政策"</a>"》的規定。"</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"請將 Google 帳戶新增到這個裝置以啟用這項功能"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"採用 Google Apps for Business 帳戶的裝置無法使用同步處理功能"</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-zu/strings.xml b/java/res/values-zu/strings.xml index 9ed97428b..d1dd5922f 100644 --- a/java/res/values-zu/strings.xml +++ b/java/res/values-zu/strings.xml @@ -45,6 +45,7 @@ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Khansela"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Isichazamazwi sakho somuntu siqu sizovumelaniswa siphinde senziwe isipele kumaseva we-Google. Ulwazi lezibalo lemvamisa yegama lingaqoqwa ukusiza ukuthuthukisa imikhiqizo yethu. Ukuqoqwa nokusetshenziswa kwalo lonke ulwazi kuzohambisana ne-"<a href="https://www.google.com/policies/privacy">"Inqubomgomo Yobumfihlo ye-Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Sicela ungeze i-akhawunti ye-Google kule divayisi ukuze unike amandla lesi sici"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Ukuvumelanisa akutholakali kumadivayisi anezinhlelo zokusebenza ze-Google zama-akhawunti webhizinisi"</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 4973a99f5..28dabf682 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -129,6 +129,9 @@ <!-- Description for option to enable auto capitalization of sentences --> <string name="auto_cap_summary">Capitalize the first word of each sentence</string> + <!-- Option to edit personal dictionary. [CHAR_LIMIT=30]--> + <string name="edit_personal_dictionary">Personal dictionary</string> + <!-- Option to configure dictionaries --> <string name="configure_dictionaries_title">Add-on dictionaries</string> <!-- Name of the main dictionary, as opposed to auxiliary dictionaries (medical/entertainment/sports...) --> diff --git a/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java b/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java index a2789cc1a..fbc899192 100644 --- a/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java +++ b/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java @@ -34,6 +34,8 @@ import java.util.LinkedList; import java.util.List; import java.util.TreeMap; +import javax.annotation.Nullable; + /** * Various helper functions for the state database */ @@ -705,6 +707,7 @@ public class MetadataDbHelper extends SQLiteOpenHelper { * @param version the word list version. * @return the metadata about this word list. */ + @Nullable public static ContentValues getContentValuesByWordListId(final SQLiteDatabase db, final String id, final int version) { final Cursor cursor = db.query(METADATA_TABLE_NAME, diff --git a/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java b/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java index 329b9f62e..e5d632fbe 100644 --- a/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java +++ b/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java @@ -19,6 +19,7 @@ package com.android.inputmethod.dictionarypack; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; +import android.util.Log; import java.io.IOException; import java.io.InputStreamReader; @@ -30,10 +31,13 @@ import java.util.List; * Helper class to easy up manipulation of dictionary pack metadata. */ public class MetadataHandler { + + public static final String TAG = MetadataHandler.class.getSimpleName(); + // The canonical file name for metadata. This is not the name of a real file on the // device, but a symbolic name used in the database and in metadata handling. It is never // tested against, only used for human-readability as the file name for the metadata. - public final static String METADATA_FILENAME = "metadata.json"; + public static final String METADATA_FILENAME = "metadata.json"; /** * Reads the data from the cursor and store it in metadata objects. @@ -114,6 +118,14 @@ public class MetadataHandler { final String clientId, final String wordListId, final int version) { final ContentValues contentValues = MetadataDbHelper.getContentValuesByWordListId( MetadataDbHelper.getDb(context, clientId), wordListId, version); + if (contentValues == null) { + // TODO: Figure out why this would happen. + // Check if this happens when the metadata gets updated in the background. + Log.e(TAG, String.format( "Unable to find the current metadata for wordlist " + + "(clientId=%s, wordListId=%s, version=%d) on the database", + clientId, wordListId, version)); + return null; + } return WordListMetadata.createFromContentValues(contentValues); } diff --git a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java index 30ff0b8ee..e720f3cd0 100644 --- a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java +++ b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java @@ -1143,6 +1143,9 @@ public final class UpdateHandler { } final WordListMetadata wordListMetaData = MetadataHandler.getCurrentMetadataForWordList( context, clientId, wordlistId, version); + if (wordListMetaData == null) { + return; + } final ActionBatch actions = new ActionBatch(); actions.add(new ActionBatch.StartDownloadAction( diff --git a/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java b/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java index 59f75e4ed..99cffb816 100644 --- a/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java +++ b/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java @@ -18,6 +18,8 @@ package com.android.inputmethod.dictionarypack; import android.content.ContentValues; +import javax.annotation.Nonnull; + /** * The metadata for a single word list. * @@ -77,7 +79,7 @@ public class WordListMetadata { * * If this lacks any required field, IllegalArgumentException is thrown. */ - public static WordListMetadata createFromContentValues(final ContentValues values) { + public static WordListMetadata createFromContentValues(@Nonnull final ContentValues values) { final String id = values.getAsString(MetadataDbHelper.WORDLISTID_COLUMN); final Integer type = values.getAsInteger(MetadataDbHelper.TYPE_COLUMN); final String description = values.getAsString(MetadataDbHelper.DESCRIPTION_COLUMN); diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java index 16dcb3208..e00219c98 100644 --- a/java/src/com/android/inputmethod/latin/Dictionary.java +++ b/java/src/com/android/inputmethod/latin/Dictionary.java @@ -39,6 +39,10 @@ public abstract class Dictionary { public static final String TYPE_USER_TYPED = "user_typed"; public static final PhonyDictionary DICTIONARY_USER_TYPED = new PhonyDictionary(TYPE_USER_TYPED); + public static final String TYPE_USER_SHORTCUT = "user_shortcut"; + public static final PhonyDictionary DICTIONARY_USER_SHORTCUT = + new PhonyDictionary(TYPE_USER_SHORTCUT); + public static final String TYPE_APPLICATION_DEFINED = "application_defined"; public static final PhonyDictionary DICTIONARY_APPLICATION_DEFINED = new PhonyDictionary(TYPE_APPLICATION_DEFINED); diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 37899d21e..907095746 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -650,7 +650,8 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { reloadDictionaryIfRequired(); final String dictName = mDictName; final File dictFile = mDictFile; - final AsyncResultHolder<DictionaryStats> result = new AsyncResultHolder<>(); + final AsyncResultHolder<DictionaryStats> result = + new AsyncResultHolder<>("DictionaryStats"); asyncExecuteTaskWithLock(mLock.readLock(), new Runnable() { @Override public void run() { @@ -724,7 +725,8 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { */ public WordProperty[] getWordPropertiesForSyncing() { reloadDictionaryIfRequired(); - final AsyncResultHolder<WordProperty[]> result = new AsyncResultHolder<>(); + final AsyncResultHolder<WordProperty[]> result = + new AsyncResultHolder<>("WordPropertiesForSync"); asyncExecuteTaskWithLock(mLock.readLock(), new Runnable() { @Override public void run() { diff --git a/java/src/com/android/inputmethod/latin/spellcheck/UserDictionaryLookup.java b/java/src/com/android/inputmethod/latin/UserDictionaryLookup.java index f2491f478..2569723b0 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/UserDictionaryLookup.java +++ b/java/src/com/android/inputmethod/latin/UserDictionaryLookup.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.inputmethod.latin.spellcheck; +package com.android.inputmethod.latin; import android.content.ContentResolver; import android.content.Context; @@ -22,9 +22,11 @@ import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.provider.UserDictionary; +import android.text.TextUtils; import android.util.Log; import com.android.inputmethod.annotations.UsedForTesting; +import com.android.inputmethod.latin.common.CollectionUtils; import com.android.inputmethod.latin.common.LocaleUtils; import com.android.inputmethod.latin.utils.ExecutorUtils; @@ -36,6 +38,9 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + /** * UserDictionaryLookup provides the ability to lookup into the system-wide "Personal dictionary". * @@ -47,7 +52,6 @@ import java.util.concurrent.TimeUnit; * onCreate and close() it in onDestroy. */ public class UserDictionaryLookup implements Closeable { - private static final String TAG = UserDictionaryLookup.class.getSimpleName(); /** * This guards the execution of any Log.d() logging, so that if false, they are not even @@ -79,7 +83,12 @@ public class UserDictionaryLookup implements Closeable { @UsedForTesting static final int RELOAD_DELAY_MS = 200; + @UsedForTesting + static final Locale ANY_LOCALE = new Locale(""); + + private final String mTag; private final ContentResolver mResolver; + private final String mServiceName; /** * Runnable that calls loadUserDictionary(). @@ -88,12 +97,11 @@ public class UserDictionaryLookup implements Closeable { @Override public void run() { if (DEBUG) { - Log.d(TAG, "Executing (re)load"); + Log.d(mTag, "Executing (re)load"); } loadUserDictionary(); } } - private final UserDictionaryLoader mLoader = new UserDictionaryLoader(); /** * Content observer for UserDictionary changes. It has the following properties: @@ -122,7 +130,7 @@ public class UserDictionaryLookup implements Closeable { @Override public void onChange(boolean selfChange, Uri uri) { if (DEBUG) { - Log.d(TAG, "Received content observer onChange notification for URI: " + uri); + Log.d(mTag, "Received content observer onChange notification for URI: " + uri); } // Cancel (but don't interrupt) any pending reloads (except the initial load). if (mReloadFuture != null && !mReloadFuture.isCancelled() && @@ -131,20 +139,20 @@ public class UserDictionaryLookup implements Closeable { boolean isCancelled = mReloadFuture.cancel(false); if (DEBUG) { if (isCancelled) { - Log.d(TAG, "Successfully canceled previous reload request"); + Log.d(mTag, "Successfully canceled previous reload request"); } else { - Log.d(TAG, "Unable to cancel previous reload request"); + Log.d(mTag, "Unable to cancel previous reload request"); } } } if (DEBUG) { - Log.d(TAG, "Scheduling reload in " + RELOAD_DELAY_MS + " ms"); + Log.d(mTag, "Scheduling reload in " + RELOAD_DELAY_MS + " ms"); } // Schedule a new reload after RELOAD_DELAY_MS. - mReloadFuture = ExecutorUtils.getBackgroundExecutor(ExecutorUtils.SPELLING) - .schedule(mLoader, RELOAD_DELAY_MS, TimeUnit.MILLISECONDS); + mReloadFuture = ExecutorUtils.getBackgroundExecutor(mServiceName) + .schedule(new UserDictionaryLoader(), RELOAD_DELAY_MS, TimeUnit.MILLISECONDS); } } private final ContentObserver mObserver = new UserDictionaryContentObserver(); @@ -167,6 +175,12 @@ public class UserDictionaryLookup implements Closeable { private volatile HashMap<String, ArrayList<Locale>> mDictWords; /** + * We store a map from a shortcut to a word for each locale. + * Shortcuts that apply to any locale are keyed by {@link #ANY_LOCALE}. + */ + private volatile HashMap<Locale, HashMap<String, String>> mShortcutsPerLocale; + + /** * The last-scheduled reload future. Saved in order to cancel a pending reload if a new one * is coming. */ @@ -175,18 +189,24 @@ public class UserDictionaryLookup implements Closeable { /** * @param context the context from which to obtain content resolver */ - public UserDictionaryLookup(Context context) { - if (DEBUG) { - Log.d(TAG, "UserDictionaryLookup constructor with context: " + context); - } + public UserDictionaryLookup(@Nonnull final Context context, @Nonnull final String serviceName) { + mTag = serviceName + ".UserDictionaryLookup"; + + Log.i(mTag, "create()"); + + mServiceName = serviceName; // Obtain a content resolver. mResolver = context.getContentResolver(); + } + + public void open() { + Log.i(mTag, "open()"); // Schedule the initial load to run immediately. It's possible that the first call to // isValidWord occurs before the dictionary has actually loaded, so it should not // assume that the dictionary has been loaded. - ExecutorUtils.getBackgroundExecutor(ExecutorUtils.SPELLING).execute(mLoader); + loadUserDictionary(); // Register the observer to be notified on changes to the UserDictionary and all individual // items. @@ -210,7 +230,7 @@ public class UserDictionaryLookup implements Closeable { public void finalize() throws Throwable { try { if (DEBUG) { - Log.d(TAG, "Finalize called, calling close()"); + Log.d(mTag, "Finalize called, calling close()"); } close(); } finally { @@ -227,7 +247,7 @@ public class UserDictionaryLookup implements Closeable { @Override public void close() { if (DEBUG) { - Log.d(TAG, "Close called (no pun intended), cleaning up executor and observer"); + Log.d(mTag, "Close called (no pun intended), cleaning up executor and observer"); } if (mIsClosed.compareAndSet(false, true)) { // Unregister the content observer. @@ -240,9 +260,8 @@ public class UserDictionaryLookup implements Closeable { * * @return true if the initial load is successful */ - @UsedForTesting - boolean isLoaded() { - return mDictWords != null; + public boolean isLoaded() { + return mDictWords != null && mShortcutsPerLocale != null; } /** @@ -255,14 +274,13 @@ public class UserDictionaryLookup implements Closeable { * @param locale the locale in which to match the word * @return true iff the word has been matched for this locale in the UserDictionary. */ - public boolean isValidWord( - final String word, final Locale locale) { + public boolean isValidWord(@Nonnull final String word, @Nonnull final Locale locale) { if (!isLoaded()) { // This is a corner case in the event the initial load of UserDictionary has not // been loaded. In that case, we assume the word is not a valid word in // UserDictionary. if (DEBUG) { - Log.d(TAG, "isValidWord invoked, but initial load not complete"); + Log.d(mTag, "isValidWord invoked, but initial load not complete"); } return false; } @@ -271,7 +289,7 @@ public class UserDictionaryLookup implements Closeable { final HashMap<String, ArrayList<Locale>> dictWords = mDictWords; if (DEBUG) { - Log.d(TAG, "isValidWord invoked for word [" + word + + Log.d(mTag, "isValidWord invoked for word [" + word + "] in locale " + locale); } // Lowercase the word using the given locale. Note, that dictionary @@ -282,13 +300,13 @@ public class UserDictionaryLookup implements Closeable { final ArrayList<Locale> dictLocales = dictWords.get(lowercased); if (null == dictLocales) { if (DEBUG) { - Log.d(TAG, "isValidWord=false, since there is no entry for " + + Log.d(mTag, "isValidWord=false, since there is no entry for " + "lowercased word [" + lowercased + "]"); } return false; } else { if (DEBUG) { - Log.d(TAG, "isValidWord found an entry for lowercased word [" + lowercased + + Log.d(mTag, "isValidWord found an entry for lowercased word [" + lowercased + "]; examining locales"); } // Iterate over the locales this word is in. @@ -296,28 +314,90 @@ public class UserDictionaryLookup implements Closeable { final int matchLevel = LocaleUtils.getMatchLevel(dictLocale.toString(), locale.toString()); if (DEBUG) { - Log.d(TAG, "matchLevel for dictLocale=" + dictLocale + ", locale=" + + Log.d(mTag, "matchLevel for dictLocale=" + dictLocale + ", locale=" + locale + " is " + matchLevel); } if (LocaleUtils.isMatch(matchLevel)) { if (DEBUG) { - Log.d(TAG, "isValidWord=true, since matchLevel " + matchLevel + + Log.d(mTag, "isValidWord=true, since matchLevel " + matchLevel + " is a match"); } return true; } if (DEBUG) { - Log.d(TAG, "matchLevel " + matchLevel + " is not a match"); + Log.d(mTag, "matchLevel " + matchLevel + " is not a match"); } } if (DEBUG) { - Log.d(TAG, "isValidWord=false, since none of the locales matched"); + Log.d(mTag, "isValidWord=false, since none of the locales matched"); } return false; } } /** + * Expands the given shortcut for the given locale. + * + * @param shortcut the shortcut to expand + * @param inputLocale the locale in which to expand the shortcut + * @return expanded shortcut iff the word is a shortcut in the UserDictionary. + */ + @Nullable public String expandShortcut( + @Nonnull final String shortcut, @Nonnull final Locale inputLocale) { + if (DEBUG) { + Log.d(mTag, "expandShortcut() : Shortcut [" + shortcut + "] for [" + inputLocale + "]"); + } + + // Atomically obtain the current copy of mShortcuts; + final HashMap<Locale, HashMap<String, String>> shortcutsPerLocale = mShortcutsPerLocale; + + // Exit as early as possible. Most users don't use shortcuts. + if (CollectionUtils.isNullOrEmpty(shortcutsPerLocale)) { + return null; + } + + if (!TextUtils.isEmpty(inputLocale.getCountry())) { + // First look for the country-specific shortcut: en_US, en_UK, fr_FR, etc. + final String expansionForCountry = expandShortcut( + shortcutsPerLocale, shortcut, inputLocale); + if (!TextUtils.isEmpty(expansionForCountry)) { + return expansionForCountry; + } + } + + // Next look for the language-specific shortcut: en, fr, etc. + final Locale languageOnlyLocale = + LocaleUtils.constructLocaleFromString(inputLocale.getLanguage()); + final String expansionForLanguage = expandShortcut( + shortcutsPerLocale, shortcut, languageOnlyLocale); + if (!TextUtils.isEmpty(expansionForLanguage)) { + return expansionForLanguage; + } + + // If all else fails, loof for a global shortcut. + return expandShortcut(shortcutsPerLocale, shortcut, ANY_LOCALE); + } + + @Nullable private String expandShortcut( + @Nullable final HashMap<Locale, HashMap<String, String>> shortcutsPerLocale, + @Nonnull final String shortcut, + @Nonnull final Locale locale) { + if (CollectionUtils.isNullOrEmpty(shortcutsPerLocale)) { + return null; + } + final HashMap<String, String> localeShortcuts = shortcutsPerLocale.get(locale); + if (CollectionUtils.isNullOrEmpty(localeShortcuts)) { + return null; + } + final String word = localeShortcuts.get(shortcut); + if (DEBUG && word != null) { + Log.d(mTag, "expandShortcut() : Shortcut [" + shortcut + "] for [" + locale + + "] expands to [" + word + "]"); + } + return word; + } + + /** * Loads the UserDictionary in the current thread. * * Only one reload can happen at a time. If already running, will exit quickly. @@ -325,45 +405,36 @@ public class UserDictionaryLookup implements Closeable { private void loadUserDictionary() { // Bail out if already in the process of loading. if (!mIsLoading.compareAndSet(false, true)) { - if (DEBUG) { - Log.d(TAG, "Already in the process of loading UserDictionary, skipping"); - } + Log.i(mTag, "loadUserDictionary() : Already Loading (exit)"); return; } - if (DEBUG) { - Log.d(TAG, "Loading UserDictionary"); - } + Log.i(mTag, "loadUserDictionary() : Start Loading"); HashMap<String, ArrayList<Locale>> dictWords = new HashMap<>(); + HashMap<Locale, HashMap<String, String>> shortcutsPerLocale = new HashMap<>(); // Load the UserDictionary. Request that items be returned in the default sort order // for UserDictionary, which is by frequency. Cursor cursor = mResolver.query(UserDictionary.Words.CONTENT_URI, null, null, null, UserDictionary.Words.DEFAULT_SORT_ORDER); if (null == cursor || cursor.getCount() < 1) { - if (DEBUG) { - Log.d(TAG, "No entries found in UserDictionary"); - } + Log.i(mTag, "loadUserDictionary() : Empty"); } else { // Iterate over the entries in the UserDictionary. Note, that iteration is in // descending frequency by default. while (dictWords.size() < MAX_NUM_ENTRIES && cursor.moveToNext()) { // If there is no column for locale, skip this entry. An empty // locale on the other hand will not be skipped. - final int dictLocaleIndex = cursor.getColumnIndex( - UserDictionary.Words.LOCALE); + final int dictLocaleIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE); if (dictLocaleIndex < 0) { if (DEBUG) { - Log.d(TAG, "Encountered UserDictionary entry " + - "without LOCALE, skipping"); + Log.d(mTag, "Encountered UserDictionary entry without LOCALE, skipping"); } continue; } // If there is no column for word, skip this entry. - final int dictWordIndex = cursor.getColumnIndex( - UserDictionary.Words.WORD); + final int dictWordIndex = cursor.getColumnIndex(UserDictionary.Words.WORD); if (dictWordIndex < 0) { if (DEBUG) { - Log.d(TAG, "Encountered UserDictionary entry without " + - "WORD, skipping"); + Log.d(mTag, "Encountered UserDictionary entry without WORD, skipping"); } continue; } @@ -371,7 +442,7 @@ public class UserDictionaryLookup implements Closeable { final String rawDictWord = cursor.getString(dictWordIndex); if (null == rawDictWord) { if (DEBUG) { - Log.d(TAG, "Encountered null word"); + Log.d(mTag, "Encountered null word"); } continue; } @@ -380,19 +451,17 @@ public class UserDictionaryLookup implements Closeable { String localeString = cursor.getString(dictLocaleIndex); if (null == localeString) { if (DEBUG) { - Log.d(TAG, "Encountered null locale for word [" + + Log.d(mTag, "Encountered null locale for word [" + rawDictWord + "], assuming all locales"); } - // For purposes of LocaleUtils, an empty locale matches - // everything. + // For purposes of LocaleUtils, an empty locale matches everything. localeString = ""; } - final Locale dictLocale = LocaleUtils.constructLocaleFromString( - localeString); + final Locale dictLocale = LocaleUtils.constructLocaleFromString(localeString); // Lowercase the word before storing it. final String dictWord = rawDictWord.toLowerCase(dictLocale); if (DEBUG) { - Log.d(TAG, "Incorporating UserDictionary word [" + dictWord + + Log.d(mTag, "Incorporating UserDictionary word [" + dictWord + "] for locale " + dictLocale); } // Check if there is an existing entry for this word. @@ -400,7 +469,7 @@ public class UserDictionaryLookup implements Closeable { if (null == dictLocales) { // If there is no entry for this word, create one. if (DEBUG) { - Log.d(TAG, "Word [" + dictWord + + Log.d(mTag, "Word [" + dictWord + "] not seen for other locales, creating new entry"); } dictLocales = new ArrayList<>(); @@ -408,13 +477,42 @@ public class UserDictionaryLookup implements Closeable { } // Append the locale to the list of locales this word is in. dictLocales.add(dictLocale); + + // If there is no column for a shortcut, we're done. + final int shortcutIndex = cursor.getColumnIndex(UserDictionary.Words.SHORTCUT); + if (shortcutIndex < 0) { + if (DEBUG) { + Log.d(mTag, "Encountered UserDictionary entry without SHORTCUT, done"); + } + continue; + } + // If the shortcut is null, we're done. + final String shortcut = cursor.getString(shortcutIndex); + if (shortcut == null) { + if (DEBUG) { + Log.d(mTag, "Encountered null shortcut"); + } + continue; + } + // Else, save the shortcut. + HashMap<String, String> localeShortcuts = shortcutsPerLocale.get(dictLocale); + if (localeShortcuts == null) { + localeShortcuts = new HashMap<>(); + shortcutsPerLocale.put(dictLocale, localeShortcuts); + } + // Map to the raw input, which might be capitalized. + // This lets the user create a shortcut from "gm" to "General Motors". + localeShortcuts.put(shortcut, rawDictWord); } } - // Atomically replace the copy of mDictWords. + // Atomically replace the copy of mDictWords and mShortcuts. mDictWords = dictWords; + mShortcutsPerLocale = shortcutsPerLocale; // Allow other calls to loadUserDictionary to execute now. mIsLoading.set(false); + + Log.i(mTag, "loadUserDictionary() : Loaded " + mDictWords.size() + " words"); } } diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index cf4064b72..4bee94ad4 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -104,6 +104,10 @@ public final class InputLogic { private boolean mIsAutoCorrectionIndicatorOn; private long mDoubleSpacePeriodCountdownStart; + // The word being corrected while the cursor is in the middle of the word. + // Note: This does not have a composing span, so it must be handled separately. + private String mWordBeingCorrectedByCursor = null; + /** * Create a new instance of the input logic. * @param latinIME the instance of the parent LatinIME. We should remove this when we can. @@ -133,6 +137,7 @@ public final class InputLogic { */ public void startInput(final String combiningSpec, final SettingsValues settingsValues) { mEnteredText = null; + mWordBeingCorrectedByCursor = null; if (!mWordComposer.getTypedWord().isEmpty()) { // For messaging apps that offer send button, the IME does not get the opportunity // to capture the last word. This block should capture those uncommitted words. @@ -247,6 +252,7 @@ public final class InputLogic { // Space state must be updated before calling updateShiftState mSpaceState = SpaceState.NONE; mEnteredText = text; + mWordBeingCorrectedByCursor = null; inputTransaction.setDidAffectContents(); inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW); return inputTransaction; @@ -386,6 +392,15 @@ public final class InputLogic { // it here, which means we'll keep outdated suggestions for a split second but the // visual result is better. resetEntireInputState(newSelStart, newSelEnd, false /* clearSuggestionStrip */); + // If the user is in the middle of correcting a word, we should learn it before moving + // the cursor away. + if (!TextUtils.isEmpty(mWordBeingCorrectedByCursor)) { + final int timeStampInSeconds = (int)TimeUnit.MILLISECONDS.toSeconds( + System.currentTimeMillis()); + mDictionaryFacilitator.addToUserHistory(mWordBeingCorrectedByCursor, false, + NgramContext.EMPTY_PREV_WORDS_INFO, timeStampInSeconds, + settingsValues.mBlockPotentiallyOffensive); + } } else { // resetEntireInputState calls resetCachesUponCursorMove, but forcing the // composition to end. But in all cases where we don't reset the entire input @@ -401,6 +416,7 @@ public final class InputLogic { mLatinIME.mHandler.postResumeSuggestions(true /* shouldDelay */); // Stop the last recapitalization, if started. mRecapitalizeStatus.stop(); + mWordBeingCorrectedByCursor = null; return true; } @@ -420,6 +436,7 @@ public final class InputLogic { public InputTransaction onCodeInput(final SettingsValues settingsValues, @Nonnull final Event event, final int keyboardShiftMode, final int currentKeyboardScriptId, final LatinIME.UIHandler handler) { + mWordBeingCorrectedByCursor = null; final Event processedEvent = mWordComposer.processEvent(event); final InputTransaction inputTransaction = new InputTransaction(settingsValues, processedEvent, SystemClock.uptimeMillis(), mSpaceState, @@ -453,6 +470,14 @@ public final class InputLogic { } currentEvent = currentEvent.mNextEvent; } + // Try to record the word being corrected when the user enters a word character or + // the backspace key. + if (!mWordComposer.isComposingWord() + && (settingsValues.isWordCodePoint(processedEvent.mCodePoint) || + processedEvent.mKeyCode == Constants.CODE_DELETE)) { + mWordBeingCorrectedByCursor = getWordAtCursor( + settingsValues, currentKeyboardScriptId); + } if (!inputTransaction.didAutoCorrect() && processedEvent.mKeyCode != Constants.CODE_SHIFT && processedEvent.mKeyCode != Constants.CODE_CAPSLOCK && processedEvent.mKeyCode != Constants.CODE_SWITCH_ALPHA_SYMBOL) @@ -466,6 +491,7 @@ public final class InputLogic { public void onStartBatchInput(final SettingsValues settingsValues, final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) { + mWordBeingCorrectedByCursor = null; mInputLogicHandler.onStartBatchInput(); handler.showGesturePreviewAndSuggestionStrip( SuggestedWords.getEmptyInstance(), false /* dismissGestureFloatingPreviewText */); @@ -1151,27 +1177,30 @@ public final class InputLogic { } } - boolean unlearnWordBeingDeleted( - final SettingsValues settingsValues,final int currentKeyboardScriptId) { - // If we just started backspacing to delete a previous word (but have not - // entered the composing state yet), unlearn the word. - // TODO: Consider tracking whether or not this word was typed by the user. + String getWordAtCursor(final SettingsValues settingsValues, final int currentKeyboardScriptId) { if (!mConnection.hasSelection() && settingsValues.isSuggestionsEnabledPerUserSettings() - && settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces - && !mConnection.isCursorFollowedByWordCharacter( - settingsValues.mSpacingAndPunctuations)) { + && settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) { final TextRange range = mConnection.getWordRangeAtCursor( settingsValues.mSpacingAndPunctuations, currentKeyboardScriptId); - if (range == null) { - // Happens if we don't have an input connection at all. - return false; + if (range != null) { + return range.mWord.toString(); } - final String wordBeingDeleted = range.mWord.toString(); - if (!wordBeingDeleted.isEmpty()) { - unlearnWord(wordBeingDeleted, settingsValues, - Constants.EVENT_BACKSPACE); + } + return ""; + } + + boolean unlearnWordBeingDeleted( + final SettingsValues settingsValues, final int currentKeyboardScriptId) { + // If we just started backspacing to delete a previous word (but have not + // entered the composing state yet), unlearn the word. + // TODO: Consider tracking whether or not this word was typed by the user. + if (!mConnection.isCursorFollowedByWordCharacter(settingsValues.mSpacingAndPunctuations)) { + final String wordBeingDeleted = getWordAtCursor( + settingsValues, currentKeyboardScriptId); + if (!TextUtils.isEmpty(wordBeingDeleted)) { + unlearnWord(wordBeingDeleted, settingsValues, Constants.EVENT_BACKSPACE); return true; } } @@ -1391,6 +1420,11 @@ public final class InputLogic { public void performUpdateSuggestionStripSync(final SettingsValues settingsValues, final int inputStyle) { + long startTimeMillis = 0; + if (DebugFlags.DEBUG_ENABLED) { + startTimeMillis = System.currentTimeMillis(); + Log.d(TAG, "performUpdateSuggestionStripSync()"); + } // Check if we have a suggestion engine attached. if (!settingsValues.needsToLookupSuggestions()) { if (mWordComposer.isComposingWord()) { @@ -1407,7 +1441,7 @@ public final class InputLogic { return; } - final AsyncResultHolder<SuggestedWords> holder = new AsyncResultHolder<>(); + final AsyncResultHolder<SuggestedWords> holder = new AsyncResultHolder<>("Suggest"); mInputLogicHandler.getSuggestedWords(inputStyle, SuggestedWords.NOT_A_SEQUENCE_NUMBER, new OnGetSuggestedWordsCallback() { @Override @@ -1437,6 +1471,10 @@ public final class InputLogic { if (suggestedWords != null) { mSuggestionStripViewAccessor.showSuggestionStrip(suggestedWords); } + if (DebugFlags.DEBUG_ENABLED) { + long runTimeMillis = System.currentTimeMillis() - startTimeMillis; + Log.d(TAG, "performUpdateSuggestionStripSync() : " + runTimeMillis + " ms to finish"); + } } /** @@ -2075,24 +2113,60 @@ public final class InputLogic { */ private void commitChosenWord(final SettingsValues settingsValues, final String chosenWord, final int commitType, final String separatorString) { + long startTimeMillis = 0; + if (DebugFlags.DEBUG_ENABLED) { + startTimeMillis = System.currentTimeMillis(); + Log.d(TAG, "commitChosenWord() : [" + chosenWord + "]"); + } final SuggestedWords suggestedWords = mSuggestedWords; final CharSequence chosenWordWithSuggestions = SuggestionSpanUtils.getTextWithSuggestionSpan(mLatinIME, chosenWord, suggestedWords); + if (DebugFlags.DEBUG_ENABLED) { + long runTimeMillis = System.currentTimeMillis() - startTimeMillis; + Log.d(TAG, "commitChosenWord() : " + runTimeMillis + " ms to run " + + "SuggestionSpanUtils.getTextWithSuggestionSpan()"); + startTimeMillis = System.currentTimeMillis(); + } // When we are composing word, get n-gram context from the 2nd previous word because the // 1st previous word is the word to be committed. Otherwise get n-gram context from the 1st // previous word. final NgramContext ngramContext = mConnection.getNgramContextFromNthPreviousWord( settingsValues.mSpacingAndPunctuations, mWordComposer.isComposingWord() ? 2 : 1); + if (DebugFlags.DEBUG_ENABLED) { + long runTimeMillis = System.currentTimeMillis() - startTimeMillis; + Log.d(TAG, "commitChosenWord() : " + runTimeMillis + " ms to run " + + "Connection.getNgramContextFromNthPreviousWord()"); + Log.d(TAG, "commitChosenWord() : NgramContext = " + ngramContext); + startTimeMillis = System.currentTimeMillis(); + } mConnection.commitText(chosenWordWithSuggestions, 1); + if (DebugFlags.DEBUG_ENABLED) { + long runTimeMillis = System.currentTimeMillis() - startTimeMillis; + Log.d(TAG, "commitChosenWord() : " + runTimeMillis + " ms to run " + + "Connection.commitText"); + startTimeMillis = System.currentTimeMillis(); + } // Add the word to the user history dictionary performAdditionToUserHistoryDictionary(settingsValues, chosenWord, ngramContext); + if (DebugFlags.DEBUG_ENABLED) { + long runTimeMillis = System.currentTimeMillis() - startTimeMillis; + Log.d(TAG, "commitChosenWord() : " + runTimeMillis + " ms to run " + + "performAdditionToUserHistoryDictionary()"); + startTimeMillis = System.currentTimeMillis(); + } // TODO: figure out here if this is an auto-correct or if the best word is actually // what user typed. Note: currently this is done much later in // LastComposedWord#didCommitTypedWord by string equality of the remembered // strings. mLastComposedWord = mWordComposer.commitWord(commitType, chosenWordWithSuggestions, separatorString, ngramContext); + if (DebugFlags.DEBUG_ENABLED) { + long runTimeMillis = System.currentTimeMillis() - startTimeMillis; + Log.d(TAG, "commitChosenWord() : " + runTimeMillis + " ms to run " + + "WordComposer.commitWord()"); + startTimeMillis = System.currentTimeMillis(); + } } /** diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java index d112e7200..94573a6d5 100644 --- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java @@ -209,7 +209,7 @@ public class SettingsValues { prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_Y_SCALE, defaultKeyPreviewDismissEndScale); mDisplayOrientation = res.getConfiguration().orientation; - mAppWorkarounds = new AsyncResultHolder<>(); + mAppWorkarounds = new AsyncResultHolder<>("AppWorkarounds"); final PackageInfo packageInfo = TargetPackageInfoGetterTask.getCachedPackageInfo( mInputAttributes.mTargetApplicationPackageName); if (null != packageInfo) { diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java index 766b385a9..4625e8e8b 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java @@ -24,7 +24,6 @@ import android.text.InputType; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodSubtype; import android.view.textservice.SuggestionsInfo; -import android.util.Log; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardId; @@ -83,7 +82,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService public static final String SINGLE_QUOTE = "\u0027"; public static final String APOSTROPHE = "\u2019"; - private UserDictionaryLookup mUserDictionaryLookup; public AndroidSpellCheckerService() { super(); @@ -95,30 +93,11 @@ public final class AndroidSpellCheckerService extends SpellCheckerService @Override public void onCreate() { super.onCreate(); - mRecommendedThreshold = - Float.parseFloat(getString(R.string.spellchecker_recommended_threshold_value)); + mRecommendedThreshold = Float.parseFloat( + getString(R.string.spellchecker_recommended_threshold_value)); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.registerOnSharedPreferenceChangeListener(this); onSharedPreferenceChanged(prefs, PREF_USE_CONTACTS_KEY); - // Create a UserDictionaryLookup. It needs to be close()d and set to null in onDestroy. - if (mUserDictionaryLookup == null) { - if (DEBUG) { - Log.d(TAG, "Creating mUserDictionaryLookup in onCreate"); - } - mUserDictionaryLookup = new UserDictionaryLookup(this); - } else if (DEBUG) { - Log.d(TAG, "mUserDictionaryLookup already created before onCreate"); - } - } - - @Override - public void onDestroy() { - if (DEBUG) { - Log.d(TAG, "Closing and dereferencing mUserDictionaryLookup in onDestroy"); - } - mUserDictionaryLookup.close(); - mUserDictionaryLookup = null; - super.onDestroy(); } public float getRecommendedThreshold() { @@ -181,16 +160,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService public boolean isValidWord(final Locale locale, final String word) { mSemaphore.acquireUninterruptibly(); try { - if (mUserDictionaryLookup.isValidWord(word, locale)) { - if (DEBUG) { - Log.d(TAG, "mUserDictionaryLookup.isValidWord(" + word + ")=true"); - } - return true; - } else { - if (DEBUG) { - Log.d(TAG, "mUserDictionaryLookup.isValidWord(" + word + ")=false"); - } - } DictionaryFacilitator dictionaryFacilitatorForLocale = mDictionaryFacilitatorCache.get(locale); return dictionaryFacilitatorForLocale.isValidSpellingWord(word); diff --git a/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java b/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java index 952ac2a62..1525f2d56 100644 --- a/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java +++ b/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java @@ -16,6 +16,8 @@ package com.android.inputmethod.latin.utils; +import android.util.Log; + import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -29,9 +31,11 @@ public class AsyncResultHolder<E> { private final Object mLock = new Object(); private E mResult; + private final String mTag; private final CountDownLatch mLatch; - public AsyncResultHolder() { + public AsyncResultHolder(final String tag) { + mTag = tag; mLatch = new CountDownLatch(1); } @@ -61,6 +65,7 @@ public class AsyncResultHolder<E> { try { return mLatch.await(timeOut, TimeUnit.MILLISECONDS) ? mResult : defaultValue; } catch (InterruptedException e) { + Log.w(mTag, "get() : Interrupted after " + timeOut + " ms"); return defaultValue; } } diff --git a/tests/src/com/android/inputmethod/latin/spellcheck/UserDictionaryLookupTest.java b/tests/src/com/android/inputmethod/latin/UserDictionaryLookupTest.java index e5c813942..d8060f286 100644 --- a/tests/src/com/android/inputmethod/latin/spellcheck/UserDictionaryLookupTest.java +++ b/tests/src/com/android/inputmethod/latin/UserDictionaryLookupTest.java @@ -14,7 +14,9 @@ * limitations under the License. */ -package com.android.inputmethod.latin.spellcheck; +package com.android.inputmethod.latin; + +import static com.android.inputmethod.latin.UserDictionaryLookup.ANY_LOCALE; import android.annotation.SuppressLint; import android.content.ContentResolver; @@ -25,11 +27,13 @@ import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; +import com.android.inputmethod.latin.utils.ExecutorUtils; + import java.util.HashSet; import java.util.Locale; /** - * Unit tests for {@link UserDictionaryLookup}. + * Unit tests for {@link com.android.inputmethod.latin.UserDictionaryLookup}. * * Note, this test doesn't mock out the ContentResolver, in order to make sure UserDictionaryLookup * works in a real setting. @@ -68,9 +72,9 @@ public class UserDictionaryLookupTest extends AndroidTestCase { * @return the Uri for the given word */ @SuppressLint("NewApi") - private Uri addWord(final String word, final Locale locale, int frequency) { + private Uri addWord(final String word, final Locale locale, int frequency, String shortcut) { // Add the given word for the given locale. - UserDictionary.Words.addWord(mContext, word, frequency, null, locale); + UserDictionary.Words.addWord(mContext, word, frequency, shortcut, locale); // Obtain an Uri for the given word. Cursor cursor = mContentResolver.query(UserDictionary.Words.CONTENT_URI, null, UserDictionary.Words.WORD + "='" + word + "'", null, null); @@ -94,14 +98,78 @@ public class UserDictionaryLookupTest extends AndroidTestCase { mContentResolver.delete(uri, null, null); } + private UserDictionaryLookup setUpShortcut(final Locale locale) { + // Insert "shortcut" => "Expansion" in the UserDictionary for the given locale. + addWord("Expansion", locale, 17, "shortcut"); + + // Create the UserDictionaryLookup and wait until it's loaded. + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); + while (!lookup.isLoaded()) { + } + return lookup; + } + + public void testShortcutKeyMatching() { + Log.d(TAG, "testShortcutKeyMatching"); + UserDictionaryLookup lookup = setUpShortcut(Locale.US); + + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); + assertNull(lookup.expandShortcut("Shortcut", Locale.US)); + assertNull(lookup.expandShortcut("SHORTCUT", Locale.US)); + assertNull(lookup.expandShortcut("shortcu", Locale.US)); + assertNull(lookup.expandShortcut("shortcutt", Locale.US)); + + lookup.close(); + } + + public void testShortcutMatchesInputCountry() { + Log.d(TAG, "testShortcutMatchesInputCountry"); + UserDictionaryLookup lookup = setUpShortcut(Locale.US); + + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); + assertNull(lookup.expandShortcut("shortcut", Locale.UK)); + assertNull(lookup.expandShortcut("shortcut", Locale.ENGLISH)); + assertNull(lookup.expandShortcut("shortcut", Locale.FRENCH)); + assertNull(lookup.expandShortcut("shortcut", ANY_LOCALE)); + + lookup.close(); + } + + public void testShortcutMatchesInputLanguage() { + Log.d(TAG, "testShortcutMatchesInputLanguage"); + UserDictionaryLookup lookup = setUpShortcut(Locale.ENGLISH); + + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.UK)); + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.ENGLISH)); + assertNull(lookup.expandShortcut("shortcut", Locale.FRENCH)); + assertNull(lookup.expandShortcut("shortcut", ANY_LOCALE)); + + lookup.close(); + } + + public void testShortcutMatchesAnyLocale() { + UserDictionaryLookup lookup = setUpShortcut(UserDictionaryLookup.ANY_LOCALE); + + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.UK)); + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.ENGLISH)); + assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.FRENCH)); + assertEquals("Expansion", lookup.expandShortcut("shortcut", ANY_LOCALE)); + + lookup.close(); + } + public void testExactLocaleMatch() { Log.d(TAG, "testExactLocaleMatch"); // Insert "Foo" as capitalized in the UserDictionary under en_US locale. - addWord("Foo", Locale.US, 17); + addWord("Foo", Locale.US, 17, null); // Create the UserDictionaryLookup and wait until it's loaded. - UserDictionaryLookup lookup = new UserDictionaryLookup(mContext); + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); while (!lookup.isLoaded()) { } @@ -117,7 +185,7 @@ public class UserDictionaryLookupTest extends AndroidTestCase { assertFalse(lookup.isValidWord("foo", Locale.ENGLISH)); assertFalse(lookup.isValidWord("foo", Locale.UK)); assertFalse(lookup.isValidWord("foo", Locale.FRENCH)); - assertFalse(lookup.isValidWord("foo", new Locale(""))); + assertFalse(lookup.isValidWord("foo", ANY_LOCALE)); lookup.close(); } @@ -126,10 +194,11 @@ public class UserDictionaryLookupTest extends AndroidTestCase { Log.d(TAG, "testSubLocaleMatch"); // Insert "Foo" as capitalized in the UserDictionary under the en locale. - addWord("Foo", Locale.ENGLISH, 17); + addWord("Foo", Locale.ENGLISH, 17, null); // Create the UserDictionaryLookup and wait until it's loaded. - UserDictionaryLookup lookup = new UserDictionaryLookup(mContext); + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); while (!lookup.isLoaded()) { } @@ -150,15 +219,16 @@ public class UserDictionaryLookupTest extends AndroidTestCase { Log.d(TAG, "testAllLocalesMatch"); // Insert "Foo" as capitalized in the UserDictionary under the all locales. - addWord("Foo", null, 17); + addWord("Foo", null, 17, null); // Create the UserDictionaryLookup and wait until it's loaded. - UserDictionaryLookup lookup = new UserDictionaryLookup(mContext); + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); while (!lookup.isLoaded()) { } // Any capitalization variation should match for fr, en and en_US. - assertTrue(lookup.isValidWord("foo", new Locale(""))); + assertTrue(lookup.isValidWord("foo", ANY_LOCALE)); assertTrue(lookup.isValidWord("foo", Locale.FRENCH)); assertTrue(lookup.isValidWord("foo", Locale.ENGLISH)); assertTrue(lookup.isValidWord("foo", Locale.US)); @@ -177,12 +247,13 @@ public class UserDictionaryLookupTest extends AndroidTestCase { // Insert "Foo" as capitalized in the UserDictionary under the en_US and en_CA and fr // locales. - addWord("Foo", Locale.US, 17); - addWord("foO", Locale.CANADA, 17); - addWord("fOo", Locale.FRENCH, 17); + addWord("Foo", Locale.US, 17, null); + addWord("foO", Locale.CANADA, 17, null); + addWord("fOo", Locale.FRENCH, 17, null); // Create the UserDictionaryLookup and wait until it's loaded. - UserDictionaryLookup lookup = new UserDictionaryLookup(mContext); + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); while (!lookup.isLoaded()) { } @@ -193,7 +264,7 @@ public class UserDictionaryLookupTest extends AndroidTestCase { // Other locales, including more general locales won't match. assertFalse(lookup.isValidWord("foo", Locale.ENGLISH)); assertFalse(lookup.isValidWord("foo", Locale.UK)); - assertFalse(lookup.isValidWord("foo", new Locale(""))); + assertFalse(lookup.isValidWord("foo", ANY_LOCALE)); lookup.close(); } @@ -202,10 +273,11 @@ public class UserDictionaryLookupTest extends AndroidTestCase { Log.d(TAG, "testReload"); // Insert "foo". - Uri uri = addWord("foo", Locale.US, 17); + Uri uri = addWord("foo", Locale.US, 17, null); // Create the UserDictionaryLookup and wait until it's loaded. - UserDictionaryLookup lookup = new UserDictionaryLookup(mContext); + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); while (!lookup.isLoaded()) { } @@ -217,7 +289,7 @@ public class UserDictionaryLookupTest extends AndroidTestCase { // Now delete "foo" and add "bar". deleteWord(uri); - addWord("bar", Locale.US, 18); + addWord("bar", Locale.US, 18, null); // Wait a little bit before expecting a change. The time we wait should be greater than // UserDictionaryLookup.RELOAD_DELAY_MS. @@ -241,10 +313,11 @@ public class UserDictionaryLookupTest extends AndroidTestCase { Log.d(TAG, "testClose"); // Insert "foo". - Uri uri = addWord("foo", Locale.US, 17); + Uri uri = addWord("foo", Locale.US, 17, null); // Create the UserDictionaryLookup and wait until it's loaded. - UserDictionaryLookup lookup = new UserDictionaryLookup(mContext); + UserDictionaryLookup lookup = new UserDictionaryLookup(mContext, ExecutorUtils.SPELLING); + lookup.open(); while (!lookup.isLoaded()) { } @@ -259,7 +332,7 @@ public class UserDictionaryLookupTest extends AndroidTestCase { // Now delete "foo" and add "bar". deleteWord(uri); - addWord("bar", Locale.US, 18); + addWord("bar", Locale.US, 18, null); // Wait a little bit before expecting a change. The time we wait should be greater than // UserDictionaryLookup.RELOAD_DELAY_MS. diff --git a/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java b/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java index 170d64383..c214b5fd0 100644 --- a/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java @@ -45,27 +45,27 @@ public class AsyncResultHolderTests extends AndroidTestCase { } public void testGetWithoutSet() { - final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>(); + final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS); assertEquals(DEFAULT_VALUE, resultValue); } public void testGetBeforeSet() { - final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>(); + final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); setAfterGivenTime(holder, SET_VALUE, TIMEOUT_IN_MILLISECONDS + MARGIN_IN_MILLISECONDS); final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS); assertEquals(DEFAULT_VALUE, resultValue); } public void testGetAfterSet() { - final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>(); + final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); holder.set(SET_VALUE); final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS); assertEquals(SET_VALUE, resultValue); } public void testGetBeforeTimeout() { - final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>(); + final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); setAfterGivenTime(holder, SET_VALUE, TIMEOUT_IN_MILLISECONDS - MARGIN_IN_MILLISECONDS); final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS); assertEquals(SET_VALUE, resultValue); diff --git a/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java index 47fd5feaa..6871a41d5 100644 --- a/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java @@ -24,6 +24,9 @@ import com.android.inputmethod.latin.common.CollectionUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Tests for {@link CollectionUtils}. @@ -79,9 +82,13 @@ public class CollectionUtilsTests extends AndroidTestCase { * results for a few cases. */ public void testIsNullOrEmpty() { - assertTrue(CollectionUtils.isNullOrEmpty(null)); - assertTrue(CollectionUtils.isNullOrEmpty(new ArrayList<>())); - assertTrue(CollectionUtils.isNullOrEmpty(Collections.EMPTY_SET)); - assertFalse(CollectionUtils.isNullOrEmpty(Collections.singleton("Not empty"))); + assertTrue(CollectionUtils.isNullOrEmpty((List) null)); + assertTrue(CollectionUtils.isNullOrEmpty((Map) null)); + assertTrue(CollectionUtils.isNullOrEmpty(new ArrayList())); + assertTrue(CollectionUtils.isNullOrEmpty(new HashMap())); + assertTrue(CollectionUtils.isNullOrEmpty(Collections.EMPTY_LIST)); + assertTrue(CollectionUtils.isNullOrEmpty(Collections.EMPTY_MAP)); + assertFalse(CollectionUtils.isNullOrEmpty(Collections.singletonList("Not empty"))); + assertFalse(CollectionUtils.isNullOrEmpty(Collections.singletonMap("Not", "empty"))); } } |