aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-af/strings.xml17
-rw-r--r--java/res/values-am/strings.xml14
-rw-r--r--java/res/values-ar/strings.xml14
-rw-r--r--java/res/values-be/strings.xml17
-rw-r--r--java/res/values-bg/strings.xml17
-rw-r--r--java/res/values-ca/strings.xml17
-rw-r--r--java/res/values-cs/strings.xml17
-rw-r--r--java/res/values-da/strings.xml14
-rw-r--r--java/res/values-de/strings.xml14
-rw-r--r--java/res/values-el/strings.xml14
-rw-r--r--java/res/values-en-rGB/strings.xml14
-rw-r--r--java/res/values-es-rUS/strings.xml17
-rw-r--r--java/res/values-es/strings.xml17
-rw-r--r--java/res/values-et/strings.xml17
-rw-r--r--java/res/values-fa/strings.xml17
-rw-r--r--java/res/values-fi/strings.xml17
-rw-r--r--java/res/values-fr/strings.xml14
-rw-r--r--java/res/values-hi/strings.xml14
-rw-r--r--java/res/values-hr/strings.xml17
-rw-r--r--java/res/values-hu/strings.xml14
-rw-r--r--java/res/values-in/strings.xml14
-rw-r--r--java/res/values-it/strings.xml14
-rw-r--r--java/res/values-iw/strings.xml14
-rw-r--r--java/res/values-ja/strings.xml17
-rw-r--r--java/res/values-ko/strings.xml14
-rw-r--r--java/res/values-lt/strings.xml17
-rw-r--r--java/res/values-lv/strings.xml14
-rw-r--r--java/res/values-ms/strings.xml17
-rw-r--r--java/res/values-nb/strings.xml17
-rw-r--r--java/res/values-nl/strings.xml14
-rw-r--r--java/res/values-pl/strings.xml17
-rw-r--r--java/res/values-pt-rPT/strings.xml14
-rw-r--r--java/res/values-pt/strings.xml17
-rw-r--r--java/res/values-rm/strings.xml14
-rw-r--r--java/res/values-ro/strings.xml17
-rw-r--r--java/res/values-ru/strings.xml17
-rw-r--r--java/res/values-sk/strings.xml19
-rw-r--r--java/res/values-sl/strings.xml17
-rw-r--r--java/res/values-sr/strings.xml17
-rw-r--r--java/res/values-sv/strings.xml14
-rw-r--r--java/res/values-sw/strings.xml14
-rw-r--r--java/res/values-th/strings.xml14
-rw-r--r--java/res/values-tl/strings.xml17
-rw-r--r--java/res/values-tr/strings.xml17
-rw-r--r--java/res/values-uk/strings.xml27
-rw-r--r--java/res/values-vi/strings.xml17
-rw-r--r--java/res/values-zh-rCN/strings.xml17
-rw-r--r--java/res/values-zh-rTW/strings.xml17
-rw-r--r--java/res/values-zu/strings.xml14
-rw-r--r--java/res/values/strings.xml16
-rw-r--r--java/res/xml-sw600dp/key_apostrophe.xml11
-rw-r--r--java/res/xml-sw600dp/key_dash.xml2
-rw-r--r--java/res/xml-sw600dp/key_f1.xml62
-rw-r--r--java/res/xml-sw600dp/key_f2.xml45
-rw-r--r--java/res/xml-sw600dp/key_question_exclamation.xml11
-rw-r--r--java/res/xml-sw600dp/keys_f1f2.xml71
-rw-r--r--java/res/xml-sw600dp/row_dvorak4.xml12
-rw-r--r--java/res/xml-sw600dp/row_hebrew4.xml12
-rw-r--r--java/res/xml-sw600dp/row_qwerty4.xml12
-rw-r--r--java/res/xml-sw600dp/row_symbols4.xml13
-rw-r--r--java/res/xml-sw600dp/row_symbols_shift4.xml10
-rw-r--r--java/res/xml-sw600dp/rows_number_normal.xml40
-rw-r--r--java/res/xml-sw600dp/rows_phone.xml34
-rw-r--r--java/res/xml-sw768dp/key_settings.xml2
-rw-r--r--java/res/xml-sw768dp/key_shortcut.xml4
-rw-r--r--java/res/xml-sw768dp/key_styles_common.xml6
-rw-r--r--java/res/xml-sw768dp/keys_f1f2.xml71
-rw-r--r--java/res/xml-sw768dp/row_dvorak4.xml14
-rw-r--r--java/res/xml-sw768dp/row_hebrew4.xml14
-rw-r--r--java/res/xml-sw768dp/row_qwerty4.xml14
-rw-r--r--java/res/xml-sw768dp/row_symbols4.xml19
-rw-r--r--java/res/xml-sw768dp/row_symbols_shift4.xml12
-rw-r--r--java/res/xml-sw768dp/rows_number_normal.xml40
-rw-r--r--java/res/xml-sw768dp/rows_phone.xml36
-rw-r--r--java/res/xml/key_styles_common.xml28
-rw-r--r--java/res/xml/key_styles_f1.xml43
-rw-r--r--java/res/xml/row_qwerty4.xml5
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java125
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java3
-rw-r--r--java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java4
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java72
-rw-r--r--java/src/com/android/inputmethod/latin/ResearchLogger.java114
-rw-r--r--java/src/com/android/inputmethod/latin/UserHistoryDictionary.java318
-rw-r--r--java/src/com/android/inputmethod/latin/UserHistoryDictionaryBigramList.java27
-rw-r--r--java/src/com/android/inputmethod/latin/UserHistoryForgettingCurveUtils.java6
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java45
87 files changed, 1536 insertions, 621 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index b9c26f89a..809ae2be6 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-sleutelbord (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android-sleutelbordinstellings"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropsies"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android-speltoetser"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android-speltoetser (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Speltoetser se instellings"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Steminvoering"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Glimlag-gesiggie"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Soek"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punt"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift geaktiveer"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Kasslot geaktiveer"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Steminvoer is gedeaktiveer"</string>
<string name="configure_input_method" msgid="373356270290742459">"Stel invoermetodes op"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Invoertale"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Invoertale"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Raak weer om te stoor"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Woordeboek beskikbaar"</string>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index d70c05da9..351510935 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"የAndroid ቁልፍ ሰሌዳ (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"የAndroid ቁልፍሰሌዳ ቅንብሮች"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"ግቤት አማራጮች"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android የፊደል ማረሚያ"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android የፊደል ማረሚያ (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"የፊደል አራሚ ቅንብሮች"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"የድምፅ ግቤት ቦዝኗል"</string>
<string name="configure_input_method" msgid="373356270290742459">"ግቤት ሜተዶችን አዋቀር"</string>
<string name="language_selection_title" msgid="1651299598555326750">"ቋንቋዎች አግቤት"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"ቋንቋዎች አግቤት"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"ለማስቀመጥ እንደገና ንካ"</string>
<string name="has_dictionary" msgid="6071847973466625007">"መዝገበ ቃላት አለ"</string>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 5678c40c8..805848178 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"لوحة مفاتيح Android ‏(AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"إعدادات لوحة مفاتيح Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"خيارات الإرسال"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"التدقيق الإملائي في Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"التدقيق الإملائي في Android‏ (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"إعدادات التدقيق الإملائي"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"الإدخال الصوتي مُعطل"</string>
<string name="configure_input_method" msgid="373356270290742459">"تهيئة طرق الإدخال"</string>
<string name="language_selection_title" msgid="1651299598555326750">"لغات الإدخال"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"لغات الإدخال"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"المس مرة أخرى للحفظ"</string>
<string name="has_dictionary" msgid="6071847973466625007">"القاموس متاح"</string>
diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml
index 803dcbdc8..4d5a60f3e 100644
--- a/java/res/values-be/strings.xml
+++ b/java/res/values-be/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Клавіятура Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Налады клавіятуры Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Параметры ўводу"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Iнструмент праверкi правапiсу для Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Iнструмент праверкi правапiсу для Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Налады праверкі арфаграфіі"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Галасавы ўвод"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлік"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Увод"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Пошук"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Кропка"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift уключаны"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock уключаны"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Галасавы набор адкл."</string>
<string name="configure_input_method" msgid="373356270290742459">"Налада метадаў уводу"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Мовы ўводу"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Мовы ўводу"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Дакраніцеся зноў, каб захаваць"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Слоўнік даступны"</string>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index b235e2ece..d364370cd 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Клавиатура на Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Настройки на клавиатурата на Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Опции за въвеждане"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Програма за правописна проверка за Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Програма за правописна проверка за Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Настройки за проверка на правописа"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Гласово въвеждане"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Усмивка"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Търсене"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Точка"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"„Shift“ е активиран"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"„Caps Lock“ е активиран"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Глас. въвежд. е деакт."</string>
<string name="configure_input_method" msgid="373356270290742459">"Конфигуриране на въвеждането"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Входни езици"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Езици за въвеждане"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Докоснете отново, за да запазите"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Има достъп до речник"</string>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index 23874499d..f1c19dd57 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Teclat d\'Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Configuració del teclat d\'Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opcions d\'entrada"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Corrector ortogràfic d\'Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Corrector ortogràfic d\'Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Configuració de la correcció ortogràfica"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Entrada de veu"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Cara somrient"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Retorn"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Cerca"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punt"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Maj activat"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Bloq Maj activat"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. veu desactiv."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configura mètodes d\'entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomes d\'entrada"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Idiomes d\'entrada"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Torna a tocar per desar"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Diccionari disponible"</string>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 530f475fe..19d0af1a7 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Klávesnice Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Nastavení klávesnice Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávání textu a dat"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Kontrola pravopisu Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Kontrola pravopisu Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Nastavení kontroly pravopisu"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Hlasový vstup"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Smajlík"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"vyhledávací tlačítko"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Tečka"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Klávesa Shift je aktivní"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Klávesa Caps Lock je aktivní"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup vypnut"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurace metod zadávání"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Vstupní jazyky"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Vstupní jazyky"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Opětovným dotykem provedete uložení"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Slovník k dispozici"</string>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index 50b0b0a9f..99ceca2ee 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-tastatur (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android-tastatur-indstillinger"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Indstillinger for input"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android-stavekontrol"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android-stavekontrol (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Indstillinger for stavekontrol"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Stemmeinput deaktiveret"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Inputsprog"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Tryk igen for at gemme"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Ordbog er tilgængelig"</string>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 216aac5d9..2b4663527 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-Tastatur (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android-Tastatureinstellungen"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Eingabeoptionen"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android-Rechtschreibprüfung"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android-Rechtschreibprüfung (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Einstellungen für Rechtschreibprüfung"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spracheingabe deaktiviert"</string>
<string name="configure_input_method" msgid="373356270290742459">"Eingabemethoden konfigurieren"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Eingabesprachen"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Eingabesprachen"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Zum Speichern erneut berühren"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Wörterbuch verfügbar"</string>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 486346a09..0a48afe6f 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Πληκτρολόγιο Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Ρυθμίσεις πληκτρολογίου Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Επιλογές εισόδου"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Ορθογραφικός έλεγχος Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Ορθογραφικός έλεγχος Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Ρυθμίσεις ορθογραφικού ελέγχου"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Απεν. φωνητ. είσοδος"</string>
<string name="configure_input_method" msgid="373356270290742459">"Διαμόρφωση μεθόδων εισαγωγής"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Γλώσσες εισόδου"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Γλώσσες εισόδου"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Αγγίξτε ξανά για αποθήκευση"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Λεξικό διαθέσιμο"</string>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index 763910789..4e274dda3 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android keyboard (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android keyboard settings"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Input options"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android spell checker"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android spell checker (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Spellchecking settings"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Voice input is disabled"</string>
<string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Input languages"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Touch again to save"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Dictionary available"</string>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index b015e2166..bddea2c6d 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Teclado de Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Configuración de teclado de Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opciones de entrada"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Corrector ortográfico de Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Corrector ortográfico de Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Configuración del corrector ortográfico"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Carita sonriente"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Volver"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Buscar"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punto"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Se activó el modo Mayúscula."</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Se activó el bloqueo de mayúsculas."</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"La entrada por voz está inhabilitada"</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Vuelve a tocar para guardar."</string>
<string name="has_dictionary" msgid="6071847973466625007">"Diccionario disponible"</string>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index bcc327f68..7ae7627fe 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Teclado Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Ajustes del teclado de Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opciones entrada texto"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Corrector de Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Corrector de Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Ajustes del corrector ortográfico"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Emoticono"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Tecla Intro"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Buscar"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punto"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Mayúsculas habilitadas"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Bloqueo de mayúsculas habilitado"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entrada de voz inhabilitada"</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Toca otra vez para guardar."</string>
<string name="has_dictionary" msgid="6071847973466625007">"Hay un diccionario disponible"</string>
diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml
index 25fee556d..d23846bf9 100644
--- a/java/res/values-et/strings.xml
+++ b/java/res/values-et/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-klaviatuur (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Androidi klaviatuuriseaded"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Sisestusvalikud"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Androidi õigekirjakontroll"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Androidi õigekirjakontroll (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Õigekirjakontrolli seaded"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Kõnesisend"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Naerunägu"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Tagasi"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Otsing"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punkt"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Tõstuklahv on lubatud"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Suurtähelukk on lubatud"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Kõnesisend on keelatud"</string>
<string name="configure_input_method" msgid="373356270290742459">"Sisestusmeetodite seadistamine"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Sisestuskeeled"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Sisestuskeeled"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Salvestamiseks puudutage uuesti"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Sõnastik saadaval"</string>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index ed5d357b1..95d6fe6c4 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"صفحه کلید (Android (AOSP"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"تنظیمات صفحه کلید Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"گزینه های ورودی"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"غلط‌گیر املای Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"غلط‌گیر املای Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"تنظیمات غلط گیری املایی"</string>
@@ -97,8 +99,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"ورودی صدا"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"صورت متبسم"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"جستجو"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"نقطه"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift فعال است"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock فعال شد"</string>
@@ -116,6 +117,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"ورودی صدا غیرفعال است"</string>
<string name="configure_input_method" msgid="373356270290742459">"پیکربندی روش های ورودی"</string>
<string name="language_selection_title" msgid="1651299598555326750">"زبان های ورودی"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"زبان‌های ورودی"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"برای ذخیره دوباره لمس کنید"</string>
<string name="has_dictionary" msgid="6071847973466625007">"دیکشنری موجود است"</string>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index b8b401be1..e25bd82a7 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-näppäimistö (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android-näppäimistön asetukset"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Syöttövalinnat"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android-oikoluku"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android-oikoluku (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Oikoluvun asetukset"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Puheohjaus"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Hymiö"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Haku"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Piste"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Vaihto päällä"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock päällä"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Ääniohjaus on pois käytöstä"</string>
<string name="configure_input_method" msgid="373356270290742459">"Määritä syöttötavat"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Syöttökielet"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Syöttökielet"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Tallenna koskettamalla uudelleen"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Sanakirja saatavilla"</string>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 285d2226c..b35b5fb8b 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Clavier Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Paramètres du clavier Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Options de saisie"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Correcteur orthographique Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Correcteur orthographique Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Paramètre du correcteur orthographique"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Saisie vocale désactivée"</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurer les modes de saisie"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Langues de saisie"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Appuyer de nouveau pour enregistrer"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Dictionnaire disponible"</string>
diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml
index 2b1808460..b51eaeef9 100644
--- a/java/res/values-hi/strings.xml
+++ b/java/res/values-hi/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android कीबोर्ड (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android कीबोर्ड सेटिंग"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"इनपुट विकल्‍प"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android वर्तनी परीक्षक"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android वर्तनी परीक्षक (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"वर्तनी जांच सेटिंग"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"ध्‍वनि इनपुट अक्षम है"</string>
<string name="configure_input_method" msgid="373356270290742459">"इनपुट पद्धति कॉन्‍फ़िगर करें"</string>
<string name="language_selection_title" msgid="1651299598555326750">"इनपुट भाषा"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"इनपुट भाषाएं"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"सहेजने के लिए पुन: स्‍पर्श करें"</string>
<string name="has_dictionary" msgid="6071847973466625007">"शब्‍दकोश उपलब्‍ध है"</string>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index a639073f1..712a24368 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android tipkovnica (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Postavke tipkovnice za Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opcije ulaza"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Androidova provjera pravopisa"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Androidova provjera pravopisa (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Postavke provjere pravopisa"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Glasovni unos"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Smješko"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Pretraživanje"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Točka"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Omogućena tipka Shift"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Omogućeno pisanje velikih slova"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. unos onemog."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfiguriraj načine ulaza"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jezici unosa"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Jezici unosa"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Dodirnite ponovo za spremanje"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Rječnik je dostupan"</string>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index 0eac1a95b..3e4cc13dd 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-billentyűzet (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android billentyűzetbeállítások"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Beviteli beállítások"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Androidos helyesírás-ellenőrző"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Androidos helyesírás-ellenőrző (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Helyesírás-ellenőrzés beállításai"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hangbevivel KI"</string>
<string name="configure_input_method" msgid="373356270290742459">"Beviteli módok beállítása"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Beviteli nyelvek"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Beviteli nyelvek"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Érintse meg újból a mentéshez"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Van elérhető szótár"</string>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index e0e92b5bd..072df0501 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Keyboard Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Setelan keyboard Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opsi masukan"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Pemeriksa ejaan Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Pemeriksa ejaan Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Setelan pemeriksaan ejaan"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Masukan suara dinonaktifkan"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan metode masukan"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Bahasa masukan"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Bahasa masukan"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Sentuh lagi untuk menyimpan"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Kamus yang tersedia"</string>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 1929035bc..0be9bde5f 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Tastiera Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Impostazioni tastiera Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opzioni inserimento"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Controllo ortografico Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Controllo ortografico Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Impostazioni di controllo ortografico"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Comandi vocali disatt."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Lingue comandi"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Tocca di nuovo per salvare"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Dizionario disponibile"</string>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 323cac198..f38201e66 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"מקלדת Android ‏(AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"הגדרות מקלדת של Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"אפשרויות קלט"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"בודק האיות של Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"בודק האיות של Android ‏(AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"הגדרות בדיקת איות"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"הקלט הקולי מושבת"</string>
<string name="configure_input_method" msgid="373356270290742459">"הגדרת שיטות קלט"</string>
<string name="language_selection_title" msgid="1651299598555326750">"שפות קלט"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"שפות קלט"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"גע שוב כדי לשמור"</string>
<string name="has_dictionary" msgid="6071847973466625007">"מילון זמין"</string>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 891beef7b..ecd69b833 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Androidキーボード(AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Androidキーボードの設定"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"入力オプション"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Androidスペルチェッカー"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Androidスペルチェッカー(AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"スペルチェックの設定"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"音声入力"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"顔文字"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"検索"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"中点"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift有効"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock有効"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"音声入力は無効です"</string>
<string name="configure_input_method" msgid="373356270290742459">"入力方法を設定"</string>
<string name="language_selection_title" msgid="1651299598555326750">"入力言語"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"入力言語"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"保存するにはもう一度タップ"</string>
<string name="has_dictionary" msgid="6071847973466625007">"辞書を利用できます"</string>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index 536f06dbd..0c6d3d6c1 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android 키보드(AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android 키보드 설정"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"입력 옵션"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android 맞춤법 검사기"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android 맞춤법 검사기(AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"맞춤법 검사 설정"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"음성 입력이 사용 중지됨"</string>
<string name="configure_input_method" msgid="373356270290742459">"입력 방법 설정"</string>
<string name="language_selection_title" msgid="1651299598555326750">"입력 언어"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"입력 언어"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"저장하려면 다시 터치"</string>
<string name="has_dictionary" msgid="6071847973466625007">"사전 사용 가능"</string>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index b093e8629..90094f910 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"„Android“ klaviatūra (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"„Android“ klaviatūros nustatymai"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Įvesties parinktys"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"„Android“ rašybos tikrinimo programa"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"„Android“ rašybos tikrinimo programa (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Rašybos tikrinimo nustatymai"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Įvestis balsu"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Šypsenėlė"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Grįžti"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Ieškoti"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Taškas"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Įgalintas antrasis lygis"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Įgalintos didžiosios raidės"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balso įv. neleidž."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigūruoti įvesties metodus"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Įvesties kalbos"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Įvesties kalbos"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Jei norite išsaugoti, palieskite dar kartą"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Žodynas galimas"</string>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 93727a8ba..035ba0264 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android tastatūra (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android tastatūras iestatījumi"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Ievades opcijas"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android pareizrakstības pārbaudītājs"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android pareizrakstības pārbaudītājs (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Pareizrakstības pārbaudes iestatījumi"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balss iev. atspējota"</string>
<string name="configure_input_method" msgid="373356270290742459">"Ievades metožu konfigurēšana"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Ievades valodas"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Ievades valodas"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Pieskarieties vēlreiz, lai saglabātu."</string>
<string name="has_dictionary" msgid="6071847973466625007">"Ir pieejama vārdnīca."</string>
diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml
index f584f6668..838c51dde 100644
--- a/java/res/values-ms/strings.xml
+++ b/java/res/values-ms/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Papan kekunci Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Tetapan papan kekunci Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Pilihan input"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Penyemak ejaan Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Penyemak ejaan Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Tetapan penyemakan ejaan"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Input suara"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Muka senyum"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Carian"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Titik"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Kunci anjak didayakan"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Kunci huruf besar didayakan"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Input suara dilmphkn"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan kaedah input"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Bahasa input"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Bahasa input"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Sentuh lagi untuk menyimpan"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Kamus tersedia"</string>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index 158b067bb..559f63ca1 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-tastatur (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Innstillinger for skjermtastatur"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Inndataalternativer"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android-stavekontroll"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android-stavekontroll (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Innstillinger for stavekontroll"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Taleinndata"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Smilefjes"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Søk"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Prikk"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift er aktivert"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock er aktivert"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Taleinndata er deaktiv."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurer inndatametoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inndataspråk"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Inndataspråk"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Trykk på nytt for å lagre"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Ordbok tilgjengelig"</string>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index a7d499bd0..f57225c5d 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android-toetsenbord (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Instellingen voor Android-toetsenbord"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropties"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Spellingcontrole van Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Spellingcontrole van Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Instellingen voor spellingcontrole"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spraakinvoer is uit"</string>
<string name="configure_input_method" msgid="373356270290742459">"Invoermethoden configureren"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Invoertalen"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Invoertalen"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Raak nogmaals aan om op te slaan"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Woordenboek beschikbaar"</string>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index c2c7820f6..36be77bd1 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Klawiatura Androida (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Ustawienia klawiatury Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opcje wprowadzania"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Słownik Androida"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Sprawdzanie pisowni na Androidzie (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Ustawienia sprawdzania pisowni"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Wprowadzanie głosowe"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Uśmiechnięta buźka"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Szukaj"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punkt"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift włączony"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock włączony"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Wprowadzanie głosowe jest wyłączone"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfiguruj metody wprowadzania"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Języki wprowadzania"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Języki wprowadzania"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Dotknij ponownie, aby zapisać"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Słownik dostępny"</string>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index ccb042e47..936e8d964 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Teclado Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Definições de teclado do Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opções de introdução"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Verificador ortográfico do Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Verificador ortográfico do Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Definições da verificação ortográfica"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. voz desact."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introdução"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Idiomas de introdução"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Toque novamente para guardar"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index d468712e4..f22d0ff5d 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Teclado Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Configurações de teclado Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opções de entrada"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Corretor ortográfico do Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Corretor ortográfico do Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Configurações de verificação ortográfica"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Carinha sorridente"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Voltar"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Pesquisar"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Ponto"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift ativado"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock ativado"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Texto por voz desat."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Toque novamente para salvar"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index 18741f816..c6c936e49 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -26,6 +26,8 @@
<string name="english_ime_settings" msgid="6661589557206947774">"Parameters da la tastatura Android"</string>
<!-- no translation found for english_ime_input_options (3909945612939668554) -->
<skip />
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<!-- no translation found for spell_checker_service_name (7338064335159755926) -->
<skip />
<!-- no translation found for aosp_spell_checker_service_name (6985142605330377819) -->
@@ -190,6 +192,18 @@
<!-- no translation found for configure_input_method (373356270290742459) -->
<skip />
<string name="language_selection_title" msgid="1651299598555326750">"Linguas da cumonds vocals"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<!-- no translation found for select_language (3693815588777926848) -->
<skip />
<!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 05ad4bd5a..ab296d9d3 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Tastatură Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Setările tastaturii Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opţiuni de introducere text"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Verificator ortografic Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Verificator ortografic Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Setări de verificare ortografică"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Intrare vocală"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Faţă zâmbitoare"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Căutaţi"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Punct"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Tasta Shift a fost activată"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Tasta Caps Lock a fost activată"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Intr. vocală dezact."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configuraţi metodele de intrare"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Selectaţi limba"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Limbi de intrare"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Atingeţi din nou pentru a salva"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Dicţionar disponibil"</string>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 3bde1464d..f91779727 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Клавиатура Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Клавиатура Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Настройки"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Проверка правописания Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Проверка правописания Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Настройка проверки правописания"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Голосовой ввод"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлик"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Клавиша \"Ввод\""</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Поиск"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Точка"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Верхний регистр включен"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock включен"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голосовой ввод откл."</string>
<string name="configure_input_method" msgid="373356270290742459">"Настройка способов ввода"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Языки ввода"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Языки ввода"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Нажмите, чтобы сохранить"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Доступен словарь"</string>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index b11142cf8..9e01d7274 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Klávesnica Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Nastavenia klávesnice Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávania textu a údajov"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Kontrola pravopisu Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Kontrola pravopisu Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Nastavenia kontroly pravopisu"</string>
@@ -60,7 +62,7 @@
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Vypnuté"</string>
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Mierne"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Agresívne"</string>
- <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Veľmi agresívna"</string>
+ <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Veľmi agresívne"</string>
<string name="bigram_suggestion" msgid="8169311444438922902">"Návrhy ďalšieho slova"</string>
<string name="bigram_suggestion_summary" msgid="6635527607242625713">"Na zlepšenie návrhov použiť predchádzajúce slovo"</string>
<string name="bigram_prediction" msgid="3216364899483135294">"Odhad ďalšieho slova"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Hlasový vstup"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Usmiata tvár"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"vyhľadávacie tlačidlo"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Bodka"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Kláves Shift je povolený"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Kláves Caps Lock je povolený"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup je zakázaný"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurovať metódy vstupu"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jazyky vstupu"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Jazyky vstupu"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Opätovným dotykom uložíte"</string>
<string name="has_dictionary" msgid="6071847973466625007">"K dispozícii je slovník"</string>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index ed8c77f61..8ab2e70c8 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Tipkovnica Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Nastavitve tipkovnice Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti vnosa"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Črkovalnik za Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Črkovalnik za Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Nastavitve preverjanja črkovanja"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Glasovni vnos"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Smeško"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Vračalka"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Iskanje"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Pika"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Način »Shift« je omogočen"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Način »Caps Lock« je omogočen"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. vnos je onem."</string>
<string name="configure_input_method" msgid="373356270290742459">"Nastavitev načinov vnosa"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jeziki vnosa"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Jeziki vnosa"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Dotaknite se še enkrat, da shranite"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Slovar je na voljo"</string>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index 950baad47..a9f5a7b25 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android тастатура (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Подешавања Android тастатуре"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Опције уноса"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android провера правописа"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android провера правописа (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Подешавања провере правописа"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Гласовни унос"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Смајли"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Претражи"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Тачка"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift је омогућен"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock је омогућен"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Гласовни унос је онемогућен"</string>
<string name="configure_input_method" msgid="373356270290742459">"Конфигурисање метода уноса"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Језици за унос"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Језици уноса"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Поново додирните да бисте сачували"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Речник је доступан"</string>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 75e80d42d..822ca7c59 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Androids tangentbord (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Inställningar för Androids tangentbord"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Inmatningsalternativ"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Stavningskontroll i Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Stavningskontroll i Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Inställningar för stavningskontroll"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Röstinmatning inaktiv"</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurera inmatningsmetoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inmatningsspråk"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Inmatningsspråk"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Spara genom att trycka igen"</string>
<string name="has_dictionary" msgid="6071847973466625007">"En ordlista är tillgänglig"</string>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 82c867e3f..b9738f6da 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Kicharazio cha Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Mipangilio ya kibodi ya Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Chaguo za uingizaji"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Kikagua tahajia cha Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Kikagua tahajia cha Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Mipangilio ya kukagua sarufi"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Uingizaji sauti umelemazwa"</string>
<string name="configure_input_method" msgid="373356270290742459">"Sanidi mbinu za uingizaji"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Lugha za uingizaji"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Lugha zinazoruhusiwa"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Gusa tena ili kuhifadhi"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Kamusi inapatikana"</string>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index da20d6607..7731be146 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android keyboard (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"การตั้งค่าแป้นพิมพ์ Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"ตัวเลือกการป้อนข้อมูล"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"แอนดรอยด์ตรวจสอบการสะกด"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"แอนดรอยด์ตรวจสอบการสะกด (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"การตั้งค่าการตรวจสอบการสะกด"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"ปิดใช้งานป้อนข้อมูลด้วยเสียง"</string>
<string name="configure_input_method" msgid="373356270290742459">"กำหนดค่าวิธีการป้อนข้อมูล"</string>
<string name="language_selection_title" msgid="1651299598555326750">"ภาษาในการป้อนข้อมูล"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"ภาษาสำหรับการป้อนข้อมูล"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"แตะอีกครั้งเพื่อบัน​​ทึก"</string>
<string name="has_dictionary" msgid="6071847973466625007">"มีพจนานุกรมให้ใช้งาน"</string>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index 75e56ec4f..aad8fe670 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android keyboard (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Mga setting ng Android keyboard"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Mga pagpipilian sa input"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Pang-check ng pagbabaybay ng Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Pang-check ng pagbabaybay ng Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Mga setting ng pang-check ng pagbabaybay"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Input ng boses"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley na mukha"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Bumalik"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Paghahanap"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Tuldok"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Pinagana ang shift"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Pinagana ang caps lock"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hindi pinagana ang voice input"</string>
<string name="configure_input_method" msgid="373356270290742459">"I-configure ang mga pamamaraan ng pag-input"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Mag-input ng mga wika"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Mga wika ng input"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Pinduting muli upang i-save"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Available ang diksyunaryo"</string>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 49c861fb3..fbe1c6fe7 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android klavye (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android klavye ayarları"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Giriş seçenekleri"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android yazım denetleyici"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android yazım denetleyici (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Yazım denetimi ayarları"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Ses girişi"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Gülen yüz"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Ara"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Nokta"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Üst karakter etkin"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Büyük harf kilidi etkin"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Sesle grş devre dışı"</string>
<string name="configure_input_method" msgid="373356270290742459">"Giriş yöntemlerini yapılandır"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Giriş dilleri"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Giriş dilleri"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Kaydetmek için tekrar dokunun"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Sözlük kullanılabilir"</string>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index 9d5063458..0cfa342b2 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -24,12 +24,14 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Клавіатура Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Налашт-ня клавіат. Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Парам. введення"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Засіб перевірки орфографії Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Засіб перевірки орфографії Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Налаштування перевірки орфографії"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Шукати імена контактів"</string>
<string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Програма перевірки правопису використ. записи зі списку контактів"</string>
- <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вібр при натиску клав."</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вібр. при натисканні клавіш"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"Звук при натиску клав."</string>
<string name="popup_on_keypress" msgid="123894815723512944">"Сплив. при нат.клав."</string>
<string name="general_category" msgid="1859088467017573195">"Загальні"</string>
@@ -58,9 +60,9 @@
<string name="auto_correction" msgid="4979925752001319458">"Автомат. виправлення"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Пробіл і пунктуація автоматично виправляють слова з помилками"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Вимк."</string>
- <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Середнє"</string>
- <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Повне"</string>
- <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Повне виправлення"</string>
+ <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Помірне"</string>
+ <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Активне"</string>
+ <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Дуже активне"</string>
<string name="bigram_suggestion" msgid="8169311444438922902">"Пропозиції наступного слова"</string>
<string name="bigram_suggestion_summary" msgid="6635527607242625713">"Використати попереднє слово для покращення пропозицій"</string>
<string name="bigram_prediction" msgid="3216364899483135294">"Передбачення наступного слова"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Голосовий ввід"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлик"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Клавіша Return"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Пошук"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Крапка"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift увімкнено"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock увімкнено"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голос. ввід вимкнено"</string>
<string name="configure_input_method" msgid="373356270290742459">"Налаштування методів введення"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Мови вводу"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Мови введення"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Торкніться знову, щоб зберегти"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Словник доступний"</string>
@@ -135,7 +148,7 @@
<string name="remove" msgid="4486081658752944606">"Видалити"</string>
<string name="save" msgid="7646738597196767214">"Зберегти"</string>
<string name="subtype_locale" msgid="8576443440738143764">"Мова"</string>
- <string name="keyboard_layout_set" msgid="4309233698194565609">"Макет"</string>
+ <string name="keyboard_layout_set" msgid="4309233698194565609">"Розкладка"</string>
<string name="custom_input_style_note_message" msgid="8826731320846363423">"Щоб використовувати користувацький стиль введення, його потрібно ввімкнути. Увімкнути його?"</string>
<string name="enable" msgid="5031294444630523247">"Увімкнути"</string>
<string name="not_now" msgid="6172462888202790482">"Не зараз"</string>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 80844c177..c3e07c3ef 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Bàn phím Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Cài đặt bàn phím Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Tùy chọn nhập"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Trình kiểm tra chính tả Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Trình kiểm tra chính tả Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Cài đặt kiểm tra chính tả"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"Nhập dữ liệu bằng giọng nói"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"Mặt cười"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"Quay lại"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"Tìm kiếm"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"Dấu chấm"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Đã bật Shift"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Đã bật Caps lock"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Nhập liệu bằng giọng nói đã bị tắt"</string>
<string name="configure_input_method" msgid="373356270290742459">"Định cấu hình phương thức nhập"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Ngôn ngữ nhập"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Ngôn ngữ nhập"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Chạm lại để lưu"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Có sẵn từ điển"</string>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index 7ff03643f..54cbf5c05 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android 键盘 (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android 键盘设置"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"输入选项"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android 拼写检查工具"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android 拼写检查工具 (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"拼写检查设置"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"语音输入"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"笑脸"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"返回"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"搜索"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"点"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift 模式已启用"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"大写锁定已启用"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"语音输入功能已停用"</string>
<string name="configure_input_method" msgid="373356270290742459">"配置输入法"</string>
<string name="language_selection_title" msgid="1651299598555326750">"输入语言"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"输入语言"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"再次触摸即可保存"</string>
<string name="has_dictionary" msgid="6071847973466625007">"有可用词典"</string>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 9c5d88bef..8f80e2778 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android 鍵盤 (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Android 鍵盤設定"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"輸入選項"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Android 拼字檢查"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android 拼字檢查 (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"拼字檢查設定"</string>
@@ -93,8 +95,7 @@
<string name="spoken_description_mic" msgid="615536748882611950">"語音輸入"</string>
<string name="spoken_description_smiley" msgid="2256309826200113918">"笑臉"</string>
<string name="spoken_description_return" msgid="8178083177238315647">"返回"</string>
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
+ <string name="spoken_description_search" msgid="1247236163755920808">"搜尋"</string>
<string name="spoken_description_dot" msgid="40711082435231673">"點"</string>
<string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift 鍵已啟用"</string>
<string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"大寫鎖定已啟用"</string>
@@ -112,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"語音輸入已停用"</string>
<string name="configure_input_method" msgid="373356270290742459">"設定輸入法"</string>
<string name="language_selection_title" msgid="1651299598555326750">"輸入語言"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"輸入語言"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"再次輕觸即可儲存"</string>
<string name="has_dictionary" msgid="6071847973466625007">"可使用字典"</string>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index d3f80e42a..b5b0dfb45 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -24,6 +24,8 @@
<string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Ikhibhodi ye-Android (AOSP)"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Izilungiselelo zekhibhodi ye-Android"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Okukhethwa kukho kokungenayo"</string>
+ <!-- no translation found for english_ime_research_log (8492602295696577851) -->
+ <skip />
<string name="spell_checker_service_name" msgid="7338064335159755926">"Isihloli sokupela se-Android"</string>
<string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Isihloli sokupela se-Android (AOSP)"</string>
<string name="android_spell_checker_settings" msgid="5822324635435443689">"Izilungiselelo zokuhlola ukupela"</string>
@@ -111,6 +113,18 @@
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Okufakwayo ngezwi kuvinjelwe"</string>
<string name="configure_input_method" msgid="373356270290742459">"Misa izindlela zokufakwayo"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Izilimi zokufakwayo"</string>
+ <!-- no translation found for note_timestamp_for_researchlog (1889446857977976026) -->
+ <skip />
+ <!-- no translation found for notify_recorded_timestamp (8036429032449612051) -->
+ <skip />
+ <!-- no translation found for do_not_log_this_session (413762473641146336) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleting (3299507647764414623) -->
+ <skip />
+ <!-- no translation found for notify_session_log_deleted (8687927130100934686) -->
+ <skip />
+ <!-- no translation found for notify_session_log_not_deleted (2592908998810755970) -->
+ <skip />
<string name="select_language" msgid="3693815588777926848">"Izilimi zokufakwayo"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Thinta futhi ukuze ulondoloze"</string>
<string name="has_dictionary" msgid="6071847973466625007">"Isichazamazwi siyatholakala"</string>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index d51d3789a..d663b008d 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -26,6 +26,8 @@
<string name="english_ime_settings">Android keyboard settings</string>
<!-- Title for Latin keyboard input options dialog [CHAR LIMIT=25] -->
<string name="english_ime_input_options">Input options</string>
+ <!-- Title for Latin keyboard research log dialog, which contains special commands for users that contribute data for research. [CHAR LIMIT=25] -->
+ <string name="english_ime_research_log">Research Log Commands</string>
<!-- Name of Android spell checker service -->
<string name="spell_checker_service_name">Android spell checker</string>
@@ -233,6 +235,20 @@
<!-- Title for input language selection screen -->
<string name="language_selection_title">Input languages</string>
+ <!-- Title for dialog option that lets user mark a particular time in the log for later review by experts [CHAR LIMIT=25] -->
+ <string name="note_timestamp_for_researchlog">Note timestamp in log</string>
+ <!-- Toast notification message that the time has been marked for later review. [CHAR LIMIT=25] -->
+ <string name="notify_recorded_timestamp">Recorded timestamp</string>
+
+ <!-- Title for dialog option to let users cancel logging and delete log for this session [CHAR LIMIT=25] -->
+ <string name="do_not_log_this_session">Do not log this session</string>
+ <!-- Toast notification that the system is processing the request to delete the log for this session [CHAR LIMIT=25] -->
+ <string name="notify_session_log_deleting">Deleting session log</string>
+ <!-- Toast notification that the system has successfully deleted the log for this session [CHAR LIMIT=25] -->
+ <string name="notify_session_log_deleted">Session log deleted</string>
+ <!-- Toast notification that the system has failed to delete the log for this session [CHAR LIMIT=25] -->
+ <string name="notify_session_log_not_deleted">Session log NOT deleted</string>
+
<!-- Preference for input language selection -->
<string name="select_language">Input languages</string>
diff --git a/java/res/xml-sw600dp/key_apostrophe.xml b/java/res/xml-sw600dp/key_apostrophe.xml
index 7da4b6223..0c838db56 100644
--- a/java/res/xml-sw600dp/key_apostrophe.xml
+++ b/java/res/xml-sw600dp/key_apostrophe.xml
@@ -23,20 +23,11 @@
>
<switch>
<case
- latin:mode="email"
+ latin:mode="email|url"
>
<Key
latin:keyLabel="-" />
</case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:keyHintLabel=":"
- latin:moreKeys=":"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- </case>
<default>
<Key
latin:keyLabel="!text/keylabel_for_apostrophe"
diff --git a/java/res/xml-sw600dp/key_dash.xml b/java/res/xml-sw600dp/key_dash.xml
index f7e0b3436..8f91effd0 100644
--- a/java/res/xml-sw600dp/key_dash.xml
+++ b/java/res/xml-sw600dp/key_dash.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:mode="email"
+ latin:mode="email|url"
>
<Key
latin:keyLabel="_" />
diff --git a/java/res/xml-sw600dp/key_f1.xml b/java/res/xml-sw600dp/key_f1.xml
new file mode 100644
index 000000000..77afe4e64
--- /dev/null
+++ b/java/res/xml-sw600dp/key_f1.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="symbols"
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel=":" />
+ </case>
+ <case
+ latin:keyboardLayoutSetElement="symbols"
+ >
+ <Key
+ latin:keyLabel="\@" />
+ </case>
+ <!-- keyboardLayoutSetElement != "symbols" -->
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="\@" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="/"
+ latin:keyHintLabel=":"
+ latin:moreKeys=":"
+ latin:keyStyle="hasShiftedLetterHintStyle" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="/"
+ latin:keyHintLabel="\@"
+ latin:moreKeys="\@"
+ latin:keyStyle="hasShiftedLetterHintStyle" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/key_f2.xml b/java/res/xml-sw600dp/key_f2.xml
new file mode 100644
index 000000000..ca3b30b54
--- /dev/null
+++ b/java/res/xml-sw600dp/key_f2.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:mode="email|url"
+ >
+ <Key
+ latin:keyStyle="comKeyStyle" />
+ </case>
+ <case
+ latin:imeAction="actionSearch"
+ >
+ <Key
+ latin:keyLabel=":"
+ latin:keyHintLabel="+"
+ latin:moreKeys="+"
+ latin:keyStyle="hasShiftedLetterHintStyle" />
+ </case>
+ <default>
+ <Key
+ latin:keyStyle="smileyKeyStyle" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/key_question_exclamation.xml b/java/res/xml-sw600dp/key_question_exclamation.xml
index f1495de49..860a0be77 100644
--- a/java/res/xml-sw600dp/key_question_exclamation.xml
+++ b/java/res/xml-sw600dp/key_question_exclamation.xml
@@ -23,20 +23,11 @@
>
<switch>
<case
- latin:mode="email"
+ latin:mode="email|url"
>
<Key
latin:keyLabel="-" />
</case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:keyHintLabel=":"
- latin:moreKeys=":"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- </case>
<default>
<Key
latin:keyLabel="\?"
diff --git a/java/res/xml-sw600dp/keys_f1f2.xml b/java/res/xml-sw600dp/keys_f1f2.xml
deleted file mode 100644
index 721bfc722..000000000
--- a/java/res/xml-sw600dp/keys_f1f2.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <switch>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyStyle="comKeyStyle"
- latin:keyWidth="18.0%p" />
- </case>
- <default>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyStyle="comKeyStyle" />
- </case>
- <case
- latin:imeAction="actionSearch"
- >
- <Key
- latin:keyLabel=":"
- latin:keyHintLabel="+"
- latin:moreKeys="+"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- </case>
- <default>
- <Key
- latin:keyStyle="smileyKeyStyle" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="\@" />
- </case>
- <default>
- <Key
- latin:keyLabel="/"
- latin:keyHintLabel="\@"
- latin:moreKeys="\@"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- </default>
- </switch>
- </default>
- </switch>
-</merge>
diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml
index ffc3427c5..969cc145e 100644
--- a/java/res/xml-sw600dp/row_dvorak4.xml
+++ b/java/res/xml-sw600dp/row_dvorak4.xml
@@ -23,22 +23,24 @@
>
<Row
latin:keyWidth="9.0%p"
+ latin:backgroundType="functional"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyWidth="10.0%p" />
<include
- latin:keyboardLayout="@xml/keys_f1f2" />
+ latin:keyboardLayout="@xml/key_shortcut" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="28.0%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<include
latin:keyboardLayout="@xml/key_question_exclamation" />
<include
latin:keyboardLayout="@xml/key_dash" />
<include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/row_hebrew4.xml b/java/res/xml-sw600dp/row_hebrew4.xml
index 114a5cc16..f429f97fb 100644
--- a/java/res/xml-sw600dp/row_hebrew4.xml
+++ b/java/res/xml-sw600dp/row_hebrew4.xml
@@ -23,20 +23,22 @@
>
<Row
latin:keyWidth="9.0%p"
+ latin:backgroundType="functional"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyWidth="10.0%p" />
<include
- latin:keyboardLayout="@xml/keys_f1f2" />
+ latin:keyboardLayout="@xml/key_shortcut" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="28.0%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<include
latin:keyboardLayout="@xml/keys_comma_period" />
<include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml
index a4ba8a4c3..fa433635e 100644
--- a/java/res/xml-sw600dp/row_qwerty4.xml
+++ b/java/res/xml-sw600dp/row_qwerty4.xml
@@ -23,22 +23,24 @@
>
<Row
latin:keyWidth="9.0%p"
+ latin:backgroundType="functional"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyWidth="10.0%p" />
<include
- latin:keyboardLayout="@xml/keys_f1f2" />
+ latin:keyboardLayout="@xml/key_shortcut" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="28.0%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<include
latin:keyboardLayout="@xml/key_apostrophe" />
<include
latin:keyboardLayout="@xml/key_dash" />
<include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/row_symbols4.xml b/java/res/xml-sw600dp/row_symbols4.xml
index 20d1a7dff..73a5b1703 100644
--- a/java/res/xml-sw600dp/row_symbols4.xml
+++ b/java/res/xml-sw600dp/row_symbols4.xml
@@ -23,25 +23,24 @@
>
<Row
latin:keyWidth="9.0%p"
+ latin:backgroundType="functional"
>
<Key
latin:keyStyle="toAlphaKeyStyle"
latin:keyWidth="10.0%p" />
<Key
latin:keyLabel="/" />
- <Key
- latin:keyLabel="\@" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="28.0%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<Key
latin:keyLabel="&quot;"
latin:moreKeys="!text/more_keys_for_tablet_double_quote" />
<Key
latin:keyLabel="_" />
- <include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ <!-- Here is empty space. -->
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/row_symbols_shift4.xml b/java/res/xml-sw600dp/row_symbols_shift4.xml
index fd7b37032..6f3aac7c6 100644
--- a/java/res/xml-sw600dp/row_symbols_shift4.xml
+++ b/java/res/xml-sw600dp/row_symbols_shift4.xml
@@ -23,16 +23,16 @@
>
<Row
latin:keyWidth="9.0%p"
+ latin:backgroundType="functional"
>
<Key
latin:keyStyle="toAlphaKeyStyle"
latin:keyWidth="10.0%p" />
+ <!-- Here is empty space. -->
<include
latin:keyXPos="28.0%p"
- latin:keyboardLayout="@xml/key_space" />
- <include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
+ <!-- Here is empty space. -->
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml
index 3954b000e..48b304089 100644
--- a/java/res/xml-sw600dp/rows_number_normal.xml
+++ b/java/res/xml-sw600dp/rows_number_normal.xml
@@ -25,15 +25,18 @@
<Key
latin:keyLabel="-"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="1"
latin:keyStyle="numKeyStyle"
@@ -52,11 +55,13 @@
<Row>
<Key
latin:keyStyle="numStarKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="/"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<switch>
<case
latin:mode="time|datetime"
@@ -66,13 +71,15 @@
latin:keyLabelFlags="hasPopupHint"
latin:moreKeys="!text/more_keys_for_am_pm"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
</case>
<default>
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
</default>
</switch>
<Key
@@ -94,11 +101,13 @@
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<switch>
<case
latin:mode="time|datetime"
@@ -106,13 +115,15 @@
<Key
latin:keyLabel=":"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
</case>
<default>
<Key
latin:keyLabel="="
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
</default>
</switch>
<Key
@@ -131,7 +142,8 @@
<Row>
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="30%p" />
+ latin:keyWidth="30%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numStarKeyStyle"
latin:keyXPos="31%p" />
@@ -141,9 +153,5 @@
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
- <include
- latin:keyXPos="-10%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/rows_phone.xml b/java/res/xml-sw600dp/rows_phone.xml
index 113ce1fa6..dcc4fde7d 100644
--- a/java/res/xml-sw600dp/rows_phone.xml
+++ b/java/res/xml-sw600dp/rows_phone.xml
@@ -29,14 +29,17 @@
<Key
latin:keyLabel="-"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numPauseKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="num1KeyStyle"
latin:keyXPos="31%p" />
@@ -53,14 +56,17 @@
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numWaitKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="num4KeyStyle"
latin:keyXPos="31%p" />
@@ -77,15 +83,18 @@
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="N"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="10%p" />
+ latin:keyWidth="10%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="num7KeyStyle"
latin:keyXPos="31%p" />
@@ -99,7 +108,8 @@
<Row>
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="30%p" />
+ latin:keyWidth="30%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numStarKeyStyle"
latin:keyXPos="31%p" />
@@ -108,9 +118,5 @@
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
- <include
- latin:keyXPos="-10%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/key_settings.xml b/java/res/xml-sw768dp/key_settings.xml
index 0359a99c5..0d3bb59a4 100644
--- a/java/res/xml-sw768dp/key_settings.xml
+++ b/java/res/xml-sw768dp/key_settings.xml
@@ -32,4 +32,4 @@
<Spacer />
</default>
</switch>
- </merge>
+</merge>
diff --git a/java/res/xml-sw768dp/key_shortcut.xml b/java/res/xml-sw768dp/key_shortcut.xml
index 905270599..2d09ebbfc 100644
--- a/java/res/xml-sw768dp/key_shortcut.xml
+++ b/java/res/xml-sw768dp/key_shortcut.xml
@@ -28,5 +28,9 @@
<Key
latin:keyStyle="shortcutKeyStyle" />
</case>
+ <default>
+ <!-- The empty space instead of shortcut key. -->
+ <Spacer />
+ </default>
</switch>
</merge>
diff --git a/java/res/xml-sw768dp/key_styles_common.xml b/java/res/xml-sw768dp/key_styles_common.xml
index f2fb90bbc..40082ac35 100644
--- a/java/res/xml-sw768dp/key_styles_common.xml
+++ b/java/res/xml-sw768dp/key_styles_common.xml
@@ -74,12 +74,6 @@
<include
latin:keyboardLayout="@xml/key_styles_enter" />
<key-style
- latin:styleName="defaultActionKeyStyle"
- latin:code="!code/key_action_enter"
- latin:keyIcon="!icon/undefined"
- latin:backgroundType="functional"
- latin:parentStyle="defaultEnterKeyStyle" />
- <key-style
latin:styleName="spaceKeyStyle"
latin:code="!code/key_space"
latin:keyActionFlags="noKeyPreview" />
diff --git a/java/res/xml-sw768dp/keys_f1f2.xml b/java/res/xml-sw768dp/keys_f1f2.xml
deleted file mode 100644
index 569703572..000000000
--- a/java/res/xml-sw768dp/keys_f1f2.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <switch>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyStyle="comKeyStyle"
- latin:keyWidth="16.084%p" />
- </case>
- <default>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyStyle="comKeyStyle" />
- </case>
- <case
- latin:imeAction="actionSearch"
- >
- <Key
- latin:keyLabel=":"
- latin:keyHintLabel="+"
- latin:moreKeys="+"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- </case>
- <default>
- <Key
- latin:keyStyle="smileyKeyStyle" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="\@" />
- </case>
- <default>
- <Key
- latin:keyLabel="/"
- latin:keyHintLabel="\@"
- latin:moreKeys="\@"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- </default>
- </switch>
- </default>
- </switch>
-</merge>
diff --git a/java/res/xml-sw768dp/row_dvorak4.xml b/java/res/xml-sw768dp/row_dvorak4.xml
index ebe517dce..0827815c9 100644
--- a/java/res/xml-sw768dp/row_dvorak4.xml
+++ b/java/res/xml-sw768dp/row_dvorak4.xml
@@ -23,22 +23,24 @@
>
<Row
latin:keyWidth="8.047%p"
+ latin:backgroundType="functional"
>
<include
+ latin:keyXPos="5.782%p"
latin:keyboardLayout="@xml/key_settings" />
<include
- latin:keyXPos="13.829%p"
- latin:keyboardLayout="@xml/keys_f1f2" />
+ latin:keyboardLayout="@xml/key_shortcut" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="29.923%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<include
latin:keyboardLayout="@xml/key_question_exclamation" />
<include
latin:keyboardLayout="@xml/key_dash" />
<include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/row_hebrew4.xml b/java/res/xml-sw768dp/row_hebrew4.xml
index 477fd0d9a..180c5641d 100644
--- a/java/res/xml-sw768dp/row_hebrew4.xml
+++ b/java/res/xml-sw768dp/row_hebrew4.xml
@@ -23,20 +23,22 @@
>
<Row
latin:keyWidth="8.047%p"
+ latin:backgroundType="functional"
>
<include
+ latin:keyXPos="5.782%p"
latin:keyboardLayout="@xml/key_settings" />
<include
- latin:keyXPos="13.829%p"
- latin:keyboardLayout="@xml/keys_f1f2" />
+ latin:keyboardLayout="@xml/key_shortcut" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="29.923%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<include
latin:keyboardLayout="@xml/keys_comma_period" />
<include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/row_qwerty4.xml b/java/res/xml-sw768dp/row_qwerty4.xml
index 32a6476c5..92411f54e 100644
--- a/java/res/xml-sw768dp/row_qwerty4.xml
+++ b/java/res/xml-sw768dp/row_qwerty4.xml
@@ -23,22 +23,24 @@
>
<Row
latin:keyWidth="8.047%p"
+ latin:backgroundType="functional"
>
<include
+ latin:keyXPos="5.782%p"
latin:keyboardLayout="@xml/key_settings" />
<include
- latin:keyXPos="13.829%p"
- latin:keyboardLayout="@xml/keys_f1f2" />
+ latin:keyboardLayout="@xml/key_shortcut" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="29.923%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<include
latin:keyboardLayout="@xml/key_apostrophe" />
<include
latin:keyboardLayout="@xml/key_dash" />
<include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/row_symbols4.xml b/java/res/xml-sw768dp/row_symbols4.xml
index bd85b4041..4e1c11994 100644
--- a/java/res/xml-sw768dp/row_symbols4.xml
+++ b/java/res/xml-sw768dp/row_symbols4.xml
@@ -23,25 +23,22 @@
>
<Row
latin:keyWidth="8.047%p"
+ latin:backgroundType="functional"
>
- <include
- latin:keyboardLayout="@xml/key_settings" />
- <Key
- latin:keyLabel="/"
- latin:keyXPos="13.829%p" />
<Key
- latin:keyLabel="\@" />
+ latin:keyXPos="13.829%p"
+ latin:keyLabel="/" />
+ <include
+ latin:keyboardLayout="@xml/key_f1" />
<include
latin:keyXPos="29.923%p"
- latin:keyboardLayout="@xml/key_space" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
<Key
latin:keyLabel="&quot;"
latin:moreKeys="!text/more_keys_for_tablet_double_quote" />
<Key
latin:keyLabel="_" />
- <include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ <!-- Here is empty space. -->
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/row_symbols_shift4.xml b/java/res/xml-sw768dp/row_symbols_shift4.xml
index 82c1d17ca..561351cab 100644
--- a/java/res/xml-sw768dp/row_symbols_shift4.xml
+++ b/java/res/xml-sw768dp/row_symbols_shift4.xml
@@ -23,15 +23,13 @@
>
<Row
latin:keyWidth="8.047%p"
+ latin:backgroundType="functional"
>
- <include
- latin:keyboardLayout="@xml/key_settings" />
+ <!-- Here is empty space. -->
<include
latin:keyXPos="29.923%p"
- latin:keyboardLayout="@xml/key_space" />
- <include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyboardLayout="@xml/key_space"
+ latin:backgroundType="normal" />
+ <!-- Here is empty space. -->
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/rows_number_normal.xml b/java/res/xml-sw768dp/rows_number_normal.xml
index 42697cec1..84910a88f 100644
--- a/java/res/xml-sw768dp/rows_number_normal.xml
+++ b/java/res/xml-sw768dp/rows_number_normal.xml
@@ -30,15 +30,18 @@
latin:keyLabel="-"
latin:keyStyle="numKeyStyle"
latin:keyXPos="13.829%p"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="1"
latin:keyStyle="numKeyStyle"
@@ -60,11 +63,13 @@
latin:keyWidth="13.829%p" />
<Key
latin:keyStyle="numStarKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="/"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<switch>
<case
latin:mode="time|datetime"
@@ -74,13 +79,15 @@
latin:keyLabelFlags="hasPopupHint"
latin:moreKeys="!text/more_keys_for_am_pm"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
</case>
<default>
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
</default>
</switch>
<Key
@@ -105,11 +112,13 @@
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<switch>
<case
latin:mode="time|datetime"
@@ -117,13 +126,15 @@
<Key
latin:keyLabel=":"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
</case>
<default>
<Key
latin:keyLabel="="
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
</default>
</switch>
<Key
@@ -146,7 +157,8 @@
<Key
latin:keyStyle="spaceKeyStyle"
latin:keyXPos="13.829%p"
- latin:keyWidth="24.140%p" />
+ latin:keyWidth="24.140%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numStarKeyStyle"
latin:keyXPos="43.125%p" />
@@ -156,9 +168,5 @@
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
- <include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/rows_phone.xml b/java/res/xml-sw768dp/rows_phone.xml
index b3b3521a9..2f718db62 100644
--- a/java/res/xml-sw768dp/rows_phone.xml
+++ b/java/res/xml-sw768dp/rows_phone.xml
@@ -34,14 +34,17 @@
latin:keyLabel="-"
latin:keyStyle="numKeyStyle"
latin:keyXPos="13.829%p"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numPauseKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="num1KeyStyle"
latin:keyXPos="43.125%p" />
@@ -62,14 +65,17 @@
latin:keyLabel=","
latin:keyStyle="numKeyStyle"
latin:keyXPos="13.829%p"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numWaitKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="num4KeyStyle"
latin:keyXPos="43.125%p" />
@@ -89,15 +95,18 @@
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyLabel="N"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="8.047%p" />
+ latin:keyWidth="8.047%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="num7KeyStyle"
latin:keyXPos="43.125%p" />
@@ -115,7 +124,8 @@
<Key
latin:keyStyle="spaceKeyStyle"
latin:keyXPos="13.829%p"
- latin:keyWidth="24.140%p" />
+ latin:keyWidth="24.140%p"
+ latin:backgroundType="functional" />
<Key
latin:keyStyle="numStarKeyStyle"
latin:keyXPos="43.125%p" />
@@ -124,9 +134,5 @@
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
- <include
- latin:keyXPos="-8.047%p"
- latin:keyWidth="fillRight"
- latin:keyboardLayout="@xml/key_shortcut" />
- </Row>
+ </Row>
</merge>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 819cdc6a9..162119dab 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -22,23 +22,8 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<!-- Base key style for the key which may have settings or tab key as popup key. -->
- <switch>
- <case
- latin:clobberSettingsKey="true"
- >
- <key-style
- latin:styleName="f1MoreKeysStyle"
- latin:backgroundType="functional" />
- </case>
- <!-- clobberSettingsKey="false" -->
- <default>
- <key-style
- latin:styleName="f1MoreKeysStyle"
- latin:keyLabelFlags="hasPopupHint"
- latin:moreKeys="!text/settings_as_more_key"
- latin:backgroundType="functional" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/key_styles_f1" />
<!-- Functional key styles -->
<switch>
<case
@@ -105,8 +90,7 @@
<key-style
latin:styleName="spaceKeyStyle"
latin:code="!code/key_space"
- latin:keyActionFlags="noKeyPreview|enableLongPress"
- latin:backgroundType="functional" />
+ latin:keyActionFlags="noKeyPreview|enableLongPress" />
<!-- U+200C: ZERO WIDTH NON-JOINER
U+200D: ZERO WIDTH JOINER -->
<key-style
@@ -115,8 +99,7 @@
latin:keyIcon="!icon/zwnj_key"
latin:moreKeys="!icon/zwj_key|&#x200D;"
latin:keyLabelFlags="hasPopupHint"
- latin:keyActionFlags="noKeyPreview"
- latin:backgroundType="functional" />
+ latin:keyActionFlags="noKeyPreview" />
<key-style
latin:styleName="shortcutKeyStyle"
latin:code="!code/key_shortcut"
@@ -137,8 +120,7 @@
latin:code="!code/key_language_switch"
latin:keyIcon="!icon/language_switch_key"
latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress"
- latin:altCode="!code/key_space"
- latin:backgroundType="functional" />
+ latin:altCode="!code/key_space" />
<key-style
latin:styleName="tabKeyStyle"
latin:code="!code/key_tab"
diff --git a/java/res/xml/key_styles_f1.xml b/java/res/xml/key_styles_f1.xml
new file mode 100644
index 000000000..8dfc3cb84
--- /dev/null
+++ b/java/res/xml/key_styles_f1.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <!-- Base key style for the key which may have settings or tab key as popup key. -->
+ <!-- Kept as a separate file for cleaner overriding by an overlay. -->
+ <switch>
+ <case
+ latin:clobberSettingsKey="true"
+ >
+ <key-style
+ latin:styleName="f1MoreKeysStyle"
+ latin:backgroundType="functional" />
+ </case>
+ <!-- clobberSettingsKey="false" -->
+ <default>
+ <key-style
+ latin:styleName="f1MoreKeysStyle"
+ latin:keyLabelFlags="hasPopupHint"
+ latin:moreKeys="!text/settings_as_more_key"
+ latin:backgroundType="functional" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml
index ecb95e7a5..43385d291 100644
--- a/java/res/xml/row_qwerty4.xml
+++ b/java/res/xml/row_qwerty4.xml
@@ -38,15 +38,14 @@
>
<!-- U+064B: "ً" ARABIC FATHATAN -->
<Key
- latin:keyLabel="."
latin:keyHintLabel="&#x064B;"
latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint"
latin:moreKeys="!text/more_keys_for_arabic_diacritics"
- latin:backgroundType="functional" />
+ latin:keyStyle="punctuationKeyStyle" />
</case>
<default>
<Key
- latin:keyStyle="punctuationKeyStyle" />
+ latin:keyStyle="punctuationKeyStyle" />
</default>
</switch>
<Key
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index ed873a70d..e1e1ca9cf 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -227,7 +227,7 @@ public class Key {
row.setXPos(keyXPos + keyWidth);
mBackgroundType = style.getInt(keyAttr,
- R.styleable.Keyboard_Key_backgroundType, BACKGROUND_TYPE_NORMAL);
+ R.styleable.Keyboard_Key_backgroundType, row.getDefaultBackgroundType());
mVisualInsetsLeft = Math.round(Keyboard.Builder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_visualInsetsLeft, params.mBaseWidth, 0));
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 0be4cf3a7..6fc630d05 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -89,7 +89,8 @@ public class Keyboard {
private static final int MINIMUM_LETTER_CODE = CODE_TAB;
/** Special keys code. Must be negative.
- * These should be aligned with values/keycodes.xml
+ * These should be aligned with KeyboardCodesSet.ID_TO_NAME[],
+ * KeyboardCodesSet.DEFAULT[] and KeyboardCodesSet.RTL[]
*/
public static final int CODE_SHIFT = -1;
public static final int CODE_SWITCH_ALPHA_SYMBOL = -2;
@@ -101,8 +102,9 @@ public class Keyboard {
public static final int CODE_ACTION_NEXT = -8;
public static final int CODE_ACTION_PREVIOUS = -9;
public static final int CODE_LANGUAGE_SWITCH = -10;
+ public static final int CODE_RESEARCH = -11;
// Code value representing the code is not specified.
- public static final int CODE_UNSPECIFIED = -11;
+ public static final int CODE_UNSPECIFIED = -12;
public final KeyboardId mId;
public final int mThemeId;
@@ -422,67 +424,67 @@ public class Keyboard {
* This class parses Keyboard XML file and eventually build a Keyboard.
* The Keyboard XML file looks like:
* <pre>
- * &gt;!-- xml/keyboard.xml --&lt;
- * &gt;Keyboard keyboard_attributes*&lt;
- * &gt;!-- Keyboard Content --&lt;
- * &gt;Row row_attributes*&lt;
- * &gt;!-- Row Content --&lt;
- * &gt;Key key_attributes* /&lt;
- * &gt;Spacer horizontalGap="32.0dp" /&lt;
- * &gt;include keyboardLayout="@xml/other_keys"&lt;
+ * &lt;!-- xml/keyboard.xml --&gt;
+ * &lt;Keyboard keyboard_attributes*&gt;
+ * &lt;!-- Keyboard Content --&gt;
+ * &lt;Row row_attributes*&gt;
+ * &lt;!-- Row Content --&gt;
+ * &lt;Key key_attributes* /&gt;
+ * &lt;Spacer horizontalGap="32.0dp" /&gt;
+ * &lt;include keyboardLayout="@xml/other_keys"&gt;
* ...
- * &gt;/Row&lt;
- * &gt;include keyboardLayout="@xml/other_rows"&lt;
+ * &lt;/Row&gt;
+ * &lt;include keyboardLayout="@xml/other_rows"&gt;
* ...
- * &gt;/Keyboard&lt;
+ * &lt;/Keyboard&gt;
* </pre>
- * The XML file which is included in other file must have &gt;merge&lt; as root element,
+ * The XML file which is included in other file must have &lt;merge&gt; as root element,
* such as:
* <pre>
- * &gt;!-- xml/other_keys.xml --&lt;
- * &gt;merge&lt;
- * &gt;Key key_attributes* /&lt;
+ * &lt;!-- xml/other_keys.xml --&gt;
+ * &lt;merge&gt;
+ * &lt;Key key_attributes* /&gt;
* ...
- * &gt;/merge&lt;
+ * &lt;/merge&gt;
* </pre>
* and
* <pre>
- * &gt;!-- xml/other_rows.xml --&lt;
- * &gt;merge&lt;
- * &gt;Row row_attributes*&lt;
- * &gt;Key key_attributes* /&lt;
- * &gt;/Row&lt;
+ * &lt;!-- xml/other_rows.xml --&gt;
+ * &lt;merge&gt;
+ * &lt;Row row_attributes*&gt;
+ * &lt;Key key_attributes* /&gt;
+ * &lt;/Row&gt;
* ...
- * &gt;/merge&lt;
+ * &lt;/merge&gt;
* </pre>
* You can also use switch-case-default tags to select Rows and Keys.
* <pre>
- * &gt;switch&lt;
- * &gt;case case_attribute*&lt;
- * &gt;!-- Any valid tags at switch position --&lt;
- * &gt;/case&lt;
+ * &lt;switch&gt;
+ * &lt;case case_attribute*&gt;
+ * &lt;!-- Any valid tags at switch position --&gt;
+ * &lt;/case&gt;
* ...
- * &gt;default&lt;
- * &gt;!-- Any valid tags at switch position --&lt;
- * &gt;/default&lt;
- * &gt;/switch&lt;
+ * &lt;default&gt;
+ * &lt;!-- Any valid tags at switch position --&gt;
+ * &lt;/default&gt;
+ * &lt;/switch&gt;
* </pre>
* You can declare Key style and specify styles within Key tags.
* <pre>
- * &gt;switch&lt;
- * &gt;case mode="email"&lt;
- * &gt;key-style styleName="f1-key" parentStyle="modifier-key"
+ * &lt;switch&gt;
+ * &lt;case mode="email"&gt;
+ * &lt;key-style styleName="f1-key" parentStyle="modifier-key"
* keyLabel=".com"
- * /&lt;
- * &gt;/case&lt;
- * &gt;case mode="url"&lt;
- * &gt;key-style styleName="f1-key" parentStyle="modifier-key"
+ * /&gt;
+ * &lt;/case&gt;
+ * &lt;case mode="url"&gt;
+ * &lt;key-style styleName="f1-key" parentStyle="modifier-key"
* keyLabel="http://"
- * /&lt;
- * &gt;/case&lt;
- * &gt;/switch&lt;
+ * /&gt;
+ * &lt;/case&gt;
+ * &lt;/switch&gt;
* ...
- * &gt;Key keyStyle="shift-key" ... /&lt;
+ * &lt;Key keyStyle="shift-key" ... /&gt;
* </pre>
*/
@@ -533,6 +535,8 @@ public class Keyboard {
public final int mRowHeight;
/** Default keyLabelFlags in this row. */
private int mDefaultKeyLabelFlags;
+ /** Default backgroundType for this row */
+ private int mDefaultBackgroundType;
private final int mCurrentY;
// Will be updated by {@link Key}'s constructor.
@@ -551,8 +555,11 @@ public class Keyboard {
mDefaultKeyWidth = Builder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_keyWidth,
params.mBaseWidth, params.mDefaultKeyWidth);
+ mDefaultBackgroundType = keyAttr.getInt(R.styleable.Keyboard_Key_backgroundType,
+ Key.BACKGROUND_TYPE_NORMAL);
keyAttr.recycle();
+ // TODO: Initialize this with <Row> attribute as backgroundType is done.
mDefaultKeyLabelFlags = 0;
mCurrentY = y;
mCurrentX = 0.0f;
@@ -574,6 +581,14 @@ public class Keyboard {
mDefaultKeyLabelFlags = keyLabelFlags;
}
+ public int getDefaultBackgroundType() {
+ return mDefaultBackgroundType;
+ }
+
+ public void setDefaultBackgroundType(int backgroundType) {
+ mDefaultBackgroundType = backgroundType;
+ }
+
public void setXPos(float keyXPos) {
mCurrentX = keyXPos;
}
@@ -952,6 +967,7 @@ public class Keyboard {
int keyboardLayout = 0;
float savedDefaultKeyWidth = 0;
int savedDefaultKeyLabelFlags = 0;
+ int savedDefaultBackgroundType = Key.BACKGROUND_TYPE_NORMAL;
try {
XmlParseUtils.checkAttributeExists(keyboardAttr,
R.styleable.Keyboard_Include_keyboardLayout, "keyboardLayout",
@@ -959,22 +975,26 @@ public class Keyboard {
keyboardLayout = keyboardAttr.getResourceId(
R.styleable.Keyboard_Include_keyboardLayout, 0);
if (row != null) {
- savedDefaultKeyWidth = row.getDefaultKeyWidth();
- savedDefaultKeyLabelFlags = row.getDefaultKeyLabelFlags();
if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyXPos)) {
// Override current x coordinate.
row.setXPos(row.getKeyX(keyAttr));
}
+ // TODO: Remove this if-clause and do the same as backgroundType below.
+ savedDefaultKeyWidth = row.getDefaultKeyWidth();
if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyWidth)) {
// Override default key width.
row.setDefaultKeyWidth(row.getKeyWidth(keyAttr));
}
- if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyLabelFlags)) {
- // Override default key label flags.
- row.setDefaultKeyLabelFlags(
- keyAttr.getInt(R.styleable.Keyboard_Key_keyLabelFlags, 0)
- | savedDefaultKeyLabelFlags);
- }
+ savedDefaultKeyLabelFlags = row.getDefaultKeyLabelFlags();
+ // Bitwise-or default keyLabelFlag if exists.
+ row.setDefaultKeyLabelFlags(keyAttr.getInt(
+ R.styleable.Keyboard_Key_keyLabelFlags, 0)
+ | savedDefaultKeyLabelFlags);
+ savedDefaultBackgroundType = row.getDefaultBackgroundType();
+ // Override default backgroundType if exists.
+ row.setDefaultBackgroundType(keyAttr.getInt(
+ R.styleable.Keyboard_Key_backgroundType,
+ savedDefaultBackgroundType));
}
} finally {
keyboardAttr.recycle();
@@ -991,9 +1011,10 @@ public class Keyboard {
parseMerge(parserForInclude, row, skip);
} finally {
if (row != null) {
- // Restore default key width and key label flags.
+ // Restore default keyWidth, keyLabelFlags, and backgroundType.
row.setDefaultKeyWidth(savedDefaultKeyWidth);
row.setDefaultKeyLabelFlags(savedDefaultKeyLabelFlags);
+ row.setDefaultBackgroundType(savedDefaultBackgroundType);
}
parserForInclude.close();
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
index 67cb74f4d..f7981a320 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
@@ -52,6 +52,7 @@ public class KeyboardCodesSet {
"key_action_next",
"key_action_previous",
"key_language_switch",
+ "key_research",
"key_unspecified",
"key_left_parenthesis",
"key_right_parenthesis",
@@ -86,6 +87,7 @@ public class KeyboardCodesSet {
Keyboard.CODE_ACTION_NEXT,
Keyboard.CODE_ACTION_PREVIOUS,
Keyboard.CODE_LANGUAGE_SWITCH,
+ Keyboard.CODE_RESEARCH,
Keyboard.CODE_UNSPECIFIED,
CODE_LEFT_PARENTHESIS,
CODE_RIGHT_PARENTHESIS,
@@ -112,6 +114,7 @@ public class KeyboardCodesSet {
DEFAULT[11],
DEFAULT[12],
DEFAULT[13],
+ DEFAULT[14],
CODE_RIGHT_PARENTHESIS,
CODE_LEFT_PARENTHESIS,
CODE_GREATER_THAN_SIGN,
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index 34308dfb3..10e511eaf 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -52,6 +52,9 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
/** The number of contacts in the most recent dictionary rebuild. */
static private int sContactCountAtLastRebuild = 0;
+ /** The locale for this contacts dictionary. Controls name bigram predictions. */
+ public final Locale mLocale;
+
private ContentObserver mObserver;
/**
@@ -61,6 +64,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
public ContactsBinaryDictionary(final Context context, final int dicTypeId, Locale locale) {
super(context, getFilenameWithLocale(NAME, locale.toString()), dicTypeId);
+ mLocale = locale;
mUseFirstLastBigrams = useFirstLastBigramsForLocale(locale);
registerObserver(context);
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 7092b4e7e..ae9e197a1 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -111,17 +111,17 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// TODO: migrate this to SettingsValues
private int mSuggestionVisibility;
- private static final int SUGGESTION_VISIBILILTY_SHOW_VALUE
+ private static final int SUGGESTION_VISIBILITY_SHOW_VALUE
= R.string.prefs_suggestion_visibility_show_value;
- private static final int SUGGESTION_VISIBILILTY_SHOW_ONLY_PORTRAIT_VALUE
+ private static final int SUGGESTION_VISIBILITY_SHOW_ONLY_PORTRAIT_VALUE
= R.string.prefs_suggestion_visibility_show_only_portrait_value;
- private static final int SUGGESTION_VISIBILILTY_HIDE_VALUE
+ private static final int SUGGESTION_VISIBILITY_HIDE_VALUE
= R.string.prefs_suggestion_visibility_hide_value;
private static final int[] SUGGESTION_VISIBILITY_VALUE_ARRAY = new int[] {
- SUGGESTION_VISIBILILTY_SHOW_VALUE,
- SUGGESTION_VISIBILILTY_SHOW_ONLY_PORTRAIT_VALUE,
- SUGGESTION_VISIBILILTY_HIDE_VALUE
+ SUGGESTION_VISIBILITY_SHOW_VALUE,
+ SUGGESTION_VISIBILITY_SHOW_ONLY_PORTRAIT_VALUE,
+ SUGGESTION_VISIBILITY_HIDE_VALUE
};
private static final int SPACE_STATE_NONE = 0;
@@ -497,7 +497,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Note that the calling sequence of onCreate() and onCurrentInputMethodSubtypeChanged()
// is not guaranteed. It may even be called at the same time on a different thread.
if (null == mPrefs) mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- mUserHistoryDictionary = new UserHistoryDictionary(
+ mUserHistoryDictionary = UserHistoryDictionary.getInstance(
this, localeStr, Suggest.DIC_USER_HISTORY, mPrefs);
mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
}
@@ -505,9 +505,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
/**
* Resets the contacts dictionary in mSuggest according to the user settings.
*
- * This method takes an optional contacts dictionary to use. Since the contacts dictionary
- * does not depend on the locale, it can be reused across different instances of Suggest.
- * The dictionary will also be opened or closed as necessary depending on the settings.
+ * This method takes an optional contacts dictionary to use when the locale hasn't changed
+ * since the contacts dictionary can be opened or closed as necessary depending on the settings.
*
* @param oldContactsDictionary an optional dictionary to use, or null
*/
@@ -520,21 +519,35 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// so it's safe to call it anyways.
if (null != oldContactsDictionary) oldContactsDictionary.close();
dictionaryToUse = null;
- } else if (null != oldContactsDictionary) {
- // Make sure the old contacts dictionary is opened. If it is already open, this is a
- // no-op, so it's safe to call it anyways.
- if (USE_BINARY_CONTACTS_DICTIONARY) {
- ((ContactsBinaryDictionary)oldContactsDictionary).reopen(this);
- } else {
- ((ContactsDictionary)oldContactsDictionary).reopen(this);
- }
- dictionaryToUse = oldContactsDictionary;
} else {
- if (USE_BINARY_CONTACTS_DICTIONARY) {
- dictionaryToUse = new ContactsBinaryDictionary(this, Suggest.DIC_CONTACTS,
- mSubtypeSwitcher.getCurrentSubtypeLocale());
+ final Locale locale = mSubtypeSwitcher.getCurrentSubtypeLocale();
+ if (null != oldContactsDictionary) {
+ if (USE_BINARY_CONTACTS_DICTIONARY) {
+ ContactsBinaryDictionary oldContactsBinaryDictionary =
+ (ContactsBinaryDictionary)oldContactsDictionary;
+ if (!oldContactsBinaryDictionary.mLocale.equals(locale)) {
+ // If the locale has changed then recreate the contacts dictionary. This
+ // allows locale dependent rules for handling bigram name predictions.
+ oldContactsDictionary.close();
+ dictionaryToUse = new ContactsBinaryDictionary(
+ this, Suggest.DIC_CONTACTS, locale);
+ } else {
+ // Make sure the old contacts dictionary is opened. If it is already open,
+ // this is a no-op, so it's safe to call it anyways.
+ oldContactsBinaryDictionary.reopen(this);
+ dictionaryToUse = oldContactsDictionary;
+ }
+ } else {
+ ((ContactsDictionary)oldContactsDictionary).reopen(this);
+ dictionaryToUse = oldContactsDictionary;
+ }
} else {
- dictionaryToUse = new ContactsDictionary(this, Suggest.DIC_CONTACTS);
+ if (USE_BINARY_CONTACTS_DICTIONARY) {
+ dictionaryToUse = new ContactsBinaryDictionary(this, Suggest.DIC_CONTACTS,
+ locale);
+ } else {
+ dictionaryToUse = new ContactsDictionary(this, Suggest.DIC_CONTACTS);
+ }
}
}
@@ -1332,6 +1345,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
case Keyboard.CODE_LANGUAGE_SWITCH:
handleLanguageSwitchKey();
break;
+ case Keyboard.CODE_RESEARCH:
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ ResearchLogger.getInstance().presentResearchDialog(this);
+ }
+ break;
default:
if (primaryCode == Keyboard.CODE_TAB
&& mInputAttributes.mEditorAction == EditorInfo.IME_ACTION_NEXT) {
@@ -1724,8 +1742,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
public boolean isShowingSuggestionsStrip() {
- return (mSuggestionVisibility == SUGGESTION_VISIBILILTY_SHOW_VALUE)
- || (mSuggestionVisibility == SUGGESTION_VISIBILILTY_SHOW_ONLY_PORTRAIT_VALUE
+ return (mSuggestionVisibility == SUGGESTION_VISIBILITY_SHOW_VALUE)
+ || (mSuggestionVisibility == SUGGESTION_VISIBILITY_SHOW_ONLY_PORTRAIT_VALUE
&& mDisplayOrientation == Configuration.ORIENTATION_PORTRAIT);
}
@@ -2446,10 +2464,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setItems(items, listener)
.setTitle(title);
- showOptionDialogInternal(builder.create());
+ showOptionDialog(builder.create());
}
- private void showOptionDialogInternal(AlertDialog dialog) {
+ /* package */ void showOptionDialog(AlertDialog dialog) {
final IBinder windowToken = mKeyboardSwitcher.getKeyboardView().getWindowToken();
if (windowToken == null) return;
diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java
index 16285091b..bb003f766 100644
--- a/java/src/com/android/inputmethod/latin/ResearchLogger.java
+++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java
@@ -18,6 +18,8 @@ package com.android.inputmethod.latin;
import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.inputmethodservice.InputMethodService;
@@ -33,9 +35,9 @@ import android.view.MotionEvent;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
+import android.widget.Toast;
import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.KeyDetector;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
@@ -134,12 +136,16 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
}
if (prefs != null) {
sIsLogging = prefs.getBoolean(PREF_USABILITY_STUDY_MODE, false);
- prefs.registerOnSharedPreferenceChangeListener(sInstance);
+ prefs.registerOnSharedPreferenceChangeListener(this);
}
}
public synchronized void start() {
Log.d(TAG, "start called");
+ if (!sIsLogging) {
+ // Log.w(TAG, "not in usability mode; not logging");
+ return;
+ }
if (mFilesDir == null || !mFilesDir.exists()) {
Log.w(TAG, "IME storage directory does not exist. Cannot start logging.");
} else {
@@ -192,16 +198,17 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
- }
- mJsonWriter = NULL_JSON_WRITER;
- mFile = null;
- mLoggingState = LOGGING_STATE_OFF;
- if (DEBUG) {
- Log.d(TAG, "logfile closed");
- }
- Log.d(TAG, "finished stop(), notifying");
- synchronized (ResearchLogger.this) {
- ResearchLogger.this.notify();
+ } finally {
+ mJsonWriter = NULL_JSON_WRITER;
+ mFile = null;
+ mLoggingState = LOGGING_STATE_OFF;
+ if (DEBUG) {
+ Log.d(TAG, "logfile closed");
+ }
+ Log.d(TAG, "finished stop(), notifying");
+ synchronized (ResearchLogger.this) {
+ ResearchLogger.this.notify();
+ }
}
}
});
@@ -213,6 +220,38 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
}
}
+ public synchronized boolean abort() {
+ Log.d(TAG, "abort called");
+ boolean isLogFileDeleted = false;
+ if (mLoggingHandler != null && mLoggingState == LOGGING_STATE_ON) {
+ mLoggingState = LOGGING_STATE_STOPPING;
+ try {
+ Log.d(TAG, "closing jsonwriter");
+ mJsonWriter.endArray();
+ mJsonWriter.close();
+ } catch (IllegalStateException e1) {
+ // assume that this is just the json not being terminated properly.
+ // ignore
+ e1.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ mJsonWriter = NULL_JSON_WRITER;
+ // delete file
+ final boolean isDeleted = mFile.delete();
+ if (isDeleted) {
+ isLogFileDeleted = true;
+ }
+ mFile = null;
+ mLoggingState = LOGGING_STATE_OFF;
+ if (DEBUG) {
+ Log.d(TAG, "logfile closed");
+ }
+ }
+ }
+ return isLogFileDeleted;
+ }
+
/* package */ synchronized void flush() {
try {
mJsonWriter.flush();
@@ -227,6 +266,50 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
return;
}
sIsLogging = prefs.getBoolean(PREF_USABILITY_STUDY_MODE, false);
+ if (sIsLogging == false) {
+ abort();
+ }
+ }
+
+ /* package */ void presentResearchDialog(final LatinIME latinIME) {
+ final CharSequence title = latinIME.getString(R.string.english_ime_research_log);
+ final CharSequence[] items = new CharSequence[] {
+ latinIME.getString(R.string.note_timestamp_for_researchlog),
+ latinIME.getString(R.string.do_not_log_this_session),
+ };
+ final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface di, int position) {
+ di.dismiss();
+ switch (position) {
+ case 0:
+ ResearchLogger.getInstance().userTimestamp();
+ Toast.makeText(latinIME, R.string.notify_recorded_timestamp,
+ Toast.LENGTH_LONG).show();
+ break;
+ case 1:
+ Toast toast = Toast.makeText(latinIME,
+ R.string.notify_session_log_deleting, Toast.LENGTH_LONG);
+ toast.show();
+ final ResearchLogger logger = ResearchLogger.getInstance();
+ boolean isLogDeleted = logger.abort();
+ toast.cancel();
+ if (isLogDeleted) {
+ Toast.makeText(latinIME, R.string.notify_session_log_deleted,
+ Toast.LENGTH_LONG).show();
+ } else {
+ Toast.makeText(latinIME,
+ R.string.notify_session_log_not_deleted, Toast.LENGTH_LONG)
+ .show();
+ }
+ break;
+ }
+ }
+ };
+ final AlertDialog.Builder builder = new AlertDialog.Builder(latinIME)
+ .setItems(items, listener)
+ .setTitle(title);
+ latinIME.showOptionDialog(builder.create());
}
private static final String CURRENT_TIME_KEY = "_ct";
@@ -756,4 +839,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
getInstance().writeEvent(EVENTKEYS_SUGGESTIONSVIEW_SETSUGGESTIONS, values);
}
}
+
+ private static final String[] EVENTKEYS_USER_TIMESTAMP = {
+ "UserTimestamp"
+ };
+ public void userTimestamp() {
+ getInstance().writeEvent(EVENTKEYS_USER_TIMESTAMP, EVENTKEYS_NULLVALUES);
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
index a6ff8953d..9c54e0b81 100644
--- a/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
@@ -29,7 +29,9 @@ import android.util.Log;
import com.android.inputmethod.latin.UserHistoryForgettingCurveUtils.ForgettingCurveParams;
+import java.lang.ref.SoftReference;
import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
/**
* Locally gathers stats about the words user types and various other signals like auto-correction
@@ -38,6 +40,7 @@ import java.util.HashMap;
public class UserHistoryDictionary extends ExpandableDictionary {
private static final String TAG = "UserHistoryDictionary";
public static final boolean DBG_SAVE_RESTORE = false;
+ public static final boolean PROFILE_SAVE_RESTORE = LatinImeLogger.sDBG;
/** Any pair being typed or picked */
private static final int FREQUENCY_FOR_TYPED = 2;
@@ -77,13 +80,14 @@ public class UserHistoryDictionary extends ExpandableDictionary {
/** Locale for which this user history dictionary is storing words */
private final String mLocale;
- private UserHistoryDictionaryBigramList mBigramList =
+ private final UserHistoryDictionaryBigramList mBigramList =
new UserHistoryDictionaryBigramList();
- private final Object mPendingWritesLock = new Object();
private static volatile boolean sUpdatingDB = false;
private final SharedPreferences mPrefs;
private final static HashMap<String, String> sDictProjectionMap;
+ private final static ConcurrentHashMap<String, SoftReference<UserHistoryDictionary>>
+ sLangDictCache = new ConcurrentHashMap<String, SoftReference<UserHistoryDictionary>>();
static {
sDictProjectionMap = new HashMap<String, String>();
@@ -107,28 +111,48 @@ public class UserHistoryDictionary extends ExpandableDictionary {
sDeleteHistoryBigrams = deleteHistoryBigram;
}
- public UserHistoryDictionary(final Context context, final String locale, final int dicTypeId,
+ public synchronized static UserHistoryDictionary getInstance(
+ final Context context, final String locale,
+ final int dictTypeId, final SharedPreferences sp) {
+ if (sLangDictCache.containsKey(locale)) {
+ final SoftReference<UserHistoryDictionary> ref = sLangDictCache.get(locale);
+ final UserHistoryDictionary dict = ref == null ? null : ref.get();
+ if (dict != null) {
+ if (PROFILE_SAVE_RESTORE) {
+ Log.w(TAG, "Use cached UserHistoryDictionary for " + locale);
+ }
+ return dict;
+ }
+ }
+ final UserHistoryDictionary dict =
+ new UserHistoryDictionary(context, locale, dictTypeId, sp);
+ sLangDictCache.put(locale, new SoftReference<UserHistoryDictionary>(dict));
+ return dict;
+ }
+
+ private UserHistoryDictionary(final Context context, final String locale, final int dicTypeId,
SharedPreferences sp) {
super(context, dicTypeId);
mLocale = locale;
+ mPrefs = sp;
if (sOpenHelper == null) {
sOpenHelper = new DatabaseHelper(getContext());
}
if (mLocale != null && mLocale.length() > 1) {
loadDictionary();
}
- mPrefs = sp;
}
@Override
public void close() {
flushPendingWrites();
- SettingsValues.setLastUserHistoryWriteTime(mPrefs, mLocale);
// Don't close the database as locale changes will require it to be reopened anyway
// Also, the database is written to somewhat frequently, so it needs to be kept alive
// throughout the life of the process.
// mOpenHelper.close();
- super.close();
+ // Ignore close because we cache UserHistoryDictionary for each language. See getInstance()
+ // above.
+ // super.close();
}
/**
@@ -160,7 +184,7 @@ public class UserHistoryDictionary extends ExpandableDictionary {
} else {
freq = super.setBigramAndGetFrequency(word1, word2, new ForgettingCurveParams(isValid));
}
- synchronized (mPendingWritesLock) {
+ synchronized (mBigramList) {
mBigramList.addBigram(word1, word2);
}
@@ -168,7 +192,7 @@ public class UserHistoryDictionary extends ExpandableDictionary {
}
public boolean cancelAddingUserHistory(String word1, String word2) {
- synchronized (mPendingWritesLock) {
+ synchronized (mBigramList) {
if (mBigramList.removeBigram(word1, word2)) {
return super.removeBigram(word1, word2);
}
@@ -180,19 +204,17 @@ public class UserHistoryDictionary extends ExpandableDictionary {
* Schedules a background thread to write any pending words to the database.
*/
private void flushPendingWrites() {
- synchronized (mPendingWritesLock) {
+ synchronized (mBigramList) {
// Nothing pending? Return
if (mBigramList.isEmpty()) return;
// Create a background thread to write the pending entries
- new UpdateDbTask(sOpenHelper, mBigramList, mLocale, this).execute();
- // Create a new map for writing new entries into while the old one is written to db
- mBigramList = new UserHistoryDictionaryBigramList();
+ new UpdateDbTask(sOpenHelper, mBigramList, mLocale, this, mPrefs).execute();
}
}
/** Used for testing purpose **/
void waitUntilUpdateDBDone() {
- synchronized (mPendingWritesLock) {
+ synchronized (mBigramList) {
while (sUpdatingDB) {
try {
Thread.sleep(100);
@@ -205,41 +227,48 @@ public class UserHistoryDictionary extends ExpandableDictionary {
@Override
public void loadDictionaryAsync() {
- final long last = SettingsValues.getLastUserHistoryWriteTime(mPrefs, mLocale);
- final long now = System.currentTimeMillis();
- // Load the words that correspond to the current input locale
- final Cursor cursor = query(MAIN_COLUMN_LOCALE + "=?", new String[] { mLocale });
- if (null == cursor) return;
- try {
- if (cursor.moveToFirst()) {
- final int word1Index = cursor.getColumnIndex(MAIN_COLUMN_WORD1);
- final int word2Index = cursor.getColumnIndex(MAIN_COLUMN_WORD2);
- final int fcIndex = cursor.getColumnIndex(COLUMN_FORGETTING_CURVE_VALUE);
- while (!cursor.isAfterLast()) {
- final String word1 = cursor.getString(word1Index);
- final String word2 = cursor.getString(word2Index);
- final int fc = cursor.getInt(fcIndex);
- if (DBG_SAVE_RESTORE) {
- Log.d(TAG, "--- Load user history: " + word1 + ", " + word2 + ","
- + mLocale + "," + this);
- }
- // Safeguard against adding really long words. Stack may overflow due
- // to recursive lookup
- if (null == word1) {
- super.addWord(word2, null /* shortcut */, fc);
- } else if (word1.length() < BinaryDictionary.MAX_WORD_LENGTH
- && word2.length() < BinaryDictionary.MAX_WORD_LENGTH) {
- super.setBigramAndGetFrequency(
- word1, word2, new ForgettingCurveParams(fc, now, last));
- }
- synchronized(mPendingWritesLock) {
+ synchronized(mBigramList) {
+ final long last = SettingsValues.getLastUserHistoryWriteTime(mPrefs, mLocale);
+ final boolean initializing = last == 0;
+ final long now = System.currentTimeMillis();
+ // Load the words that correspond to the current input locale
+ final Cursor cursor = query(MAIN_COLUMN_LOCALE + "=?", new String[] { mLocale });
+ if (null == cursor) return;
+ try {
+ if (cursor.moveToFirst()) {
+ final int word1Index = cursor.getColumnIndex(MAIN_COLUMN_WORD1);
+ final int word2Index = cursor.getColumnIndex(MAIN_COLUMN_WORD2);
+ final int fcIndex = cursor.getColumnIndex(COLUMN_FORGETTING_CURVE_VALUE);
+ while (!cursor.isAfterLast()) {
+ final String word1 = cursor.getString(word1Index);
+ final String word2 = cursor.getString(word2Index);
+ final int fc = cursor.getInt(fcIndex);
+ if (DBG_SAVE_RESTORE) {
+ Log.d(TAG, "--- Load user history: " + word1 + ", " + word2 + ","
+ + mLocale + "," + this);
+ }
+ // Safeguard against adding really long words. Stack may overflow due
+ // to recursive lookup
+ if (null == word1) {
+ super.addWord(word2, null /* shortcut */, fc);
+ } else if (word1.length() < BinaryDictionary.MAX_WORD_LENGTH
+ && word2.length() < BinaryDictionary.MAX_WORD_LENGTH) {
+ super.setBigramAndGetFrequency(
+ word1, word2, initializing ? new ForgettingCurveParams(true)
+ : new ForgettingCurveParams(fc, now, last));
+ }
mBigramList.addBigram(word1, word2, (byte)fc);
+ cursor.moveToNext();
}
- cursor.moveToNext();
+ }
+ } finally {
+ cursor.close();
+ if (PROFILE_SAVE_RESTORE) {
+ final long diff = System.currentTimeMillis() - now;
+ Log.w(TAG, "PROF: Load User HistoryDictionary: "
+ + mLocale + ", " + diff + "ms.");
}
}
- } finally {
- cursor.close();
}
}
@@ -317,14 +346,16 @@ public class UserHistoryDictionary extends ExpandableDictionary {
private final DatabaseHelper mDbHelper;
private final String mLocale;
private final UserHistoryDictionary mUserHistoryDictionary;
+ private final SharedPreferences mPrefs;
public UpdateDbTask(
DatabaseHelper openHelper, UserHistoryDictionaryBigramList pendingWrites,
- String locale, UserHistoryDictionary dict) {
+ String locale, UserHistoryDictionary dict, SharedPreferences prefs) {
mBigramList = pendingWrites;
mLocale = locale;
mDbHelper = openHelper;
mUserHistoryDictionary = dict;
+ mPrefs = prefs;
}
/** Prune any old data if the database is getting too big. */
@@ -363,37 +394,39 @@ public class UserHistoryDictionary extends ExpandableDictionary {
@Override
protected Void doInBackground(Void... v) {
- SQLiteDatabase db = null;
- try {
- db = mDbHelper.getWritableDatabase();
- } catch (android.database.sqlite.SQLiteCantOpenDatabaseException e) {
- // If we can't open the db, don't do anything. Exit through the next test
- // for non-nullity of the db variable.
- }
- if (null == db) {
- // Not much we can do. Just exit.
- sUpdatingDB = false;
- return null;
- }
- db.execSQL("PRAGMA foreign_keys = ON;");
- final boolean addLevel0Bigram = mBigramList.size() <= sMaxHistoryBigrams;
-
- // Write all the entries to the db
- for (String word1 : mBigramList.keySet()) {
- final HashMap<String, Byte> word1Bigrams = mBigramList.getBigrams(word1);
- for (String word2 : word1Bigrams.keySet()) {
- // Get new frequency. Do not insert shortcuts/bigrams which freq is "-1".
- final int freq; // -1, or 0~255
- if (word1 == null) {
- freq = FREQUENCY_FOR_TYPED;
- } else {
- final NextWord nw = mUserHistoryDictionary.getBigramWord(word1, word2);
- if (nw != null) {
- final ForgettingCurveParams fcp = nw.getFcParams();
+ synchronized(mBigramList) {
+ final long now = PROFILE_SAVE_RESTORE ? System.currentTimeMillis() : 0;
+ int profTotal = 0;
+ int profInsert = 0;
+ int profDelete = 0;
+ SQLiteDatabase db = null;
+ try {
+ db = mDbHelper.getWritableDatabase();
+ } catch (android.database.sqlite.SQLiteCantOpenDatabaseException e) {
+ // If we can't open the db, don't do anything. Exit through the next test
+ // for non-nullity of the db variable.
+ }
+ if (null == db) {
+ // Not much we can do. Just exit.
+ sUpdatingDB = false;
+ return null;
+ }
+ db.execSQL("PRAGMA foreign_keys = ON;");
+ final boolean addLevel0Bigram = mBigramList.size() <= sMaxHistoryBigrams;
+
+ // Write all the entries to the db
+ for (String word1 : mBigramList.keySet()) {
+ final HashMap<String, Byte> word1Bigrams = mBigramList.getBigrams(word1);
+ for (String word2 : word1Bigrams.keySet()) {
+ if (PROFILE_SAVE_RESTORE) {
+ ++profTotal;
+ }
+ // Get new frequency. Do not insert unigrams/bigrams which freq is "-1".
+ final int freq; // -1, or 0~255
+ if (word1 == null) { // unigram
+ freq = FREQUENCY_FOR_TYPED;
final byte prevFc = word1Bigrams.get(word2);
- final byte fc = (byte)fcp.getFc();
- final boolean isValid = fcp.isValid();
- if (prevFc > 0 && prevFc == fc) {
+ if (prevFc == FREQUENCY_FOR_TYPED) {
// No need to update since we found no changes for this entry.
// Just skip to the next entry.
if (DBG_SAVE_RESTORE) {
@@ -401,67 +434,100 @@ public class UserHistoryDictionary extends ExpandableDictionary {
+ "," + prevFc);
}
continue;
- } else if (UserHistoryForgettingCurveUtils.
- needsToSave(fc, isValid, addLevel0Bigram)) {
- freq = fc;
+ }
+ } else { // bigram
+ final NextWord nw = mUserHistoryDictionary.getBigramWord(word1, word2);
+ if (nw != null) {
+ final ForgettingCurveParams fcp = nw.getFcParams();
+ final byte prevFc = word1Bigrams.get(word2);
+ final byte fc = (byte)fcp.getFc();
+ final boolean isValid = fcp.isValid();
+ if (prevFc > 0 && prevFc == fc) {
+ // No need to update since we found no changes for this entry.
+ // Just skip to the next entry.
+ if (DBG_SAVE_RESTORE) {
+ Log.d(TAG, "Skip update user history: " + word1 + ","
+ + word2 + "," + prevFc);
+ }
+ continue;
+ } else if (UserHistoryForgettingCurveUtils.
+ needsToSave(fc, isValid, addLevel0Bigram)) {
+ freq = fc;
+ } else {
+ freq = -1;
+ }
} else {
freq = -1;
}
- } else {
- freq = -1;
- }
- }
- // TODO: this process of making a text search for each pair each time
- // is terribly inefficient. Optimize this.
- // Find pair id
- Cursor c = null;
- try {
- if (null != word1) {
- c = db.query(MAIN_TABLE_NAME, new String[] { MAIN_COLUMN_ID },
- MAIN_COLUMN_WORD1 + "=? AND " + MAIN_COLUMN_WORD2 + "=? AND "
- + MAIN_COLUMN_LOCALE + "=?",
- new String[] { word1, word2, mLocale }, null, null,
- null);
- } else {
- c = db.query(MAIN_TABLE_NAME, new String[] { MAIN_COLUMN_ID },
- MAIN_COLUMN_WORD1 + " IS NULL AND " + MAIN_COLUMN_WORD2
- + "=? AND " + MAIN_COLUMN_LOCALE + "=?",
- new String[] { word2, mLocale }, null, null, null);
}
+ // TODO: this process of making a text search for each pair each time
+ // is terribly inefficient. Optimize this.
+ // Find pair id
+ Cursor c = null;
+ try {
+ if (null != word1) {
+ c = db.query(MAIN_TABLE_NAME, new String[] { MAIN_COLUMN_ID },
+ MAIN_COLUMN_WORD1 + "=? AND " + MAIN_COLUMN_WORD2 + "=? AND "
+ + MAIN_COLUMN_LOCALE + "=?",
+ new String[] { word1, word2, mLocale }, null, null,
+ null);
+ } else {
+ c = db.query(MAIN_TABLE_NAME, new String[] { MAIN_COLUMN_ID },
+ MAIN_COLUMN_WORD1 + " IS NULL AND " + MAIN_COLUMN_WORD2
+ + "=? AND " + MAIN_COLUMN_LOCALE + "=?",
+ new String[] { word2, mLocale }, null, null, null);
+ }
- final int pairId;
- if (c.moveToFirst()) {
- // Delete existing pair
- pairId = c.getInt(c.getColumnIndex(MAIN_COLUMN_ID));
- db.delete(FREQ_TABLE_NAME, FREQ_COLUMN_PAIR_ID + "=?",
- new String[] { Integer.toString(pairId) });
- } else {
- // Create new pair
- Long pairIdLong = db.insert(MAIN_TABLE_NAME, null,
- getContentValues(word1, word2, mLocale));
- pairId = pairIdLong.intValue();
- }
- if (freq > 0) {
- if (DBG_SAVE_RESTORE) {
- Log.d(TAG, "--- Save user history: " + word1 + ", " + word2
- + mLocale + "," + this);
+ final int pairId;
+ if (c.moveToFirst()) {
+ if (PROFILE_SAVE_RESTORE) {
+ ++profDelete;
+ }
+ // Delete existing pair
+ pairId = c.getInt(c.getColumnIndex(MAIN_COLUMN_ID));
+ db.delete(FREQ_TABLE_NAME, FREQ_COLUMN_PAIR_ID + "=?",
+ new String[] { Integer.toString(pairId) });
+ } else {
+ // Create new pair
+ Long pairIdLong = db.insert(MAIN_TABLE_NAME, null,
+ getContentValues(word1, word2, mLocale));
+ pairId = pairIdLong.intValue();
+ }
+ if (freq > 0) {
+ if (PROFILE_SAVE_RESTORE) {
+ ++profInsert;
+ }
+ if (DBG_SAVE_RESTORE) {
+ Log.d(TAG, "--- Save user history: " + word1 + ", " + word2
+ + mLocale + "," + this);
+ }
+ // Insert new frequency
+ db.insert(FREQ_TABLE_NAME, null,
+ getFrequencyContentValues(pairId, freq));
+ // Update an existing bigram entry in mBigramList too in order to
+ // synchronize the SQL DB and mBigramList.
+ mBigramList.updateBigram(word1, word2, (byte)freq);
+ }
+ } finally {
+ if (c != null) {
+ c.close();
}
- // Insert new frequency
- db.insert(FREQ_TABLE_NAME, null,
- getFrequencyContentValues(pairId, freq));
- }
- } finally {
- if (c != null) {
- c.close();
}
}
}
- }
- checkPruneData(db);
- sUpdatingDB = false;
-
- return null;
+ checkPruneData(db);
+ // Save the timestamp after we finish writing the SQL DB.
+ SettingsValues.setLastUserHistoryWriteTime(mPrefs, mLocale);
+ sUpdatingDB = false;
+ if (PROFILE_SAVE_RESTORE) {
+ final long diff = System.currentTimeMillis() - now;
+ Log.w(TAG, "PROF: Write User HistoryDictionary: " + mLocale + ", "+ diff
+ + "ms. Total: " + profTotal + ". Insert: " + profInsert + ". Delete: "
+ + profDelete);
+ }
+ return null;
+ } // synchronized
}
private static ContentValues getContentValues(String word1, String word2, String locale) {
diff --git a/java/src/com/android/inputmethod/latin/UserHistoryDictionaryBigramList.java b/java/src/com/android/inputmethod/latin/UserHistoryDictionaryBigramList.java
index 96400dd48..28847745e 100644
--- a/java/src/com/android/inputmethod/latin/UserHistoryDictionaryBigramList.java
+++ b/java/src/com/android/inputmethod/latin/UserHistoryDictionaryBigramList.java
@@ -39,13 +39,19 @@ public class UserHistoryDictionaryBigramList {
mBigramMap.clear();
}
+ /**
+ * Called when the user typed a word.
+ */
public void addBigram(String word1, String word2) {
addBigram(word1, word2, FORGETTING_CURVE_INITIAL_VALUE);
}
+ /**
+ * Called when loaded from the SQL DB.
+ */
public void addBigram(String word1, String word2, byte fcValue) {
if (UserHistoryDictionary.DBG_SAVE_RESTORE) {
- Log.d(TAG, "--- add bigram: " + word1 + ", " + word2);
+ Log.d(TAG, "--- add bigram: " + word1 + ", " + word2 + ", " + fcValue);
}
final HashMap<String, Byte> map;
if (mBigramMap.containsKey(word1)) {
@@ -60,6 +66,25 @@ public class UserHistoryDictionaryBigramList {
}
}
+ /**
+ * Called when inserted to the SQL DB.
+ */
+ public void updateBigram(String word1, String word2, byte fcValue) {
+ if (UserHistoryDictionary.DBG_SAVE_RESTORE) {
+ Log.d(TAG, "--- update bigram: " + word1 + ", " + word2 + ", " + fcValue);
+ }
+ final HashMap<String, Byte> map;
+ if (mBigramMap.containsKey(word1)) {
+ map = mBigramMap.get(word1);
+ } else {
+ return;
+ }
+ if (!map.containsKey(word2)) {
+ return;
+ }
+ map.put(word2, fcValue);
+ }
+
public int size() {
return mSize;
}
diff --git a/java/src/com/android/inputmethod/latin/UserHistoryForgettingCurveUtils.java b/java/src/com/android/inputmethod/latin/UserHistoryForgettingCurveUtils.java
index 9cd8c6778..e5516dc62 100644
--- a/java/src/com/android/inputmethod/latin/UserHistoryForgettingCurveUtils.java
+++ b/java/src/com/android/inputmethod/latin/UserHistoryForgettingCurveUtils.java
@@ -30,6 +30,7 @@ public class UserHistoryForgettingCurveUtils {
private static final long ELAPSED_TIME_INTERVAL_MILLIS = ELAPSED_TIME_INTERVAL_HOURS
* DateUtils.HOUR_IN_MILLIS;
private static final int HALF_LIFE_HOURS = 48;
+ private static final int MAX_PUSH_ELAPSED = (FC_LEVEL_MAX + 1) * (ELAPSED_TIME_MAX + 1);
private UserHistoryForgettingCurveUtils() {
// This utility class is not publicly instantiable.
@@ -94,6 +95,11 @@ public class UserHistoryForgettingCurveUtils {
if (elapsedTimeCount <= 0) {
return;
}
+ if (elapsedTimeCount >= MAX_PUSH_ELAPSED) {
+ mLastTouchedTime = now;
+ mFc = 0;
+ return;
+ }
for (int i = 0; i < elapsedTimeCount; ++i) {
mLastTouchedTime += ELAPSED_TIME_INTERVAL_MILLIS;
mFc = pushElapsedTime(mFc);
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index 802322ccd..d34cad205 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -372,27 +372,32 @@ public class AndroidSpellCheckerService extends SpellCheckerService
mUserDictionaries = Collections.synchronizedMap(new TreeMap<String, Dictionary>());
final Map<String, Dictionary> oldWhitelistDictionaries = mWhitelistDictionaries;
mWhitelistDictionaries = Collections.synchronizedMap(new TreeMap<String, Dictionary>());
- for (DictionaryPool pool : oldPools.values()) {
- pool.close();
- }
- for (Dictionary dict : oldUserDictionaries.values()) {
- dict.close();
- }
- for (Dictionary dict : oldWhitelistDictionaries.values()) {
- dict.close();
- }
- synchronized (mUseContactsLock) {
- if (null != mContactsDictionary) {
- // The synchronously loaded contacts dictionary should have been in one
- // or several pools, but it is shielded against multiple closing and it's
- // safe to call it several times.
- final Dictionary dictToClose = mContactsDictionary;
- // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY is no
- // longer needed
- mContactsDictionary = null;
- dictToClose.close();
+ new Thread("spellchecker_close_dicts") {
+ @Override
+ public void run() {
+ for (DictionaryPool pool : oldPools.values()) {
+ pool.close();
+ }
+ for (Dictionary dict : oldUserDictionaries.values()) {
+ dict.close();
+ }
+ for (Dictionary dict : oldWhitelistDictionaries.values()) {
+ dict.close();
+ }
+ synchronized (mUseContactsLock) {
+ if (null != mContactsDictionary) {
+ // The synchronously loaded contacts dictionary should have been in one
+ // or several pools, but it is shielded against multiple closing and it's
+ // safe to call it several times.
+ final Dictionary dictToClose = mContactsDictionary;
+ // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY
+ // is no longer needed
+ mContactsDictionary = null;
+ dictToClose.close();
+ }
+ }
}
- }
+ }.start();
}
private DictionaryPool getDictionaryPool(final String locale) {