aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dictionaries/cs_wordlist.combined.gzbin948265 -> 948263 bytes
-rw-r--r--dictionaries/da_wordlist.combined.gzbin1017659 -> 1017659 bytes
-rw-r--r--dictionaries/de_wordlist.combined.gzbin1292098 -> 1292115 bytes
-rw-r--r--dictionaries/el_wordlist.combined.gzbin1134962 -> 1134961 bytes
-rw-r--r--dictionaries/en_GB_wordlist.combined.gzbin859955 -> 860515 bytes
-rw-r--r--dictionaries/en_US_wordlist.combined.gzbin877026 -> 877695 bytes
-rw-r--r--dictionaries/en_emoji.combined.gzbin4530 -> 4530 bytes
-rw-r--r--dictionaries/en_wordlist.combined.gzbin908382 -> 909067 bytes
-rw-r--r--dictionaries/es_wordlist.combined.gzbin951637 -> 951635 bytes
-rw-r--r--dictionaries/fi_wordlist.combined.gzbin1269545 -> 1269544 bytes
-rw-r--r--dictionaries/fr_emoji.combined.gzbin4511 -> 4511 bytes
-rw-r--r--dictionaries/fr_wordlist.combined.gzbin1106538 -> 1106539 bytes
-rw-r--r--dictionaries/hr_wordlist.combined.gzbin1014512 -> 1014511 bytes
-rw-r--r--dictionaries/it_wordlist.combined.gzbin933696 -> 933697 bytes
-rw-r--r--dictionaries/iw_wordlist.combined.gzbin465922 -> 465924 bytes
-rw-r--r--dictionaries/lt_wordlist.combined.gzbin980894 -> 980893 bytes
-rw-r--r--dictionaries/lv_wordlist.combined.gzbin970377 -> 970376 bytes
-rw-r--r--dictionaries/nb_wordlist.combined.gzbin964888 -> 964757 bytes
-rw-r--r--dictionaries/nl_wordlist.combined.gzbin1053244 -> 1053242 bytes
-rw-r--r--dictionaries/pl_wordlist.combined.gzbin1089295 -> 1089296 bytes
-rw-r--r--dictionaries/pt_BR_wordlist.combined.gzbin878505 -> 878505 bytes
-rw-r--r--dictionaries/pt_PT_wordlist.combined.gzbin1105961 -> 1105959 bytes
-rw-r--r--dictionaries/ru_wordlist.combined.gzbin1384804 -> 1384967 bytes
-rw-r--r--dictionaries/sl_wordlist.combined.gzbin315163 -> 315164 bytes
-rw-r--r--dictionaries/sr_wordlist.combined.gzbin1052033 -> 1052031 bytes
-rw-r--r--dictionaries/sv_wordlist.combined.gzbin1139282 -> 1139281 bytes
-rw-r--r--dictionaries/tr_wordlist.combined.gzbin925947 -> 925948 bytes
-rw-r--r--java/res/color/key_text_color_holo.xml48
-rw-r--r--java/res/raw/main_de.dictbin1605763 -> 1605763 bytes
-rw-r--r--java/res/raw/main_en.dictbin1069849 -> 1070464 bytes
-rw-r--r--java/res/raw/main_es.dictbin1138908 -> 1138908 bytes
-rw-r--r--java/res/raw/main_fr.dictbin1329188 -> 1329188 bytes
-rw-r--r--java/res/raw/main_it.dictbin1143338 -> 1143338 bytes
-rw-r--r--java/res/raw/main_pt_br.dictbin1092054 -> 1092054 bytes
-rw-r--r--java/res/raw/main_ru.dictbin2229294 -> 2229479 bytes
-rw-r--r--java/res/values-af/strings-config-important-notice.xml3
-rw-r--r--java/res/values-af/strings.xml5
-rw-r--r--java/res/values-am/strings-config-important-notice.xml3
-rw-r--r--java/res/values-am/strings.xml3
-rw-r--r--java/res/values-ar/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ar/strings.xml3
-rw-r--r--java/res/values-az-rAZ/strings-config-important-notice.xml3
-rw-r--r--java/res/values-az-rAZ/strings.xml3
-rw-r--r--java/res/values-bg/strings-config-important-notice.xml3
-rw-r--r--java/res/values-bg/strings.xml3
-rw-r--r--java/res/values-ca/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ca/strings.xml3
-rw-r--r--java/res/values-cs/strings-config-important-notice.xml3
-rw-r--r--java/res/values-cs/strings.xml5
-rw-r--r--java/res/values-da/strings-config-important-notice.xml3
-rw-r--r--java/res/values-da/strings.xml5
-rw-r--r--java/res/values-de/strings-config-important-notice.xml3
-rw-r--r--java/res/values-de/strings.xml5
-rw-r--r--java/res/values-el/strings-config-important-notice.xml3
-rw-r--r--java/res/values-el/strings.xml3
-rw-r--r--java/res/values-en-rGB/strings-config-important-notice.xml3
-rw-r--r--java/res/values-en-rGB/strings.xml3
-rw-r--r--java/res/values-en-rIN/strings-config-important-notice.xml3
-rw-r--r--java/res/values-en-rIN/strings.xml3
-rw-r--r--java/res/values-es-rUS/strings-config-important-notice.xml3
-rw-r--r--java/res/values-es-rUS/strings.xml5
-rw-r--r--java/res/values-es/strings-config-important-notice.xml3
-rw-r--r--java/res/values-es/strings.xml3
-rw-r--r--java/res/values-et-rEE/strings-config-important-notice.xml3
-rw-r--r--java/res/values-et-rEE/strings.xml3
-rw-r--r--java/res/values-fa/strings-config-important-notice.xml3
-rw-r--r--java/res/values-fa/strings.xml7
-rw-r--r--java/res/values-fi/strings-config-important-notice.xml3
-rw-r--r--java/res/values-fi/strings.xml3
-rw-r--r--java/res/values-fr-rCA/strings-config-important-notice.xml3
-rw-r--r--java/res/values-fr-rCA/strings.xml3
-rw-r--r--java/res/values-fr/strings-config-important-notice.xml3
-rw-r--r--java/res/values-fr/strings.xml3
-rw-r--r--java/res/values-hi/strings-config-important-notice.xml3
-rw-r--r--java/res/values-hi/strings.xml3
-rw-r--r--java/res/values-hr/strings-config-important-notice.xml3
-rw-r--r--java/res/values-hr/strings.xml5
-rw-r--r--java/res/values-hu/strings-config-important-notice.xml3
-rw-r--r--java/res/values-hu/strings.xml3
-rw-r--r--java/res/values-hy-rAM/strings-config-important-notice.xml3
-rw-r--r--java/res/values-hy-rAM/strings.xml3
-rw-r--r--java/res/values-in/strings-config-important-notice.xml3
-rw-r--r--java/res/values-in/strings.xml3
-rw-r--r--java/res/values-it/strings-config-important-notice.xml3
-rw-r--r--java/res/values-it/strings.xml3
-rw-r--r--java/res/values-iw/strings-config-important-notice.xml3
-rw-r--r--java/res/values-iw/strings.xml3
-rw-r--r--java/res/values-ja/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ja/strings.xml5
-rw-r--r--java/res/values-ka-rGE/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ka-rGE/strings.xml5
-rw-r--r--java/res/values-km-rKH/strings-config-important-notice.xml3
-rw-r--r--java/res/values-km-rKH/strings.xml3
-rw-r--r--java/res/values-ko/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ko/strings.xml5
-rw-r--r--java/res/values-lo-rLA/strings-config-important-notice.xml3
-rw-r--r--java/res/values-lo-rLA/strings.xml3
-rw-r--r--java/res/values-lt/strings-config-important-notice.xml3
-rw-r--r--java/res/values-lt/strings.xml3
-rw-r--r--java/res/values-lv/strings-config-important-notice.xml3
-rw-r--r--java/res/values-lv/strings.xml3
-rw-r--r--java/res/values-mn-rMN/strings-config-important-notice.xml3
-rw-r--r--java/res/values-mn-rMN/strings.xml3
-rw-r--r--java/res/values-ms-rMY/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ms-rMY/strings.xml3
-rw-r--r--java/res/values-nb/strings-config-important-notice.xml3
-rw-r--r--java/res/values-nb/strings.xml3
-rw-r--r--java/res/values-ne-rNP/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ne-rNP/strings.xml3
-rw-r--r--java/res/values-nl/strings-config-important-notice.xml3
-rw-r--r--java/res/values-nl/strings.xml3
-rw-r--r--java/res/values-pl/strings-config-important-notice.xml3
-rw-r--r--java/res/values-pl/strings.xml3
-rw-r--r--java/res/values-pt-rPT/strings-config-important-notice.xml3
-rw-r--r--java/res/values-pt-rPT/strings.xml3
-rw-r--r--java/res/values-pt/strings-config-important-notice.xml3
-rw-r--r--java/res/values-pt/strings.xml3
-rw-r--r--java/res/values-ro/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ro/strings.xml3
-rw-r--r--java/res/values-ru/strings-config-important-notice.xml3
-rw-r--r--java/res/values-ru/strings.xml7
-rw-r--r--java/res/values-sk/strings-config-important-notice.xml3
-rw-r--r--java/res/values-sk/strings.xml3
-rw-r--r--java/res/values-sl/strings-config-important-notice.xml3
-rw-r--r--java/res/values-sl/strings.xml5
-rw-r--r--java/res/values-sr/strings-config-important-notice.xml3
-rw-r--r--java/res/values-sr/strings.xml3
-rw-r--r--java/res/values-sv/strings-config-important-notice.xml3
-rw-r--r--java/res/values-sv/strings.xml3
-rw-r--r--java/res/values-sw/strings-config-important-notice.xml3
-rw-r--r--java/res/values-sw/strings.xml9
-rw-r--r--java/res/values-th/strings-config-important-notice.xml3
-rw-r--r--java/res/values-th/strings.xml3
-rw-r--r--java/res/values-tl/strings-config-important-notice.xml3
-rw-r--r--java/res/values-tl/strings.xml3
-rw-r--r--java/res/values-tr/strings-config-important-notice.xml3
-rw-r--r--java/res/values-tr/strings.xml7
-rw-r--r--java/res/values-uk/strings-config-important-notice.xml3
-rw-r--r--java/res/values-uk/strings.xml3
-rw-r--r--java/res/values-vi/strings-config-important-notice.xml3
-rw-r--r--java/res/values-vi/strings.xml5
-rw-r--r--java/res/values-zh-rCN/strings-config-important-notice.xml3
-rw-r--r--java/res/values-zh-rCN/strings.xml9
-rw-r--r--java/res/values-zh-rHK/strings-config-important-notice.xml3
-rw-r--r--java/res/values-zh-rHK/strings.xml11
-rw-r--r--java/res/values-zh-rTW/strings-config-important-notice.xml3
-rw-r--r--java/res/values-zh-rTW/strings.xml3
-rw-r--r--java/res/values-zu/strings-config-important-notice.xml3
-rw-r--r--java/res/values-zu/strings.xml3
-rw-r--r--java/res/values/colors.xml4
-rw-r--r--java/res/values/strings-config-important-notice.xml13
-rw-r--r--java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java28
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java14
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/EmojiLayoutParams.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java9
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java5
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java5
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java23
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java24
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java25
-rw-r--r--java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java78
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java70
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputConnection.java28
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java49
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java28
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java26
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java5
-rw-r--r--java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java28
-rw-r--r--native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp13
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp15
-rw-r--r--tests/src/com/android/inputmethod/latin/InputLogicTests.java32
-rw-r--r--tests/src/com/android/inputmethod/latin/InputTestsBase.java9
-rw-r--r--tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java78
-rw-r--r--tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl (renamed from tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl)5
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java1
178 files changed, 594 insertions, 496 deletions
diff --git a/dictionaries/cs_wordlist.combined.gz b/dictionaries/cs_wordlist.combined.gz
index 7829d6573..94ba863a2 100644
--- a/dictionaries/cs_wordlist.combined.gz
+++ b/dictionaries/cs_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/da_wordlist.combined.gz b/dictionaries/da_wordlist.combined.gz
index e7140195b..b4baf627f 100644
--- a/dictionaries/da_wordlist.combined.gz
+++ b/dictionaries/da_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/de_wordlist.combined.gz b/dictionaries/de_wordlist.combined.gz
index 6a4bd445c..400718df1 100644
--- a/dictionaries/de_wordlist.combined.gz
+++ b/dictionaries/de_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/el_wordlist.combined.gz b/dictionaries/el_wordlist.combined.gz
index 74effa34b..599734cf8 100644
--- a/dictionaries/el_wordlist.combined.gz
+++ b/dictionaries/el_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_GB_wordlist.combined.gz b/dictionaries/en_GB_wordlist.combined.gz
index 50647b847..22685d1ce 100644
--- a/dictionaries/en_GB_wordlist.combined.gz
+++ b/dictionaries/en_GB_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_US_wordlist.combined.gz b/dictionaries/en_US_wordlist.combined.gz
index 7dd4b4edd..92a3761df 100644
--- a/dictionaries/en_US_wordlist.combined.gz
+++ b/dictionaries/en_US_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_emoji.combined.gz b/dictionaries/en_emoji.combined.gz
index 0fc009df7..4d9cf1b59 100644
--- a/dictionaries/en_emoji.combined.gz
+++ b/dictionaries/en_emoji.combined.gz
Binary files differ
diff --git a/dictionaries/en_wordlist.combined.gz b/dictionaries/en_wordlist.combined.gz
index 874a5de20..f8b71c821 100644
--- a/dictionaries/en_wordlist.combined.gz
+++ b/dictionaries/en_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/es_wordlist.combined.gz b/dictionaries/es_wordlist.combined.gz
index 0a48b6d11..56617db99 100644
--- a/dictionaries/es_wordlist.combined.gz
+++ b/dictionaries/es_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/fi_wordlist.combined.gz b/dictionaries/fi_wordlist.combined.gz
index eefbfe51a..b7332ad3e 100644
--- a/dictionaries/fi_wordlist.combined.gz
+++ b/dictionaries/fi_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/fr_emoji.combined.gz b/dictionaries/fr_emoji.combined.gz
index f2929770d..5c9c7a096 100644
--- a/dictionaries/fr_emoji.combined.gz
+++ b/dictionaries/fr_emoji.combined.gz
Binary files differ
diff --git a/dictionaries/fr_wordlist.combined.gz b/dictionaries/fr_wordlist.combined.gz
index b568838e4..697f36799 100644
--- a/dictionaries/fr_wordlist.combined.gz
+++ b/dictionaries/fr_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/hr_wordlist.combined.gz b/dictionaries/hr_wordlist.combined.gz
index 864f67651..9a2086f1f 100644
--- a/dictionaries/hr_wordlist.combined.gz
+++ b/dictionaries/hr_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/it_wordlist.combined.gz b/dictionaries/it_wordlist.combined.gz
index ac977e303..5a5cbdc7a 100644
--- a/dictionaries/it_wordlist.combined.gz
+++ b/dictionaries/it_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/iw_wordlist.combined.gz b/dictionaries/iw_wordlist.combined.gz
index 36b047894..13eab9f17 100644
--- a/dictionaries/iw_wordlist.combined.gz
+++ b/dictionaries/iw_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/lt_wordlist.combined.gz b/dictionaries/lt_wordlist.combined.gz
index 029722d95..961266bb8 100644
--- a/dictionaries/lt_wordlist.combined.gz
+++ b/dictionaries/lt_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/lv_wordlist.combined.gz b/dictionaries/lv_wordlist.combined.gz
index 41e1c28bd..ae906a9db 100644
--- a/dictionaries/lv_wordlist.combined.gz
+++ b/dictionaries/lv_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/nb_wordlist.combined.gz b/dictionaries/nb_wordlist.combined.gz
index b699912b7..1c0f2cfb9 100644
--- a/dictionaries/nb_wordlist.combined.gz
+++ b/dictionaries/nb_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/nl_wordlist.combined.gz b/dictionaries/nl_wordlist.combined.gz
index 89c238830..37ba8ab42 100644
--- a/dictionaries/nl_wordlist.combined.gz
+++ b/dictionaries/nl_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/pl_wordlist.combined.gz b/dictionaries/pl_wordlist.combined.gz
index 2b53f69cb..ba71a5581 100644
--- a/dictionaries/pl_wordlist.combined.gz
+++ b/dictionaries/pl_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/pt_BR_wordlist.combined.gz b/dictionaries/pt_BR_wordlist.combined.gz
index 2d22447e4..02df1c1ee 100644
--- a/dictionaries/pt_BR_wordlist.combined.gz
+++ b/dictionaries/pt_BR_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/pt_PT_wordlist.combined.gz b/dictionaries/pt_PT_wordlist.combined.gz
index 1504165d0..bcd50ab03 100644
--- a/dictionaries/pt_PT_wordlist.combined.gz
+++ b/dictionaries/pt_PT_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/ru_wordlist.combined.gz b/dictionaries/ru_wordlist.combined.gz
index 572314db6..acde9bc73 100644
--- a/dictionaries/ru_wordlist.combined.gz
+++ b/dictionaries/ru_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/sl_wordlist.combined.gz b/dictionaries/sl_wordlist.combined.gz
index 55e1bb1c8..a7240fe5b 100644
--- a/dictionaries/sl_wordlist.combined.gz
+++ b/dictionaries/sl_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/sr_wordlist.combined.gz b/dictionaries/sr_wordlist.combined.gz
index 8488a08b4..30ce99670 100644
--- a/dictionaries/sr_wordlist.combined.gz
+++ b/dictionaries/sr_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/sv_wordlist.combined.gz b/dictionaries/sv_wordlist.combined.gz
index 63425206e..b6ebab320 100644
--- a/dictionaries/sv_wordlist.combined.gz
+++ b/dictionaries/sv_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/tr_wordlist.combined.gz b/dictionaries/tr_wordlist.combined.gz
index 0251778c7..306cea184 100644
--- a/dictionaries/tr_wordlist.combined.gz
+++ b/dictionaries/tr_wordlist.combined.gz
Binary files differ
diff --git a/java/res/color/key_text_color_holo.xml b/java/res/color/key_text_color_holo.xml
deleted file mode 100644
index d034a945f..000000000
--- a/java/res/color/key_text_color_holo.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Functional keys. -->
- <item android:state_single="true" android:state_pressed="true"
- android:color="@color/key_text_color_functional_holo" />
- <item android:state_single="true"
- android:color="@color/key_text_color_functional_holo" />
-
- <!-- Action keys. -->
- <item android:state_active="true" android:state_pressed="true"
- android:color="@color/key_text_color_normal_holo" />
- <item android:state_active="true"
- android:color="@color/key_text_color_normal_holo" />
-
- <!-- Toggle keys. Use checkable/checked state. -->
- <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
- android:color="@color/key_text_color_normal_holo" />
- <item android:state_checkable="true" android:state_pressed="true"
- android:color="@color/key_text_color_normal_holo" />
- <item android:state_checkable="true" android:state_checked="true"
- android:color="@color/key_text_color_normal_holo" />
- <item android:state_checkable="true"
- android:color="@color/key_text_color_normal_holo" />
-
- <!-- Empty background keys. -->
- <item android:state_empty="true"
- android:color="@color/key_text_color_normal_holo" />
-
- <!-- Normal keys. -->
- <item android:state_pressed="true"
- android:color="@color/key_text_color_normal_holo" />
- <item android:color="@color/key_text_color_normal_holo" />
-</selector>
diff --git a/java/res/raw/main_de.dict b/java/res/raw/main_de.dict
index c65698d7b..3cbf7105d 100644
--- a/java/res/raw/main_de.dict
+++ b/java/res/raw/main_de.dict
Binary files differ
diff --git a/java/res/raw/main_en.dict b/java/res/raw/main_en.dict
index 09b69927f..49adc9a19 100644
--- a/java/res/raw/main_en.dict
+++ b/java/res/raw/main_en.dict
Binary files differ
diff --git a/java/res/raw/main_es.dict b/java/res/raw/main_es.dict
index 261ab8c87..fe24cd624 100644
--- a/java/res/raw/main_es.dict
+++ b/java/res/raw/main_es.dict
Binary files differ
diff --git a/java/res/raw/main_fr.dict b/java/res/raw/main_fr.dict
index c240d9665..94d1b9670 100644
--- a/java/res/raw/main_fr.dict
+++ b/java/res/raw/main_fr.dict
Binary files differ
diff --git a/java/res/raw/main_it.dict b/java/res/raw/main_it.dict
index 98135ce8e..ff11b9798 100644
--- a/java/res/raw/main_it.dict
+++ b/java/res/raw/main_it.dict
Binary files differ
diff --git a/java/res/raw/main_pt_br.dict b/java/res/raw/main_pt_br.dict
index 21bbe7c67..9fa50442a 100644
--- a/java/res/raw/main_pt_br.dict
+++ b/java/res/raw/main_pt_br.dict
Binary files differ
diff --git a/java/res/raw/main_ru.dict b/java/res/raw/main_ru.dict
index 7dec62425..0f08f1735 100644
--- a/java/res/raw/main_ru.dict
+++ b/java/res/raw/main_ru.dict
Binary files differ
diff --git a/java/res/values-af/strings-config-important-notice.xml b/java/res/values-af/strings-config-important-notice.xml
index f0857c9f3..d0f328fd3 100644
--- a/java/res/values-af/strings-config-important-notice.xml
+++ b/java/res/values-af/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Leer uit jou kommunikasie en getikte data om voorstelle te verbeter"</string>
</resources>
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index c1c13fb53..df43b13c7 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -211,12 +211,11 @@
<string name="message_loading" msgid="5638680861387748936">"Laai tans…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Hoofwoordeboek"</string>
<string name="cancel" msgid="6830980399865683324">"Kanselleer"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Instellings"</string>
<string name="install_dict" msgid="180852772562189365">"Installeer"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Kanselleer"</string>
<string name="delete_dict" msgid="756853268088330054">"Vee uit"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Die gekose taal op jou mobiele toestel het \'n beskikbare woordeboek.&lt;br/&gt; Ons beveel aan dat die <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-woordeboek &lt;b&gt;afgelaai&lt;/b&gt; word om jou tikervaring te verbeter.&lt;br/&gt; &lt;br/&gt; Dit kan \'n minuut of twee duur om oor 3G af te laai. Heffings kan dalk geld as jy nie \'n &lt;b&gt;onbeperkte dataplan&lt;/b&gt;.&lt;br/&gt; het nie. As jy onseker is oor watter dataplan jy het, beveel ons aan dat jy \'n Wi-Fi-verbinding soek om outomaties te begin aflaai.&lt;br/&gt; &lt;br/&gt; Wenk: Jy kan woordeboeke aflaai en verwyder deur te gaan na &lt;b&gt;Taal en invoer&lt;/b&gt; in die &lt;b&gt;Instellings&lt;/b&gt;-kieslys van jou mobiele toestel."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Die gekose taal op jou mobiele toestel het \'n beskikbare woordeboek.&lt;br/&gt; Ons beveel aan dat die <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-woordeboek &lt;b&gt;afgelaai&lt;/b&gt; word om jou tikervaring te verbeter.&lt;br/&gt; &lt;br/&gt; Dit kan \'n minuut of twee duur om oor 3G af te laai. Heffings kan dalk geld as jy nie \'n &lt;b&gt;onbeperkte dataplan&lt;/b&gt; het nie.&lt;br/&gt; As jy onseker is oor watter dataplan jy het, beveel ons aan dat jy \'n Wi-Fi-verbinding soek om outomaties te begin aflaai.&lt;br/&gt; &lt;br/&gt; Wenk: Jy kan woordeboeke aflaai en verwyder deur te gaan na &lt;b&gt;Taal en invoer&lt;/b&gt; in die &lt;b&gt;Instellings&lt;/b&gt;-kieslys van jou mobiele toestel."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Laai nou af (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Laai oor Wi-Fi af"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"\'n Woordeboek is beskikbaar vir <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
diff --git a/java/res/values-am/strings-config-important-notice.xml b/java/res/values-am/strings-config-important-notice.xml
index f0857c9f3..5bef0436c 100644
--- a/java/res/values-am/strings-config-important-notice.xml
+++ b/java/res/values-am/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"የአስተያየት ጥቆማዎችን ለማሻሻል ከእርስዎ ግንኙነቶች እና የተተየበ ውሂብ ይማሩ"</string>
</resources>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index ce8b3ca6d..3921fd135 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"በመጫን ላይ…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"ዋና መዝገበ-ቃላት"</string>
<string name="cancel" msgid="6830980399865683324">"ሰርዝ"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"ቅንብሮች"</string>
<string name="install_dict" msgid="180852772562189365">"ጫን"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"ሰርዝ"</string>
<string name="delete_dict" msgid="756853268088330054">"ሰርዝ"</string>
diff --git a/java/res/values-ar/strings-config-important-notice.xml b/java/res/values-ar/strings-config-important-notice.xml
index f0857c9f3..36600af24 100644
--- a/java/res/values-ar/strings-config-important-notice.xml
+++ b/java/res/values-ar/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"التعلم من اتصالاتك والبيانات التي تكتبها لتحسين الاقتراحات"</string>
</resources>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 645db8851..a0c26cf9c 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"جارٍ التحميل…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"القاموس الرئيسي"</string>
<string name="cancel" msgid="6830980399865683324">"إلغاء"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"إعدادات"</string>
<string name="install_dict" msgid="180852772562189365">"تثبيت"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"إلغاء"</string>
<string name="delete_dict" msgid="756853268088330054">"حذف"</string>
diff --git a/java/res/values-az-rAZ/strings-config-important-notice.xml b/java/res/values-az-rAZ/strings-config-important-notice.xml
index f0857c9f3..1815443c2 100644
--- a/java/res/values-az-rAZ/strings-config-important-notice.xml
+++ b/java/res/values-az-rAZ/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Əlaqələrdən və təkliflərin inkişafı üçün yazdığınız datadan öyrənin "</string>
</resources>
diff --git a/java/res/values-az-rAZ/strings.xml b/java/res/values-az-rAZ/strings.xml
index 638b8e91b..2fe102a47 100644
--- a/java/res/values-az-rAZ/strings.xml
+++ b/java/res/values-az-rAZ/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Yüklənir..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Əsas lüğət"</string>
<string name="cancel" msgid="6830980399865683324">"Ləğv et"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Ayarlar"</string>
<string name="install_dict" msgid="180852772562189365">"Quraşdırın"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Ləğv et"</string>
<string name="delete_dict" msgid="756853268088330054">"Sil"</string>
diff --git a/java/res/values-bg/strings-config-important-notice.xml b/java/res/values-bg/strings-config-important-notice.xml
index f0857c9f3..b6b766637 100644
--- a/java/res/values-bg/strings-config-important-notice.xml
+++ b/java/res/values-bg/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Ползване на съобщ. ви и въведени от вас данни за подобр. на предлож."</string>
</resources>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index 395513d1d..7e86abf5b 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Зарежда се…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Основен речник"</string>
<string name="cancel" msgid="6830980399865683324">"Отказ"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Настройки"</string>
<string name="install_dict" msgid="180852772562189365">"Инсталиране"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Отказ"</string>
<string name="delete_dict" msgid="756853268088330054">"Изтриване"</string>
diff --git a/java/res/values-ca/strings-config-important-notice.xml b/java/res/values-ca/strings-config-important-notice.xml
index f0857c9f3..eadb5695e 100644
--- a/java/res/values-ca/strings-config-important-notice.xml
+++ b/java/res/values-ca/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Considera comunicacions i dades introduïdes per millorar sugger."</string>
</resources>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index 072915385..7137aa59c 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"S\'està carregant..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Diccionari principal"</string>
<string name="cancel" msgid="6830980399865683324">"Cancel·la"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Configuració"</string>
<string name="install_dict" msgid="180852772562189365">"Instal·la"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancel·la"</string>
<string name="delete_dict" msgid="756853268088330054">"Suprimeix"</string>
diff --git a/java/res/values-cs/strings-config-important-notice.xml b/java/res/values-cs/strings-config-important-notice.xml
index f0857c9f3..bb2f03abc 100644
--- a/java/res/values-cs/strings-config-important-notice.xml
+++ b/java/res/values-cs/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Zlepšovat návrhy na základě vaší komunikace a zadaných dat"</string>
</resources>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 25313f3a5..e517043bb 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -211,12 +211,11 @@
<string name="message_loading" msgid="5638680861387748936">"Načítání…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Hlavní slovník"</string>
<string name="cancel" msgid="6830980399865683324">"Zrušit"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Nastavení"</string>
<string name="install_dict" msgid="180852772562189365">"Instalovat"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Zrušit"</string>
<string name="delete_dict" msgid="756853268088330054">"Smazat"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Pro vybraný jazyk mobilního zařízení je k dispozici slovník.&lt;br/&gt; Doporučujeme slovník pro jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> &lt;b&gt;stáhnout&lt;/b&gt;. Usnadníte si tím zadávání textu. &lt;br/&gt; &lt;br/&gt; V síti 3G bude stahování trvat minutu až dvě. Pokud nemáte &lt;b&gt;neomezený datový tarif&lt;/b&gt;, mohou vám být účtovány poplatky.&lt;br/&gt; Jestliže si nejste jisti, jaký datový tarif máte, doporučujeme vám najít připojení Wi-Fi. Stahování se pak zahájí automaticky.&lt;br/&gt; &lt;br/&gt; Tip: Slovníky můžete stahovat a odstraňovat v nabídce mobilního zařízení &lt;b&gt;Jazyk a zadávání&lt;/b&gt; v &lt;b&gt;Nastavení&lt;/b&gt;."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Pro jazyk vybraný na vašem mobilním zařízení je k dispozici slovník.&lt;br/&gt; Doporučujeme slovník pro jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> &lt;b&gt;stáhnout&lt;/b&gt;. Usnadníte si tím zadávání textu. &lt;br/&gt; &lt;br/&gt; V síti 3G bude stahování trvat minutu až dvě. Pokud nemáte &lt;b&gt;neomezený datový tarif&lt;/b&gt;, mohou vám být účtovány poplatky.&lt;br/&gt; Jestliže si nejste jisti, jaký datový tarif máte, doporučujeme vám najít připojení Wi-Fi. Stahování se pak zahájí automaticky.&lt;br/&gt; &lt;br/&gt; Tip: Slovníky můžete stahovat a odstraňovat v nabídce mobilního zařízení &lt;b&gt;Jazyk a zadávání&lt;/b&gt; v &lt;b&gt;Nastavení&lt;/b&gt;."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Stáhnout ihned (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Stáhnout pouze přes Wi-Fi"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"Je k dispozici slovník pro jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
diff --git a/java/res/values-da/strings-config-important-notice.xml b/java/res/values-da/strings-config-important-notice.xml
index f0857c9f3..57d32cd74 100644
--- a/java/res/values-da/strings-config-important-notice.xml
+++ b/java/res/values-da/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Giv bedre forslag ud fra tidligere kommunikation og data"</string>
</resources>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index e9891c871..babea965c 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -132,7 +132,7 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannien)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
<string name="subtype_es_US" msgid="5583145191430180200">"Spansk (USA)"</string>
- <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelsk (Storbritannien) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelsk (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engelsk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spansk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_nepali_traditional" msgid="1994571919751163596">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditionelt)"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Indlæser…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Hovedordbog"</string>
<string name="cancel" msgid="6830980399865683324">"Annuller"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Indstillinger"</string>
<string name="install_dict" msgid="180852772562189365">"Installer"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Annuller"</string>
<string name="delete_dict" msgid="756853268088330054">"Slet"</string>
diff --git a/java/res/values-de/strings-config-important-notice.xml b/java/res/values-de/strings-config-important-notice.xml
index f0857c9f3..5a8420229 100644
--- a/java/res/values-de/strings-config-important-notice.xml
+++ b/java/res/values-de/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Vorschläge anhand bisheriger Nachrichten und Eingaben verbessern"</string>
</resources>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 750a31211..a42f85dc3 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -79,7 +79,7 @@
<string name="spoken_use_headphones" msgid="896961781287283493">"Schließen Sie ein Headset an, um das Passwort gesprochen zu hören."</string>
<string name="spoken_current_text_is" msgid="2485723011272583845">"Aktueller Text lautet %s"</string>
<string name="spoken_no_text_entered" msgid="7479685225597344496">"Kein Text eingegeben"</string>
- <string name="spoken_auto_correct" msgid="5150455215290003221">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> wird \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" in \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\" geändert."</string>
+ <string name="spoken_auto_correct" msgid="5150455215290003221">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> wird \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" zu \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\" geändert."</string>
<string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> erfolgt eine Autokorrektur."</string>
<string name="spoken_description_unknown" msgid="3197434010402179157">"Tastencode %d"</string>
<string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Wird geladen…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Allgemeines Wörterbuch"</string>
<string name="cancel" msgid="6830980399865683324">"Abbrechen"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Einstellungen"</string>
<string name="install_dict" msgid="180852772562189365">"Installieren"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Abbrechen"</string>
<string name="delete_dict" msgid="756853268088330054">"Löschen"</string>
diff --git a/java/res/values-el/strings-config-important-notice.xml b/java/res/values-el/strings-config-important-notice.xml
index f0857c9f3..4ee3532c8 100644
--- a/java/res/values-el/strings-config-important-notice.xml
+++ b/java/res/values-el/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Χρήση επικοινωνιών/δεδομένων πληκτρολόγησης για βελτίωση προτάσεων"</string>
</resources>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 6bbbb38d0..5e888e0fd 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Φόρτωση…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Κύριο λεξικό"</string>
<string name="cancel" msgid="6830980399865683324">"Ακύρωση"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Ρυθμίσεις"</string>
<string name="install_dict" msgid="180852772562189365">"Εγκατάσταση"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Ακύρωση"</string>
<string name="delete_dict" msgid="756853268088330054">"Διαγραφή"</string>
diff --git a/java/res/values-en-rGB/strings-config-important-notice.xml b/java/res/values-en-rGB/strings-config-important-notice.xml
index f0857c9f3..a7ae30062 100644
--- a/java/res/values-en-rGB/strings-config-important-notice.xml
+++ b/java/res/values-en-rGB/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Learn from your communications and typed data to improve suggestions"</string>
</resources>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index c5c3d8cdc..a84b389bf 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Loading…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Main dictionary"</string>
<string name="cancel" msgid="6830980399865683324">"Cancel"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Settings"</string>
<string name="install_dict" msgid="180852772562189365">"Install"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancel"</string>
<string name="delete_dict" msgid="756853268088330054">"Delete"</string>
diff --git a/java/res/values-en-rIN/strings-config-important-notice.xml b/java/res/values-en-rIN/strings-config-important-notice.xml
index f0857c9f3..a7ae30062 100644
--- a/java/res/values-en-rIN/strings-config-important-notice.xml
+++ b/java/res/values-en-rIN/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Learn from your communications and typed data to improve suggestions"</string>
</resources>
diff --git a/java/res/values-en-rIN/strings.xml b/java/res/values-en-rIN/strings.xml
index c5c3d8cdc..a84b389bf 100644
--- a/java/res/values-en-rIN/strings.xml
+++ b/java/res/values-en-rIN/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Loading…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Main dictionary"</string>
<string name="cancel" msgid="6830980399865683324">"Cancel"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Settings"</string>
<string name="install_dict" msgid="180852772562189365">"Install"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancel"</string>
<string name="delete_dict" msgid="756853268088330054">"Delete"</string>
diff --git a/java/res/values-es-rUS/strings-config-important-notice.xml b/java/res/values-es-rUS/strings-config-important-notice.xml
index f0857c9f3..b39cfbabf 100644
--- a/java/res/values-es-rUS/strings-config-important-notice.xml
+++ b/java/res/values-es-rUS/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprende de mensajes y datos ingresados para mejorar las sugerencias."</string>
</resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index db93ae248..c900c6aee 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -108,7 +108,7 @@
<string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo Teléfono"</string>
<string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo Símbolos del teléfono"</string>
<string name="announce_keyboard_hidden" msgid="8718927835531429807">"Teclado oculto"</string>
- <string name="announce_keyboard_mode" msgid="7486740369324538848">"Mostrando teclado para <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+ <string name="announce_keyboard_mode" msgid="7486740369324538848">"Mostrando teclado de <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
<string name="keyboard_mode_date" msgid="3137520166817128102">"fecha"</string>
<string name="keyboard_mode_date_time" msgid="339593358488851072">"fecha y hora"</string>
<string name="keyboard_mode_email" msgid="6216248078128294262">"correo"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Cargando…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Diccionario principal"</string>
<string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Configuración"</string>
<string name="install_dict" msgid="180852772562189365">"Instalar"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
<string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
diff --git a/java/res/values-es/strings-config-important-notice.xml b/java/res/values-es/strings-config-important-notice.xml
index f0857c9f3..4d82e8b37 100644
--- a/java/res/values-es/strings-config-important-notice.xml
+++ b/java/res/values-es/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprende de mensajes y datos escritos para mejorar sugerencias"</string>
</resources>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index 6f74185a2..ad7547f70 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Cargando…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Diccionario principal"</string>
<string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Ajustes"</string>
<string name="install_dict" msgid="180852772562189365">"Instalar"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
<string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
diff --git a/java/res/values-et-rEE/strings-config-important-notice.xml b/java/res/values-et-rEE/strings-config-important-notice.xml
index f0857c9f3..c08d04576 100644
--- a/java/res/values-et-rEE/strings-config-important-notice.xml
+++ b/java/res/values-et-rEE/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Kommunikats. ja sisestatud andmetest õppimine soovit. täiustamiseks"</string>
</resources>
diff --git a/java/res/values-et-rEE/strings.xml b/java/res/values-et-rEE/strings.xml
index b77ac36b5..26ab93e95 100644
--- a/java/res/values-et-rEE/strings.xml
+++ b/java/res/values-et-rEE/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Laadimine …"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Peamine sõnastik"</string>
<string name="cancel" msgid="6830980399865683324">"Tühista"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Seaded"</string>
<string name="install_dict" msgid="180852772562189365">"Installi"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Tühista"</string>
<string name="delete_dict" msgid="756853268088330054">"Kustuta"</string>
diff --git a/java/res/values-fa/strings-config-important-notice.xml b/java/res/values-fa/strings-config-important-notice.xml
index f0857c9f3..b4e0335d7 100644
--- a/java/res/values-fa/strings-config-important-notice.xml
+++ b/java/res/values-fa/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"یادگیری از ارتباطات و اطلاعات تایپ شده شما برای بهبود پیشنهادات"</string>
</resources>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index 771093082..1ea69cbd3 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -136,7 +136,7 @@
<string name="subtype_en_GB" msgid="88170601942311355">"انگلیسی (بریتانیا)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"انگلیسی (امریکا)"</string>
<string name="subtype_es_US" msgid="5583145191430180200">"اسپانیایی (آمریکا)"</string>
- <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"انگلیسی (انگلستان) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"انگلیسی (بریتانیا) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"انگلیسی (آمریکا) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"اسپانیایی (آمریکا) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_nepali_traditional" msgid="1994571919751163596">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (سنتی)"</string>
@@ -215,8 +215,7 @@
<string name="message_loading" msgid="5638680861387748936">"در حال بارگیری…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"فرهنگ‌ لغت اصلی"</string>
<string name="cancel" msgid="6830980399865683324">"لغو"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"تنظیمات"</string>
<string name="install_dict" msgid="180852772562189365">"نصب"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"لغو"</string>
<string name="delete_dict" msgid="756853268088330054">"حذف"</string>
@@ -225,7 +224,7 @@
<string name="do_not_download_over_metered" msgid="2176209579313941583">"‏دانلود ازطریق Wi-Fi"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"یک فرهنگ لغت برای <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> در دسترس است"</string>
<string name="dict_available_notification_description" msgid="1075194169443163487">"برای مرور و دانلود فشار دهید"</string>
- <string name="toast_downloading_suggestions" msgid="6128155879830851739">"در حال دانلود کردن: پیشنهادات برای <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> به زودی آماده خواهند شد."</string>
+ <string name="toast_downloading_suggestions" msgid="6128155879830851739">"دانلود کردن پیشنهادات برای <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> به زودی شروع می‌شود."</string>
<string name="version_text" msgid="2715354215568469385">"نسخه <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
<string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"افرودن"</string>
<string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"افزودن به فرهنگ‌ لغت"</string>
diff --git a/java/res/values-fi/strings-config-important-notice.xml b/java/res/values-fi/strings-config-important-notice.xml
index f0857c9f3..2646501d5 100644
--- a/java/res/values-fi/strings-config-important-notice.xml
+++ b/java/res/values-fi/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Ehdotusten parannus viestinnän ja kirjoitettujen tietojen avulla"</string>
</resources>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index 60e8d790c..bfa5d01a9 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Ladataan…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Pääsanakirja"</string>
<string name="cancel" msgid="6830980399865683324">"Peruuta"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Asetukset"</string>
<string name="install_dict" msgid="180852772562189365">"Asenna"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Peruuta"</string>
<string name="delete_dict" msgid="756853268088330054">"Poista"</string>
diff --git a/java/res/values-fr-rCA/strings-config-important-notice.xml b/java/res/values-fr-rCA/strings-config-important-notice.xml
index f0857c9f3..05b452c51 100644
--- a/java/res/values-fr-rCA/strings-config-important-notice.xml
+++ b/java/res/values-fr-rCA/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Apprendre de vos communic. et données entrées pour amél. suggestions"</string>
</resources>
diff --git a/java/res/values-fr-rCA/strings.xml b/java/res/values-fr-rCA/strings.xml
index 3ccabaabd..dcb1119c2 100644
--- a/java/res/values-fr-rCA/strings.xml
+++ b/java/res/values-fr-rCA/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Chargement en cours…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Dictionnaire principal"</string>
<string name="cancel" msgid="6830980399865683324">"Annuler"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Paramètres"</string>
<string name="install_dict" msgid="180852772562189365">"Installer"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Annuler"</string>
<string name="delete_dict" msgid="756853268088330054">"Supprimer"</string>
diff --git a/java/res/values-fr/strings-config-important-notice.xml b/java/res/values-fr/strings-config-important-notice.xml
index f0857c9f3..21000de07 100644
--- a/java/res/values-fr/strings-config-important-notice.xml
+++ b/java/res/values-fr/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Améliorer suggestions en fonction des messages et données saisies"</string>
</resources>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 37908369f..3cd6e2696 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Chargement en cours…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Dictionnaire principal"</string>
<string name="cancel" msgid="6830980399865683324">"Annuler"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Paramètres"</string>
<string name="install_dict" msgid="180852772562189365">"Installer"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Annuler"</string>
<string name="delete_dict" msgid="756853268088330054">"Supprimer"</string>
diff --git a/java/res/values-hi/strings-config-important-notice.xml b/java/res/values-hi/strings-config-important-notice.xml
index f0857c9f3..9a1c12b39 100644
--- a/java/res/values-hi/strings-config-important-notice.xml
+++ b/java/res/values-hi/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"सुझावों में सुधार हेतु अपने संचार और लिखे गए डेटा से जानकारी पाएं"</string>
</resources>
diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml
index eecd41161..04879863f 100644
--- a/java/res/values-hi/strings.xml
+++ b/java/res/values-hi/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"लोड हो रहा है…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"मुख्‍य डिक्‍शनरी"</string>
<string name="cancel" msgid="6830980399865683324">"रद्द करें"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"सेटिंग"</string>
<string name="install_dict" msgid="180852772562189365">"इंस्टॉल करें"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"रद्द करें"</string>
<string name="delete_dict" msgid="756853268088330054">"हटाएं"</string>
diff --git a/java/res/values-hr/strings-config-important-notice.xml b/java/res/values-hr/strings-config-important-notice.xml
index f0857c9f3..c93544ed3 100644
--- a/java/res/values-hr/strings-config-important-notice.xml
+++ b/java/res/values-hr/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Upotrijebi poruke i upisane podatke za poboljšanje prijedloga"</string>
</resources>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index 579ed2545..eb1391fe6 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -108,7 +108,7 @@
<string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonski način rada"</string>
<string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Način unosa telefonskih simbola"</string>
<string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tipkovnica je skrivena"</string>
- <string name="announce_keyboard_mode" msgid="7486740369324538848">"Način prikazane tipkovnice: <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+ <string name="announce_keyboard_mode" msgid="7486740369324538848">"Prikaz tipkovnice: <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
<string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
<string name="keyboard_mode_date_time" msgid="339593358488851072">"datum i vrijeme"</string>
<string name="keyboard_mode_email" msgid="6216248078128294262">"e-pošta"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Učitavanje…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Glavni rječnik"</string>
<string name="cancel" msgid="6830980399865683324">"Odustani"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Postavke"</string>
<string name="install_dict" msgid="180852772562189365">"Instaliraj"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Odustani"</string>
<string name="delete_dict" msgid="756853268088330054">"Izbriši"</string>
diff --git a/java/res/values-hu/strings-config-important-notice.xml b/java/res/values-hu/strings-config-important-notice.xml
index f0857c9f3..b35c9f06c 100644
--- a/java/res/values-hu/strings-config-important-notice.xml
+++ b/java/res/values-hu/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Javaslatok javítása a kommunikáció és begépelt adatok alapján"</string>
</resources>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index aca6a942d..d4fffecf4 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Betöltés…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Fő szótár"</string>
<string name="cancel" msgid="6830980399865683324">"Mégse"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Beállítások"</string>
<string name="install_dict" msgid="180852772562189365">"Telepítés"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Mégse"</string>
<string name="delete_dict" msgid="756853268088330054">"Törlés"</string>
diff --git a/java/res/values-hy-rAM/strings-config-important-notice.xml b/java/res/values-hy-rAM/strings-config-important-notice.xml
index f0857c9f3..0d1588e13 100644
--- a/java/res/values-hy-rAM/strings-config-important-notice.xml
+++ b/java/res/values-hy-rAM/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Բարելավեք առաջարկները` ձեր նամակագրությունից և մուտքագրած տվյալներից"</string>
</resources>
diff --git a/java/res/values-hy-rAM/strings.xml b/java/res/values-hy-rAM/strings.xml
index a891933e0..f24ea45d8 100644
--- a/java/res/values-hy-rAM/strings.xml
+++ b/java/res/values-hy-rAM/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Բեռնում..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Հիմնական բառարան"</string>
<string name="cancel" msgid="6830980399865683324">"Չեղարկել"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Կարգավորումներ"</string>
<string name="install_dict" msgid="180852772562189365">"Տեղադրել"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Չեղարկել"</string>
<string name="delete_dict" msgid="756853268088330054">"Ջնջել"</string>
diff --git a/java/res/values-in/strings-config-important-notice.xml b/java/res/values-in/strings-config-important-notice.xml
index f0857c9f3..c1950c41a 100644
--- a/java/res/values-in/strings-config-important-notice.xml
+++ b/java/res/values-in/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Belajar dari komunikasi &amp; data terketik untuk meningkatkan saran"</string>
</resources>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index b144fe24c..b7907929e 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Memuat…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Kamus utama"</string>
<string name="cancel" msgid="6830980399865683324">"Batal"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Setelan"</string>
<string name="install_dict" msgid="180852772562189365">"Pasang"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Batal"</string>
<string name="delete_dict" msgid="756853268088330054">"Hapus"</string>
diff --git a/java/res/values-it/strings-config-important-notice.xml b/java/res/values-it/strings-config-important-notice.xml
index f0857c9f3..deff79f89 100644
--- a/java/res/values-it/strings-config-important-notice.xml
+++ b/java/res/values-it/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Usa comunicazioni e dati digitati per migliorare i suggerimenti"</string>
</resources>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 8c15a9514..a9728f1de 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Caricamento..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Dizionario principale"</string>
<string name="cancel" msgid="6830980399865683324">"Annulla"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Impostazioni"</string>
<string name="install_dict" msgid="180852772562189365">"Installa"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Annulla"</string>
<string name="delete_dict" msgid="756853268088330054">"Elimina"</string>
diff --git a/java/res/values-iw/strings-config-important-notice.xml b/java/res/values-iw/strings-config-important-notice.xml
index f0857c9f3..c7f352968 100644
--- a/java/res/values-iw/strings-config-important-notice.xml
+++ b/java/res/values-iw/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"למד מהתכתבויות ומנתונים שהקלדת כדי לשפר את ההצעות"</string>
</resources>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 942d6dc77..870623f93 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"טוען…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"מילון ראשי"</string>
<string name="cancel" msgid="6830980399865683324">"בטל"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"הגדרות"</string>
<string name="install_dict" msgid="180852772562189365">"התקן"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"בטל"</string>
<string name="delete_dict" msgid="756853268088330054">"מחק"</string>
diff --git a/java/res/values-ja/strings-config-important-notice.xml b/java/res/values-ja/strings-config-important-notice.xml
index f0857c9f3..937ddae5c 100644
--- a/java/res/values-ja/strings-config-important-notice.xml
+++ b/java/res/values-ja/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"メッセージなどのやり取りや入力したデータから入力候補を予測します"</string>
</resources>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 244f20fd0..add4449a4 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -108,7 +108,7 @@
<string name="spoken_description_mode_phone" msgid="6520207943132026264">"電話モード"</string>
<string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"電話記号モード"</string>
<string name="announce_keyboard_hidden" msgid="8718927835531429807">"キーボードは非表示です"</string>
- <string name="announce_keyboard_mode" msgid="7486740369324538848">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g>のキーワードを表示しています"</string>
+ <string name="announce_keyboard_mode" msgid="7486740369324538848">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g>のキーボードを表示しています"</string>
<string name="keyboard_mode_date" msgid="3137520166817128102">"日付"</string>
<string name="keyboard_mode_date_time" msgid="339593358488851072">"日時"</string>
<string name="keyboard_mode_email" msgid="6216248078128294262">"メールアドレス"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"読み込んでいます…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"メイン辞書"</string>
<string name="cancel" msgid="6830980399865683324">"キャンセル"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"設定"</string>
<string name="install_dict" msgid="180852772562189365">"インストール"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"キャンセル"</string>
<string name="delete_dict" msgid="756853268088330054">"削除"</string>
diff --git a/java/res/values-ka-rGE/strings-config-important-notice.xml b/java/res/values-ka-rGE/strings-config-important-notice.xml
index f0857c9f3..e43ca01b1 100644
--- a/java/res/values-ka-rGE/strings-config-important-notice.xml
+++ b/java/res/values-ka-rGE/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"უკეთესი შეთავაზებისთვის თქვენი კომუნიკაციიდან და ტექსტიდან სწავლა"</string>
</resources>
diff --git a/java/res/values-ka-rGE/strings.xml b/java/res/values-ka-rGE/strings.xml
index ddfed887e..056bc355e 100644
--- a/java/res/values-ka-rGE/strings.xml
+++ b/java/res/values-ka-rGE/strings.xml
@@ -211,12 +211,11 @@
<string name="message_loading" msgid="5638680861387748936">"იტვირთება..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"მთავარი ლექსიკონი"</string>
<string name="cancel" msgid="6830980399865683324">"გაუქმება"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"პარამეტრები"</string>
<string name="install_dict" msgid="180852772562189365">"ინსტალაცია"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"გაუქმება"</string>
<string name="delete_dict" msgid="756853268088330054">"წაშლა"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"თქვენ მიერ მობილურ მოწყობილობაზე არჩეული ენისთვის ხელმისაწვდომია ლექსიკონი.&lt;br/&gt; გირჩევთ, &lt;b&gt;ჩამოტვირთოთ&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ლექსიკონი, რათა გაიმარტივოთ ტექსტის შეყვანა.&lt;br/&gt; &lt;br/&gt; ჩამოტვირთვას შესაძლოა დასჭირდეს ერთი ან ორი წუთი 3G სისწრაფეზე. თუ &lt;b&gt; მობილური ინტერნეტის ტარიფი&lt;/b&gt;.&lt;br/&amp;gt ულიმიტო არ გაქვთ, შესაძლოა გადახდა მოგიწიოთ; თუ არ ხართ დარწმუნებული მობილური ინტერნეტის აქტიური ტარიფის შესახებ, გირჩევთ, იპოვოთ Wi-Fi კავშირი და ავტომატურად დაიწყოთ ჩამოტვირთვა.&lt;br/&gt; &lt;br/&gt; რჩევა: ლექსიკონების ჩამოტვირთვა და ამოშლა შეიძლებასექციიდან &lt;b&gt;ენა და შეყვანა&lt;/b&gt; თქვენი მობილური მოწყობილობის &lt;b&gt;პარამეტრების&lt;/b&gt; მენიუში."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"თქვენ მიერ მობილურ მოწყობილობაზე არჩეული ენისთვის ხელმისაწვდომია ლექსიკონი.&lt;br/&gt; გირჩევთ, &lt;b&gt;ჩამოტვირთოთ&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ლექსიკონი, რათა გაიმარტივოთ ტექსტის შეყვანა.&lt;br/&gt; &lt;br/&gt; ჩამოტვირთვას შესაძლოა დასჭირდეს ერთი ან ორი წუთი 3G სისწრაფეზე. თუ &lt;b&gt; მობილური ინტერნეტის ტარიფი&lt;/b&gt;.&lt;br/&amp;gt ულიმიტო არ გაქვთ, შესაძლოა გადახდა მოგიწიოთ; თუ არ ხართ დარწმუნებული მობილური ინტერნეტის აქტიური ტარიფის შესახებ, გირჩევთ, იპოვოთ Wi-Fi კავშირი და ავტომატურად დაიწყოთ ჩამოტვირთვა.&lt;br/&gt; &lt;br/&gt; რჩევა: ლექსიკონების ჩამოტვირთვა და ამოშლა შეიძლება სექციიდან &lt;b&gt;ენა და შეყვანა&lt;/b&gt; თქვენი მობილური მოწყობილობის &lt;b&gt;პარამეტრების&lt;/b&gt; მენიუში."</string>
<string name="download_over_metered" msgid="1643065851159409546">"ახლა ჩამოტვირთვა (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>მბაიტი)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi კავშირზე ჩამოტვირთვა"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-სთვის ხელმისაწვდომია ლექსიკონი"</string>
diff --git a/java/res/values-km-rKH/strings-config-important-notice.xml b/java/res/values-km-rKH/strings-config-important-notice.xml
index f0857c9f3..ad0325adb 100644
--- a/java/res/values-km-rKH/strings-config-important-notice.xml
+++ b/java/res/values-km-rKH/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"សិក្សាការភ្ជាប់របស់អ្នកនិងទិន្នន័យ​ដែលបានបញ្ចូលដើម្បីធ្វើសំណើ​ឲ្យល្អ"</string>
</resources>
diff --git a/java/res/values-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml
index 00e407c1c..71242b6aa 100644
--- a/java/res/values-km-rKH/strings.xml
+++ b/java/res/values-km-rKH/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"កំពុង​ផ្ទុក..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"វចនានុក្រម​ចម្បង"</string>
<string name="cancel" msgid="6830980399865683324">"បោះ​បង់"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"ការ​កំណត់"</string>
<string name="install_dict" msgid="180852772562189365">"ដំឡើង"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"បោះ​បង់"</string>
<string name="delete_dict" msgid="756853268088330054">"លុប"</string>
diff --git a/java/res/values-ko/strings-config-important-notice.xml b/java/res/values-ko/strings-config-important-notice.xml
index f0857c9f3..2ea6e49f4 100644
--- a/java/res/values-ko/strings-config-important-notice.xml
+++ b/java/res/values-ko/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"사용자의 대화 내용과 입력한 데이터를 통해 단어 추천의 정확도를 개선합니다."</string>
</resources>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index 88aa05e0c..5d21d2a81 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -211,12 +211,11 @@
<string name="message_loading" msgid="5638680861387748936">"로드 중..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"기본 사전"</string>
<string name="cancel" msgid="6830980399865683324">"취소"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"설정"</string>
<string name="install_dict" msgid="180852772562189365">"설치"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"취소"</string>
<string name="delete_dict" msgid="756853268088330054">"삭제"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"휴대기기에서 선택한 언어로 사용할 수 있는 사전이 있습니다.&lt;br/&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> 사전을 &lt;b&gt;다운로드&lt;/b&gt;하여 입력 환경을 개선해 보세요.&lt;br/&gt; &lt;br/&gt; 3G로 다운로드하는 경우 1-2분 정도 걸립니다. &lt;b&gt;무제한 데이터 요금제&lt;/b&gt;가 아닌 경우 요금이 청구될 수 있습니다.&lt;br/&gt; 사용 중인 데이터 요금제를 잘 모르는 경우 Wi-Fi에 연결할 수 있는 곳을 찾아 자동 다운로드를 시작하는 것이 좋습니다.&lt;br/&gt; &lt;br/&gt; 도움말: 사전을 다운로드하거나 삭제하려면 휴대기기의 &lt;b&gt;설정&lt;/b&gt; 메뉴에 있는 &lt;b&gt;언어 및 입력&lt;/b&gt;으로 이동하면 됩니다."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"휴대기기에서 선택한 언어로 사용할 수 있는 사전이 있습니다.&lt;br/&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> 사전을 &lt;b&gt;다운로드&lt;/b&gt;하여 입력 환경을 개선해 보세요.&lt;br/&gt; &lt;br/&gt; 3G로 다운로드하는 경우 1~2분 정도 걸립니다. &lt;b&gt;무제한 데이터 요금제&lt;/b&gt;가 아닌 경우 요금이 청구될 수 있습니다.&lt;br/&gt; 사용 중인 데이터 요금제를 잘 모르는 경우 Wi-Fi에 연결할 수 있는 곳을 찾아 자동 다운로드를 시작하는 것이 좋습니다.&lt;br/&gt; &lt;br/&gt; 도움말: 사전을 다운로드하거나 삭제하려면 휴대기기의 &lt;b&gt;설정&lt;/b&gt; 메뉴에 있는 &lt;b&gt;언어 및 입력&lt;/b&gt;으로 이동하면 됩니다."</string>
<string name="download_over_metered" msgid="1643065851159409546">"지금 다운로드(<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi를 통해 다운로드"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> 사전을 사용할 수 있습니다."</string>
diff --git a/java/res/values-lo-rLA/strings-config-important-notice.xml b/java/res/values-lo-rLA/strings-config-important-notice.xml
index f0857c9f3..d4e5052bd 100644
--- a/java/res/values-lo-rLA/strings-config-important-notice.xml
+++ b/java/res/values-lo-rLA/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"ຮຽນຮູ້ຈາກການສື່ສານ ແລະຂໍ້ມູນທີ່ທ່ານເຄີຍພິມເພື່ອປັບປຸງຄຳແນະນຳ"</string>
</resources>
diff --git a/java/res/values-lo-rLA/strings.xml b/java/res/values-lo-rLA/strings.xml
index b5703dc4b..9f28cd1bb 100644
--- a/java/res/values-lo-rLA/strings.xml
+++ b/java/res/values-lo-rLA/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"ກຳລັງໂຫຼດ..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"ວັດຈະນານຸກົມຫຼັກ"</string>
<string name="cancel" msgid="6830980399865683324">"ຍົກເລີກ"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"ການຕັ້ງຄ່າ"</string>
<string name="install_dict" msgid="180852772562189365">"ຕິດຕັ້ງ"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"ຍົກເລີກ"</string>
<string name="delete_dict" msgid="756853268088330054">"ລຶບ"</string>
diff --git a/java/res/values-lt/strings-config-important-notice.xml b/java/res/values-lt/strings-config-important-notice.xml
index f0857c9f3..633980ece 100644
--- a/java/res/values-lt/strings-config-important-notice.xml
+++ b/java/res/values-lt/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Mokytis iš ryšių ir įvestų duomenų, siekiant pagerinti pasiūlymus"</string>
</resources>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index cf7300d9b..9efdc679c 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Įkeliama…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Pagrindinis žodynas"</string>
<string name="cancel" msgid="6830980399865683324">"Atšaukti"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Nustatymai"</string>
<string name="install_dict" msgid="180852772562189365">"Įdiegti"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Atšaukti"</string>
<string name="delete_dict" msgid="756853268088330054">"Ištrinti"</string>
diff --git a/java/res/values-lv/strings-config-important-notice.xml b/java/res/values-lv/strings-config-important-notice.xml
index f0857c9f3..ce2062dd9 100644
--- a/java/res/values-lv/strings-config-important-notice.xml
+++ b/java/res/values-lv/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Izmantojiet saziņu un ievadītos datus, lai uzlabotu ieteikumus."</string>
</resources>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index fc4700f01..ec4a38ba9 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Notiek ielāde…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Galvenā vārdnīca"</string>
<string name="cancel" msgid="6830980399865683324">"Atcelt"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Iestatījumi"</string>
<string name="install_dict" msgid="180852772562189365">"Instalēt"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Atcelt"</string>
<string name="delete_dict" msgid="756853268088330054">"Dzēst"</string>
diff --git a/java/res/values-mn-rMN/strings-config-important-notice.xml b/java/res/values-mn-rMN/strings-config-important-notice.xml
index f0857c9f3..047cfc7bf 100644
--- a/java/res/values-mn-rMN/strings-config-important-notice.xml
+++ b/java/res/values-mn-rMN/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Зөвлөмжүүдийг сайжруулахын тулд таны харилцсан, бичсэн зүйлсээс суралцана"</string>
</resources>
diff --git a/java/res/values-mn-rMN/strings.xml b/java/res/values-mn-rMN/strings.xml
index 952cd5a82..ef8181faf 100644
--- a/java/res/values-mn-rMN/strings.xml
+++ b/java/res/values-mn-rMN/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Ачаалж байна..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Үндсэн толь бичиг"</string>
<string name="cancel" msgid="6830980399865683324">"Цуцлах"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Тохиргоо"</string>
<string name="install_dict" msgid="180852772562189365">"Суулгах"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Цуцлах"</string>
<string name="delete_dict" msgid="756853268088330054">"Устгах"</string>
diff --git a/java/res/values-ms-rMY/strings-config-important-notice.xml b/java/res/values-ms-rMY/strings-config-important-notice.xml
index f0857c9f3..e53ada237 100644
--- a/java/res/values-ms-rMY/strings-config-important-notice.xml
+++ b/java/res/values-ms-rMY/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Perbaik cadangan berdasarkan komunikasi anda dan data yang ditaip"</string>
</resources>
diff --git a/java/res/values-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml
index 23fa268a9..6fbd38c76 100644
--- a/java/res/values-ms-rMY/strings.xml
+++ b/java/res/values-ms-rMY/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Memuatkan…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Kamus utama"</string>
<string name="cancel" msgid="6830980399865683324">"Batal"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Tetapan"</string>
<string name="install_dict" msgid="180852772562189365">"Pasang"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Batal"</string>
<string name="delete_dict" msgid="756853268088330054">"Padam"</string>
diff --git a/java/res/values-nb/strings-config-important-notice.xml b/java/res/values-nb/strings-config-important-notice.xml
index f0857c9f3..8c79eef0b 100644
--- a/java/res/values-nb/strings-config-important-notice.xml
+++ b/java/res/values-nb/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Bruk kommunikasjonen og inndataene dine for å få bedre forslag"</string>
</resources>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index b7a3d68d3..02f13bb41 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Laster inn …"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Hovedordliste"</string>
<string name="cancel" msgid="6830980399865683324">"Avbryt"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Innstillinger"</string>
<string name="install_dict" msgid="180852772562189365">"Installer"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Avbryt"</string>
<string name="delete_dict" msgid="756853268088330054">"Slett"</string>
diff --git a/java/res/values-ne-rNP/strings-config-important-notice.xml b/java/res/values-ne-rNP/strings-config-important-notice.xml
index f0857c9f3..6945a61cb 100644
--- a/java/res/values-ne-rNP/strings-config-important-notice.xml
+++ b/java/res/values-ne-rNP/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"सुझावहरू सुधार गर्न सञ्‍चारहरू र टाइप गरिएको डेटाबाट जान्नुहोस्"</string>
</resources>
diff --git a/java/res/values-ne-rNP/strings.xml b/java/res/values-ne-rNP/strings.xml
index 07df7b4a4..65d15e3a0 100644
--- a/java/res/values-ne-rNP/strings.xml
+++ b/java/res/values-ne-rNP/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"लोड हुँदै..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"मुख्य शब्दकोश"</string>
<string name="cancel" msgid="6830980399865683324">"रद्द गर्नुहोस्"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"सेटिङ्हरू"</string>
<string name="install_dict" msgid="180852772562189365">"स्थापना गर्नुहोस्"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"रद्द गर्नुहोस्"</string>
<string name="delete_dict" msgid="756853268088330054">"मेट्नुहोस्"</string>
diff --git a/java/res/values-nl/strings-config-important-notice.xml b/java/res/values-nl/strings-config-important-notice.xml
index f0857c9f3..f77a1f45a 100644
--- a/java/res/values-nl/strings-config-important-notice.xml
+++ b/java/res/values-nl/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Suggesties verbeteren met uw communicatie en getypte gegevens"</string>
</resources>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index f1e4d088e..1968a45de 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Laden…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Algemeen woordenboek"</string>
<string name="cancel" msgid="6830980399865683324">"Annuleren"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Instellingen"</string>
<string name="install_dict" msgid="180852772562189365">"Installeren"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Annuleren"</string>
<string name="delete_dict" msgid="756853268088330054">"Verwijderen"</string>
diff --git a/java/res/values-pl/strings-config-important-notice.xml b/java/res/values-pl/strings-config-important-notice.xml
index f0857c9f3..03da01d87 100644
--- a/java/res/values-pl/strings-config-important-notice.xml
+++ b/java/res/values-pl/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Analizuj wiadomości i wpisywane dane, by ulepszać podpowiedzi"</string>
</resources>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index b24e34378..9d46f61fe 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Wczytuję…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Słownik główny"</string>
<string name="cancel" msgid="6830980399865683324">"Anuluj"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Ustawienia"</string>
<string name="install_dict" msgid="180852772562189365">"Zainstaluj"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Anuluj"</string>
<string name="delete_dict" msgid="756853268088330054">"Usuń"</string>
diff --git a/java/res/values-pt-rPT/strings-config-important-notice.xml b/java/res/values-pt-rPT/strings-config-important-notice.xml
index f0857c9f3..0724173b4 100644
--- a/java/res/values-pt-rPT/strings-config-important-notice.xml
+++ b/java/res/values-pt-rPT/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprender com comunicações e dados introd. para melhorar sugestões"</string>
</resources>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index 081fbbad6..8adaa4dde 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"A carregar…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Dicionário principal"</string>
<string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Definições"</string>
<string name="install_dict" msgid="180852772562189365">"Instalar"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
<string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
diff --git a/java/res/values-pt/strings-config-important-notice.xml b/java/res/values-pt/strings-config-important-notice.xml
index f0857c9f3..041a04c26 100644
--- a/java/res/values-pt/strings-config-important-notice.xml
+++ b/java/res/values-pt/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprender com mensagens e dados digitados para melhorar sugestões"</string>
</resources>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index 8271db2cf..966c4021b 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Carregando…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Dicionário principal"</string>
<string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Configurações"</string>
<string name="install_dict" msgid="180852772562189365">"Instalar"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
<string name="delete_dict" msgid="756853268088330054">"Excluir"</string>
diff --git a/java/res/values-ro/strings-config-important-notice.xml b/java/res/values-ro/strings-config-important-notice.xml
index f0857c9f3..ff064577e 100644
--- a/java/res/values-ro/strings-config-important-notice.xml
+++ b/java/res/values-ro/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Utilizați mesajele și datele introduse pt. a îmbunătăți sugestiile"</string>
</resources>
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index f02149296..ac713d996 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Se încarcă..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Dicționar principal"</string>
<string name="cancel" msgid="6830980399865683324">"Anulaţi"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Setări"</string>
<string name="install_dict" msgid="180852772562189365">"Instalați"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Anulați"</string>
<string name="delete_dict" msgid="756853268088330054">"Ștergeți"</string>
diff --git a/java/res/values-ru/strings-config-important-notice.xml b/java/res/values-ru/strings-config-important-notice.xml
index f0857c9f3..b2f215c4b 100644
--- a/java/res/values-ru/strings-config-important-notice.xml
+++ b/java/res/values-ru/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Устройство будет запоминать то, что вы вводите чаще всего"</string>
</resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 670b50d4f..2d2326388 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -80,7 +80,7 @@
<string name="spoken_current_text_is" msgid="2485723011272583845">"Введенный текст: %s."</string>
<string name="spoken_no_text_entered" msgid="7479685225597344496">"Текст не введен"</string>
<string name="spoken_auto_correct" msgid="5150455215290003221">"При нажатии клавиши <xliff:g id="KEY_NAME">%1$s</xliff:g> слово <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> будет исправлено на <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>."</string>
- <string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"Для клавиши <xliff:g id="KEY_NAME">%1$s</xliff:g> назначена функция автоисправления."</string>
+ <string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"Клавиша <xliff:g id="KEY_NAME">%1$s</xliff:g> выполняет автоисправление."</string>
<string name="spoken_description_unknown" msgid="3197434010402179157">"Код клавиши:%d"</string>
<string name="spoken_description_shift" msgid="244197883292549308">"Клавиша верхнего регистра"</string>
<string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Верхний регистр включен (нажмите, чтобы отключить)"</string>
@@ -211,12 +211,11 @@
<string name="message_loading" msgid="5638680861387748936">"Загрузка…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Основной словарь"</string>
<string name="cancel" msgid="6830980399865683324">"Отмена"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Настройки"</string>
<string name="install_dict" msgid="180852772562189365">"Установить"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Отмена"</string>
<string name="delete_dict" msgid="756853268088330054">"Удалить"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Доступен словарь для проверки правописания (<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>).&lt;br/&gt;Рекомендуем &lt;b&gt;установить&lt;/b&gt; его, чтобы быстрее вводить текст.&lt;br/&gt;&lt;br/&gt;Если вашим тарифом предусмотрена &lt;b&gt;безлимитная передача данных&lt;/b&gt;, словарь можно загрузить через сеть 3G (это займет всего пару минут).&lt;br/&gt;Если вы не помните подробностей своего тарифного плана, лучше подключитесь к сети Wi-Fi (загрузка начнется автоматически).&lt;br/&gt;&lt;br/&gt;Совет. Чтобы добавить, удалить или настроить словарь, откройте раздел &lt;b&gt;Язык и ввод&lt;/b&gt; в настройках своего устройства."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Доступен словарь для проверки правописания (<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>).&lt;br/&gt;Рекомендуем &lt;b&gt;установить&lt;/b&gt; его, чтобы быстрее вводить текст.&lt;br/&gt;&lt;br/&gt;Если вашим тарифом предусмотрена &lt;b&gt;безлимитная передача данных&lt;/b&gt;, словарь можно загрузить через сеть 3G (это займет всего пару минут).&lt;br/&gt;Если вы не помните подробностей своего тарифного плана, лучше подключитесь к сети Wi-Fi (загрузка начнется автоматически).&lt;br/&gt;&lt;br/&gt;Совет. Чтобы добавлять, удалять и настраивать словари, откройте раздел &lt;b&gt;Язык и ввод&lt;/b&gt; в настройках устройства."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Загрузить (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> МБ)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Загрузить через Wi-Fi"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"Доступен словарь: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
diff --git a/java/res/values-sk/strings-config-important-notice.xml b/java/res/values-sk/strings-config-important-notice.xml
index f0857c9f3..00365ab07 100644
--- a/java/res/values-sk/strings-config-important-notice.xml
+++ b/java/res/values-sk/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Zlepšovať návrhy na základe komunikácie a zadaných údajov"</string>
</resources>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index 877066304..d88759dfa 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Prebieha načítavanie..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Hlavný slovník"</string>
<string name="cancel" msgid="6830980399865683324">"Zrušiť"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Nastavenia"</string>
<string name="install_dict" msgid="180852772562189365">"Inštalovať"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Zrušiť"</string>
<string name="delete_dict" msgid="756853268088330054">"Odstrániť"</string>
diff --git a/java/res/values-sl/strings-config-important-notice.xml b/java/res/values-sl/strings-config-important-notice.xml
index f0857c9f3..fd14a6a52 100644
--- a/java/res/values-sl/strings-config-important-notice.xml
+++ b/java/res/values-sl/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Vaša sporočila in vnesene podatke uporabi za boljše predloge"</string>
</resources>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index 6c192ca66..650b69f5f 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -211,12 +211,11 @@
<string name="message_loading" msgid="5638680861387748936">"Nalaganje …"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Glavni slovar"</string>
<string name="cancel" msgid="6830980399865683324">"Prekliči"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Nastavitve"</string>
<string name="install_dict" msgid="180852772562189365">"Namesti"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Prekliči"</string>
<string name="delete_dict" msgid="756853268088330054">"Izbriši"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Za izbrani jezik v mobilni napravi je na voljo slovar.&lt;br/&gt; Za izboljšano izkušnjo tipkanja priporočamo, da &lt;b&gt;prenesete&lt;/b&gt; slovar za ta jezik: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>.&lt;br/&gt; &lt;br/&gt; Prenos prek povezave 3G lahko traja minuto ali dve. Če nimate &lt;b&gt;neomejenega podatkovnega paketa&lt;/b&gt;.&lt;br/&gt;, boste morda morali plačati prenos podatkov. Če ne veste, kateri podatkovni paket imate, priporočamo, da poiščete omrežje Wi-Fi in prenos začnete samodejno.&lt;br/&gt; &lt;br/&gt; Nasvet: Slovarje lahko prenesete in odstranite tako, da v meniju &lt;b&gt;Nastavitve&lt;/b&gt; v mobilni napravi odprete &lt;b&gt;Jezik in vnos&lt;/b&gt;."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Za izbrani jezik v mobilni napravi je na voljo slovar.&lt;br/&gt; Za izboljšano izkušnjo tipkanja priporočamo, da &lt;b&gt;prenesete&lt;/b&gt; slovar za ta jezik: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>.&lt;br/&gt; &lt;br/&gt; Prenos prek povezave 3G lahko traja minuto ali dve. Če nimate &lt;b&gt;neomejenega podatkovnega paketa&lt;/b&gt;.&lt;br/&gt;, boste morda morali plačati prenos podatkov. Če ne veste, kateri podatkovni paket imate, priporočamo, da poiščete omrežje Wi-Fi in prenos začnete samodejno.&lt;br/&gt; &lt;br/&gt; Nasvet: slovarje lahko prenesete in odstranite tako, da v meniju &lt;b&gt;Nastavitve&lt;/b&gt; v mobilni napravi odprete &lt;b&gt;Jezik in vnos&lt;/b&gt;."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Prenesi zdaj (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Prenos prek povezave Wi-Fi"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"Na voljo je slovar za ta jezik: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
diff --git a/java/res/values-sr/strings-config-important-notice.xml b/java/res/values-sr/strings-config-important-notice.xml
index f0857c9f3..a6eb25ed9 100644
--- a/java/res/values-sr/strings-config-important-notice.xml
+++ b/java/res/values-sr/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Користи комуникације и унете податке ради побољшања предлога"</string>
</resources>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index db911a59d..782830d6f 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Учитавање…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Главни речник"</string>
<string name="cancel" msgid="6830980399865683324">"Откажи"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Подешавања"</string>
<string name="install_dict" msgid="180852772562189365">"Инсталирај"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Откажи"</string>
<string name="delete_dict" msgid="756853268088330054">"Избриши"</string>
diff --git a/java/res/values-sv/strings-config-important-notice.xml b/java/res/values-sv/strings-config-important-notice.xml
index f0857c9f3..8d8a08934 100644
--- a/java/res/values-sv/strings-config-important-notice.xml
+++ b/java/res/values-sv/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Få bättre förslag genom att använda tidigare angiven data och annan kommunikation"</string>
</resources>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 1d20fcda3..22a5ce3ef 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Läser in …"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Huvudordlista"</string>
<string name="cancel" msgid="6830980399865683324">"Avbryt"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Inställningar"</string>
<string name="install_dict" msgid="180852772562189365">"Installera"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Avbryt"</string>
<string name="delete_dict" msgid="756853268088330054">"Ta bort"</string>
diff --git a/java/res/values-sw/strings-config-important-notice.xml b/java/res/values-sw/strings-config-important-notice.xml
index f0857c9f3..10eab64cd 100644
--- a/java/res/values-sw/strings-config-important-notice.xml
+++ b/java/res/values-sw/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Jifunze kutoka kwenye mawasiliano yako na data iliyocharazwa ili kuboresha mapendekezo"</string>
</resources>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index ca24131b7..50c6aaa38 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -165,7 +165,7 @@
<string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Soma faili ya kamusi ya nje"</string>
<string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Hakuna faili za kamusi katika folda ya Vilivyopakuliwa"</string>
<string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Chagua faili ya kamusi ya kusakinisha"</string>
- <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Ungependa kusakinisha faili hii kwa <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
+ <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Ungependa kusakinisha faili hii ya <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
<string name="error" msgid="8940763624668513648">"Kulikuwa na hitilafu"</string>
<string name="prefs_dump_contacts_dict" msgid="7227327764402323097">"Tupa kamusi ya anwani"</string>
<string name="prefs_dump_user_dict" msgid="294870685041741951">"Tupa kamusi ya kibinafsi"</string>
@@ -211,15 +211,14 @@
<string name="message_loading" msgid="5638680861387748936">"Inapakia…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Kamusi kuu"</string>
<string name="cancel" msgid="6830980399865683324">"Ghairi"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Mipangilio"</string>
<string name="install_dict" msgid="180852772562189365">"Sakinisha"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Ghairi"</string>
<string name="delete_dict" msgid="756853268088330054">"Futa"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Lugha iliyochaguliwa kwenye kifaa chako cha mkononi ina kamusi inayopatikana.&lt;br/&gt; Tunapendekeza&lt;b&gt;upakuaji wa kamusi ya&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ili kuboresha hali yako ya kuchapa.&lt;br/&gt; &lt;br/&gt; Upakuaji unaweza kuchukua dakika moja au mbili kukamilika kwenye 3G. Unaweza kutozwa pesa ikiwa huna mpango wa data &lt;b&gt;usio na kipimo &lt;/b&gt;.&lt;br/&gt;Ikiwa huna uhakika una mpango gani wa data, tunapendekeza utafute muunganisho wa Wi-Fi ili uanze upakuaji kiotomatiki.&lt;br/&gt; &lt;br/&gt; Kidokezo: Unaweza kupakua na kuondoa kamusi kwa kuenda kwenye&lt;b&gt;Ingizo la &amp; Lugha&lt;/b&gt; katika &lt;b&gt;menyu ya Mipangilio&lt;/b&gt; ya kifaa chako cha mkononi."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Lugha iliyochaguliwa kwenye kifaa chako cha mkononi ina kamusi inayopatikana.&lt;br/&gt; Tunapendekeza&lt;b&gt;upakuaji wa kamusi ya&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ili kuboresha hali yako ya kuchapa.&lt;br/&gt; &lt;br/&gt; Upakuaji unaweza kuchukua dakika moja au mbili kukamilika kwenye mtandao wa 3G. Unaweza kutozwa ada ikiwa huna mpango wa data &lt;b&gt;usio na kipimo &lt;/b&gt;.&lt;br/&gt;Ikiwa huna uhakika una mpango gani wa data, tunapendekeza utafute muunganisho wa Wi-Fi ili uanze upakuaji kiotomatiki.&lt;br/&gt; &lt;br/&gt; Kidokezo: Unaweza kupakua na kuondoa kamusi kwa kuenda kwenye&lt;b&gt;Lugha na Zana za Kuingiza Datalt;/b&gt; katika &lt;b&gt;menyu ya Mipangilio&lt;/b&gt; ya kifaa chako cha mkononi."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Pakua sasa (MB<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Pakua kwenye Wi-Fi"</string>
- <string name="dict_available_notification_title" msgid="4583842811218581658">"Kamusi inapatikana kwa <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
+ <string name="dict_available_notification_title" msgid="4583842811218581658">"Kamusi inapatikana ya <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
<string name="dict_available_notification_description" msgid="1075194169443163487">"Bonyeza ili kukagua na kupakua"</string>
<string name="toast_downloading_suggestions" msgid="6128155879830851739">"Inapakua: mapendekezo ya <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> yatakuwa tayari hivi karibuni."</string>
<string name="version_text" msgid="2715354215568469385">"Toleo la <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
diff --git a/java/res/values-th/strings-config-important-notice.xml b/java/res/values-th/strings-config-important-notice.xml
index f0857c9f3..78342ae70 100644
--- a/java/res/values-th/strings-config-important-notice.xml
+++ b/java/res/values-th/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"เรียนรู้จากการสื่อสารและข้อมูลที่พิมพ์ของคุณเพื่อปรับปรุงคำแนะนำ"</string>
</resources>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index f5ddd79bc..fe86ff34d 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"กำลังโหลด…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"พจนานุกรมหลัก"</string>
<string name="cancel" msgid="6830980399865683324">"ยกเลิก"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"การตั้งค่า"</string>
<string name="install_dict" msgid="180852772562189365">"ติดตั้ง"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"ยกเลิก"</string>
<string name="delete_dict" msgid="756853268088330054">"ลบ"</string>
diff --git a/java/res/values-tl/strings-config-important-notice.xml b/java/res/values-tl/strings-config-important-notice.xml
index f0857c9f3..687f8610f 100644
--- a/java/res/values-tl/strings-config-important-notice.xml
+++ b/java/res/values-tl/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Pahusayin ang suhestiyon batay sa iyong pag-uusap at na-type na data"</string>
</resources>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index 1dd59b4b4..ac3cb1c0e 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -215,8 +215,7 @@
<string name="message_loading" msgid="5638680861387748936">"Naglo-load…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Pangunahing diksyunaryo"</string>
<string name="cancel" msgid="6830980399865683324">"Kanselahin"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Mga Setting"</string>
<string name="install_dict" msgid="180852772562189365">"I-install"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Kanselahin"</string>
<string name="delete_dict" msgid="756853268088330054">"Tanggalin"</string>
diff --git a/java/res/values-tr/strings-config-important-notice.xml b/java/res/values-tr/strings-config-important-notice.xml
index f0857c9f3..06c837871 100644
--- a/java/res/values-tr/strings-config-important-notice.xml
+++ b/java/res/values-tr/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Önerileri iyileştirmek için iletişimlerimden ve yazılan verilerden öğren"</string>
</resources>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index ee433978b..b168e8b70 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -211,15 +211,14 @@
<string name="message_loading" msgid="5638680861387748936">"Yükleniyor…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Ana sözlük"</string>
<string name="cancel" msgid="6830980399865683324">"İptal"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Ayarlar"</string>
<string name="install_dict" msgid="180852772562189365">"Yükle"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"İptal"</string>
<string name="delete_dict" msgid="756853268088330054">"Sil"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Mobil cihazınızda seçili dile ait kullanılabilir bir sözlük mevcut.&lt;br/&gt; Daha iyi yazabilmek için bu <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sözlüğü &lt;b&gt;indirmenizi&lt;/b&gt; öneririz.&lt;br/&gt; &lt;br/&gt; İndirme işlemi 3G üzerinden bir veya iki dakika sürebilir. &lt;b&gt;Sınırsız veri planınız &lt;/b&gt;yoksa ücret alınabilir.&lt;br/&gt; Ne tür bir veri planına sahip olduğunuzdan emin değilseniz, otomatik olarak indirmeye başlamak için bir Kablosuz bağlantı bulmanızı öneririz.&lt;br/&gt; &lt;br/&gt; İpucu: Sözlükleri, mobil cihazınızın &lt;b&gt;Ayarlar&lt;/b&gt; menüsünde &lt;b&gt;Dil ve giriş&lt;/b&gt; seçeneğine giderek indirebilir ve silebilirsiniz."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Mobil cihazınızda seçili dile ait kullanılabilir bir sözlük var.&lt;br/&gt; Daha iyi yazabilmek için bu <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sözlüğü &lt;b&gt;indirmenizi&lt;/b&gt; öneririz.&lt;br/&gt; &lt;br/&gt; İndirme işlemi 3G üzerinden bir veya iki dakika sürebilir. &lt;b&gt;Sınırsız veri planınız &lt;/b&gt;yoksa ücret alınabilir.&lt;br/&gt; Ne tür bir veri planına sahip olduğunuzdan emin değilseniz, otomatik olarak indirmeye başlamak için bir Kablosuz bağlantı bulmanızı öneririz.&lt;br/&gt; &lt;br/&gt; İpucu: Sözlükleri, mobil cihazınızın &lt;b&gt;Ayarlar&lt;/b&gt; menüsünde &lt;b&gt;Dil ve giriş&lt;/b&gt; seçeneğine giderek indirebilir ve silebilirsiniz."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Hemen indir (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"Kablosuz üzerinden indir"</string>
- <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> için kullanılabilir bir sözlük mevcut"</string>
+ <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> için kullanılabilir bir sözlük var"</string>
<string name="dict_available_notification_description" msgid="1075194169443163487">"İncelemek ve indirmek için basın"</string>
<string name="toast_downloading_suggestions" msgid="6128155879830851739">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> için önerilerin indirilmesine kısa süre içinde başlanacak."</string>
<string name="version_text" msgid="2715354215568469385">"Sürüm <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
diff --git a/java/res/values-uk/strings-config-important-notice.xml b/java/res/values-uk/strings-config-important-notice.xml
index f0857c9f3..3d6a4e759 100644
--- a/java/res/values-uk/strings-config-important-notice.xml
+++ b/java/res/values-uk/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Пристрій буде запам’ятовувати, що ви пишете, надсилаєте й отримуєте"</string>
</resources>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index 91e1ffae8..1ed94ad7a 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Завантаження…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"Основний словник"</string>
<string name="cancel" msgid="6830980399865683324">"Скасувати"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Налаштування"</string>
<string name="install_dict" msgid="180852772562189365">"Установити"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Скасувати"</string>
<string name="delete_dict" msgid="756853268088330054">"Видалити"</string>
diff --git a/java/res/values-vi/strings-config-important-notice.xml b/java/res/values-vi/strings-config-important-notice.xml
index f0857c9f3..6528f06ed 100644
--- a/java/res/values-vi/strings-config-important-notice.xml
+++ b/java/res/values-vi/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Tìm hiểu từ thư từ trao đổi và dữ liệu đã nhập của bạn để cải tiến đề xuất"</string>
</resources>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index cfacbbc9f..c0ccc7c52 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -80,7 +80,7 @@
<string name="spoken_current_text_is" msgid="2485723011272583845">"Ký tự hiện tại là %s"</string>
<string name="spoken_no_text_entered" msgid="7479685225597344496">"Không có ký tự nào được nhập"</string>
<string name="spoken_auto_correct" msgid="5150455215290003221">"<xliff:g id="KEY_NAME">%1$s</xliff:g> sửa <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> thành <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
- <string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"<xliff:g id="KEY_NAME">%1$s</xliff:g> thực hiện tự động sửa"</string>
+ <string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"<xliff:g id="KEY_NAME">%1$s</xliff:g> tự động sửa"</string>
<string name="spoken_description_unknown" msgid="3197434010402179157">"Mã phím %d"</string>
<string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
<string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift đang bật (bấm để tắt)"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Đang tải..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Từ điển chính"</string>
<string name="cancel" msgid="6830980399865683324">"Hủy"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Cài đặt"</string>
<string name="install_dict" msgid="180852772562189365">"Cài đặt"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Hủy"</string>
<string name="delete_dict" msgid="756853268088330054">"Xóa"</string>
diff --git a/java/res/values-zh-rCN/strings-config-important-notice.xml b/java/res/values-zh-rCN/strings-config-important-notice.xml
index f0857c9f3..2ffe7d953 100644
--- a/java/res/values-zh-rCN/strings-config-important-notice.xml
+++ b/java/res/values-zh-rCN/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"根据您的通信记录和以往输入的数据来完善建议"</string>
</resources>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index d62708d38..c36362452 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -165,7 +165,7 @@
<string name="prefs_read_external_dictionary" msgid="2588931418575013067">"读取外部词典文件"</string>
<string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"“下载内容”文件夹中没有词典文件"</string>
<string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"选择要安装的词典文件"</string>
- <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"确定要安装这个<xliff:g id="LANGUAGE_NAME">%s</xliff:g>词典文件吗?"</string>
+ <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"确定要安装这个<xliff:g id="LANGUAGE_NAME">%s</xliff:g>词典吗?"</string>
<string name="error" msgid="8940763624668513648">"出现错误"</string>
<string name="prefs_dump_contacts_dict" msgid="7227327764402323097">"转储联系人词典"</string>
<string name="prefs_dump_user_dict" msgid="294870685041741951">"转储个人词典"</string>
@@ -211,17 +211,16 @@
<string name="message_loading" msgid="5638680861387748936">"正在加载…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"主词典"</string>
<string name="cancel" msgid="6830980399865683324">"取消"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"设置"</string>
<string name="install_dict" msgid="180852772562189365">"安装"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"取消"</string>
<string name="delete_dict" msgid="756853268088330054">"删除"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"对于您的移动设备上选择的语言,有一个适合您使用的词典可供下载。&lt;br/&gt;我们建议您&lt;b&gt;下载&lt;/b&gt;这个<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>词典,以便获得更好的输入体验。&lt;br/&gt;&lt;br/&gt;通过3G网络下载可能需要一两分钟的时间。如果您使用的不是&lt;b&gt;无流量限制的套餐&lt;/b&gt;,则可能需要支付一定的费用。&lt;br/&gt;如果您不确定自己使用的是哪种流量套餐,我们建议您使用WLAN网络连接自动开始下载。&lt;br/&gt;&lt;br/&gt;提示:您可以在移动设备上的&lt;b&gt;语言和输入法&lt;/b&gt;部分(位于&lt;b&gt;设置&lt;/b&gt;菜单中)下载和删除词典。"</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"您的移动设备上选择的语言有一个词典可供下载。&lt;br/&gt;我们建议您&lt;b&gt;下载&lt;/b&gt;这个<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>词典,以便获得更好的输入体验。&lt;br/&gt;&lt;br/&gt;通过3G网络下载可能需要一两分钟的时间。如果您使用的不是&lt;b&gt;无流量限制的套餐&lt;/b&gt;,则可能产生一定的流量费。&lt;br/&gt;如果您不确定自己使用的是哪种流量套餐,我们建议您连接到WLAN网络以便自动开始下载。&lt;br/&gt;&lt;br/&gt;提示:您可以在移动设备上的&lt;b&gt;语言和输入法&lt;/b&gt;部分(位于&lt;b&gt;设置&lt;/b&gt;菜单中)下载和删除词典。"</string>
<string name="download_over_metered" msgid="1643065851159409546">"立即下载 (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
<string name="do_not_download_over_metered" msgid="2176209579313941583">"通过 WLAN 下载"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"有一个<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>词典可供下载"</string>
<string name="dict_available_notification_description" msgid="1075194169443163487">"按此通知即可查看和下载"</string>
- <string name="toast_downloading_suggestions" msgid="6128155879830851739">"正在下载:针对<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>的输入建议功能马上就可以使用了!"</string>
+ <string name="toast_downloading_suggestions" msgid="6128155879830851739">"正在下载:<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>输入建议功能马上就可以使用了!"</string>
<string name="version_text" msgid="2715354215568469385">"版本<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
<string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"添加"</string>
<string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"添加到词典"</string>
diff --git a/java/res/values-zh-rHK/strings-config-important-notice.xml b/java/res/values-zh-rHK/strings-config-important-notice.xml
index f0857c9f3..9e80655a3 100644
--- a/java/res/values-zh-rHK/strings-config-important-notice.xml
+++ b/java/res/values-zh-rHK/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"根據您的通訊記錄和已輸入的資料改善建議"</string>
</resources>
diff --git a/java/res/values-zh-rHK/strings.xml b/java/res/values-zh-rHK/strings.xml
index 56618a70d..806f73f48 100644
--- a/java/res/values-zh-rHK/strings.xml
+++ b/java/res/values-zh-rHK/strings.xml
@@ -167,10 +167,10 @@
<string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"選取要安裝的字典檔案"</string>
<string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"準備為<xliff:g id="LANGUAGE_NAME">%s</xliff:g>版本安裝這個檔案嗎?"</string>
<string name="error" msgid="8940763624668513648">"發生錯誤"</string>
- <string name="prefs_dump_contacts_dict" msgid="7227327764402323097">"丟棄聯絡人字典"</string>
- <string name="prefs_dump_user_dict" msgid="294870685041741951">"丟棄個人字典"</string>
- <string name="prefs_dump_user_history_dict" msgid="6821075152449554628">"丟棄使用者記錄字典"</string>
- <string name="prefs_dump_personalization_dict" msgid="7558387996151745284">"丟棄個人化字典"</string>
+ <string name="prefs_dump_contacts_dict" msgid="7227327764402323097">"傾印聯絡人字典"</string>
+ <string name="prefs_dump_user_dict" msgid="294870685041741951">"傾印個人字典"</string>
+ <string name="prefs_dump_user_history_dict" msgid="6821075152449554628">"傾印使用者記錄字典"</string>
+ <string name="prefs_dump_personalization_dict" msgid="7558387996151745284">"傾印個人化字典"</string>
<string name="button_default" msgid="3988017840431881491">"預設"</string>
<string name="setup_welcome_title" msgid="6112821709832031715">"歡迎使用「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」"</string>
<string name="setup_welcome_additional_description" msgid="8150252008545768953">"配備觸控輸入功能"</string>
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"正在載入…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"主要字典"</string>
<string name="cancel" msgid="6830980399865683324">"取消"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"設定"</string>
<string name="install_dict" msgid="180852772562189365">"安裝"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"取消"</string>
<string name="delete_dict" msgid="756853268088330054">"刪除"</string>
diff --git a/java/res/values-zh-rTW/strings-config-important-notice.xml b/java/res/values-zh-rTW/strings-config-important-notice.xml
index f0857c9f3..f1bdc7774 100644
--- a/java/res/values-zh-rTW/strings-config-important-notice.xml
+++ b/java/res/values-zh-rTW/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"根據您的通訊紀錄和以往輸入的資料改善建議項目"</string>
</resources>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index cfbfe919e..8a56f2810 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"載入中…"</string>
<string name="main_dict_description" msgid="3072821352793492143">"主要字典"</string>
<string name="cancel" msgid="6830980399865683324">"取消"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"設定"</string>
<string name="install_dict" msgid="180852772562189365">"安裝"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"取消"</string>
<string name="delete_dict" msgid="756853268088330054">"刪除"</string>
diff --git a/java/res/values-zu/strings-config-important-notice.xml b/java/res/values-zu/strings-config-important-notice.xml
index f0857c9f3..95d5a290c 100644
--- a/java/res/values-zu/strings-config-important-notice.xml
+++ b/java/res/values-zu/strings-config-important-notice.xml
@@ -22,6 +22,5 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="important_notice_title" msgid="1836002733109536160"></string>
<string name="important_notice_contents" msgid="897137043719116217"></string>
- <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
- <skip />
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Funda kusukela kwezokuxhumana zakho nedatha ethayiphiwe ukuze uthuthukise iziphakamiso"</string>
</resources>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index 9ee924665..42430ba27 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -211,8 +211,7 @@
<string name="message_loading" msgid="5638680861387748936">"Iyalayisha..."</string>
<string name="main_dict_description" msgid="3072821352793492143">"Isichazamazwi sakho esisemqoka"</string>
<string name="cancel" msgid="6830980399865683324">"Khansela"</string>
- <!-- no translation found for go_to_settings (3876892339342569259) -->
- <skip />
+ <string name="go_to_settings" msgid="3876892339342569259">"Izilungiselelo"</string>
<string name="install_dict" msgid="180852772562189365">"Faka"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Khansela"</string>
<string name="delete_dict" msgid="756853268088330054">"Susa"</string>
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 93f25a7f6..517174495 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -39,6 +39,7 @@
<color name="typed_word_color_ics">#D833B5E5</color>
<color name="suggested_word_color_ics">#B233B5E5</color>
<color name="highlight_translucent_color_ics">#9933B5E5</color>
+ <color name="key_text_color_holo">@android:color/white</color>
<color name="key_text_shadow_color_holo">@android:color/transparent</color>
<color name="key_text_inactivated_color_holo">#66E0E4E5</color>
<color name="key_hint_letter_color_holo">#80000000</color>
@@ -65,7 +66,4 @@
<!-- TODO: Color which should be included in the theme -->
<color name="emoji_key_background_color">#00000000</color>
<color name="emoji_key_pressed_background_color">#30FFFFFF</color>
-
- <color name="key_text_color_normal_holo">@android:color/white</color>
- <color name="key_text_color_functional_holo">@android:color/white</color>
</resources>
diff --git a/java/res/values/strings-config-important-notice.xml b/java/res/values/strings-config-important-notice.xml
index 3be95d333..f2229bec4 100644
--- a/java/res/values/strings-config-important-notice.xml
+++ b/java/res/values/strings-config-important-notice.xml
@@ -20,11 +20,14 @@
<resources>
<integer name="config_important_notice_version">0</integer>
- <!-- TODO: Make title and contents resource to string array indexed by version. -->
- <!-- The text of the important notice displayed on the suggestion strip. -->
- <string name="important_notice_title"></string>
- <!-- The contents of the important notice. -->
- <string name="important_notice_contents"></string>
+ <!-- The array of the text of the important notices displayed on the suggestion strip. -->
+ <string-array name="important_notice_title_array">
+ <!-- empty -->
+ </string-array>
+ <!-- The array of the contents of the important notices. -->
+ <string-array name="important_notice_contents_array">
+ <!-- empty -->
+ </string-array>
<!-- Description for option enabling the use by the keyboards of sent/received messages, e-mail and typing history to improve suggestion accuracy [CHAR LIMIT=68] -->
<string name="use_personalized_dicts_summary">Learn from your communications and typed data to improve suggestions</string>
</resources>
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
index 4c53b528f..7fff46aaf 100644
--- a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
@@ -25,7 +25,6 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.Rect;
-import android.graphics.Typeface;
import android.os.Build;
import android.os.CountDownTimer;
import android.preference.PreferenceManager;
@@ -49,6 +48,8 @@ import android.widget.TextView;
import com.android.inputmethod.keyboard.internal.DynamicGridKeyboard;
import com.android.inputmethod.keyboard.internal.EmojiLayoutParams;
import com.android.inputmethod.keyboard.internal.EmojiPageKeyboardView;
+import com.android.inputmethod.keyboard.internal.KeyDrawParams;
+import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeSwitcher;
@@ -634,20 +635,23 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
// TODO:
}
- // Hack: These parameters are hacky.
- public void startEmojiPalettes(final String switchToAlphaLabel, final int switchToAlphaColor,
- final float switchToAlphaSize, final Typeface switchToAlphaTypeface) {
+ private static void setupAlphabetKey(final TextView alphabetKey, final String label,
+ final KeyDrawParams params) {
+ alphabetKey.setText(label);
+ alphabetKey.setTextColor(params.mTextColor);
+ alphabetKey.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize);
+ alphabetKey.setTypeface(params.mTypeface);
+ }
+
+ public void startEmojiPalettes(final String switchToAlphaLabel,
+ final KeyVisualAttributes keyVisualAttr) {
if (DEBUG_PAGER) {
Log.d(TAG, "allocate emoji palettes memory " + mCurrentPagerPosition);
}
- mAlphabetKeyLeft.setText(switchToAlphaLabel);
- mAlphabetKeyLeft.setTextColor(switchToAlphaColor);
- mAlphabetKeyLeft.setTextSize(TypedValue.COMPLEX_UNIT_PX, switchToAlphaSize);
- mAlphabetKeyLeft.setTypeface(switchToAlphaTypeface);
- mAlphabetKeyRight.setText(switchToAlphaLabel);
- mAlphabetKeyRight.setTextColor(switchToAlphaColor);
- mAlphabetKeyRight.setTextSize(TypedValue.COMPLEX_UNIT_PX, switchToAlphaSize);
- mAlphabetKeyRight.setTypeface(switchToAlphaTypeface);
+ final KeyDrawParams params = new KeyDrawParams();
+ params.updateParams(mEmojiLayoutParams.getActionBarHeight(), keyVisualAttr);
+ setupAlphabetKey(mAlphabetKeyLeft, switchToAlphaLabel, params);
+ setupAlphabetKey(mAlphabetKeyRight, switchToAlphaLabel, params);
mEmojiPager.setAdapter(mEmojiPalettesAdapter);
mEmojiPager.setCurrentItem(mCurrentPagerPosition);
}
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index ceda9ee9a..afaf2cc57 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -137,8 +137,6 @@ public class Key implements Comparable<Key> {
private final OptionalAttributes mOptionalAttributes;
- private static final int DEFAULT_TEXT_COLOR = 0xFFFFFFFF;
-
private static final class OptionalAttributes {
/** Text to output when pressed. This can be multiple characters, like ".com" */
public final String mOutputText;
@@ -585,22 +583,7 @@ public class Key implements Comparable<Key> {
}
public final int selectTextColor(final KeyDrawParams params) {
- if (isShiftedLetterActivated()) {
- return params.mTextInactivatedColor;
- }
- if (params.mTextColorStateList == null) {
- return DEFAULT_TEXT_COLOR;
- }
- final int[] state;
- // TODO: Hack!!!!!!!! Consider having a new attribute for the functional text labels.
- // Currently, we distinguish "input key" from "functional key" by checking the
- // length of the label( > 1) and "functional" attributes (= true).
- if (mLabel != null && mLabel.length() > 1) {
- state = getCurrentDrawableState();
- } else {
- state = KEY_STATE_NORMAL;
- }
- return params.mTextColorStateList.getColorForState(state, DEFAULT_TEXT_COLOR);
+ return isShiftedLetterActivated() ? params.mTextInactivatedColor : params.mTextColor;
}
public final int selectHintTextSize(final KeyDrawParams params) {
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 6215e2710..f9758634e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -19,7 +19,6 @@ package com.android.inputmethod.keyboard;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
-import android.graphics.Paint;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.ContextThemeWrapper;
@@ -31,7 +30,7 @@ import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
import com.android.inputmethod.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException;
import com.android.inputmethod.keyboard.internal.KeyboardState;
-import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.keyboard.internal.KeyboardTextsSet;
import com.android.inputmethod.latin.InputView;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
@@ -81,8 +80,9 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
private KeyboardState mState;
private KeyboardLayoutSet mKeyboardLayoutSet;
+ // TODO: The following {@link KeyboardTextsSet} should be in {@link KeyboardLayoutSet}.
+ private final KeyboardTextsSet mKeyboardTextsSet = new KeyboardTextsSet();
private SettingsValues mCurrentSettingsValues;
- private Key mSwitchToAlphaKey;
/** mIsAutoCorrectionActive indicates that auto corrected word will be input instead of
* what user actually typed. */
@@ -163,8 +163,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mCurrentSettingsValues = settingsValues;
try {
mState.onLoadKeyboard();
- final Keyboard symbols = mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_SYMBOLS);
- mSwitchToAlphaKey = symbols.getKey(Constants.CODE_SWITCH_ALPHA_SYMBOL);
+ mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale());
} catch (KeyboardLayoutSetException e) {
Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause());
LatinImeLogger.logOnException(e.mKeyboardId.toString(), e.getCause());
@@ -290,10 +289,9 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
@Override
public void setEmojiKeyboard() {
mMainKeyboardFrame.setVisibility(View.GONE);
- final Paint paint = mKeyboardView.newLabelPaint(mSwitchToAlphaKey);
mEmojiPalettesView.startEmojiPalettes(
- mSwitchToAlphaKey.getLabel(), paint.getColor(), paint.getTextSize(),
- paint.getTypeface());
+ mKeyboardTextsSet.getText(KeyboardTextsSet.SWITCH_TO_ALPHA_KEY_LABEL),
+ mKeyboardView.getKeyVisualAttribute());
mEmojiPalettesView.setVisibility(View.VISIBLE);
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index dd3ab9cce..18e51d392 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -146,6 +146,10 @@ public class KeyboardView extends View {
mPaint.setAntiAlias(true);
}
+ public KeyVisualAttributes getKeyVisualAttribute() {
+ return mKeyVisualAttributes;
+ }
+
private static void blendAlpha(final Paint paint, final int alpha) {
final int color = paint.getColor();
paint.setARGB((paint.getAlpha() * alpha) / Constants.Color.ALPHA_OPAQUE,
diff --git a/java/src/com/android/inputmethod/keyboard/internal/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/internal/EmojiLayoutParams.java
index 12e063261..d57ea5a94 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/EmojiLayoutParams.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/EmojiLayoutParams.java
@@ -73,9 +73,13 @@ public class EmojiLayoutParams {
ll.setLayoutParams(lp);
}
+ public int getActionBarHeight() {
+ return mEmojiActionBarHeight - mBottomPadding;
+ }
+
public void setActionBarProperties(final LinearLayout ll) {
final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
- lp.height = mEmojiActionBarHeight - mBottomPadding;
+ lp.height = getActionBarHeight();
ll.setLayoutParams(lp);
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
index b528b692e..1716fa049 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
@@ -16,7 +16,6 @@
package com.android.inputmethod.keyboard.internal;
-import android.content.res.ColorStateList;
import android.graphics.Typeface;
import com.android.inputmethod.latin.utils.ResourceUtils;
@@ -33,7 +32,7 @@ public final class KeyDrawParams {
public int mHintLabelSize;
public int mPreviewTextSize;
- public ColorStateList mTextColorStateList;
+ public int mTextColor;
public int mTextInactivatedColor;
public int mTextShadowColor;
public int mHintLetterColor;
@@ -58,7 +57,7 @@ public final class KeyDrawParams {
mHintLabelSize = copyFrom.mHintLabelSize;
mPreviewTextSize = copyFrom.mPreviewTextSize;
- mTextColorStateList = copyFrom.mTextColorStateList;
+ mTextColor = copyFrom.mTextColor;
mTextInactivatedColor = copyFrom.mTextInactivatedColor;
mTextShadowColor = copyFrom.mTextShadowColor;
mHintLetterColor = copyFrom.mHintLetterColor;
@@ -90,8 +89,8 @@ public final class KeyDrawParams {
attr.mShiftedLetterHintRatio, mShiftedLetterHintSize);
mHintLabelSize = selectTextSize(keyHeight, attr.mHintLabelRatio, mHintLabelSize);
mPreviewTextSize = selectTextSize(keyHeight, attr.mPreviewTextRatio, mPreviewTextSize);
- mTextColorStateList =
- attr.mTextColorStateList != null ? attr.mTextColorStateList : mTextColorStateList;
+
+ mTextColor = selectColor(attr.mTextColor, mTextColor);
mTextInactivatedColor = selectColor(attr.mTextInactivatedColor, mTextInactivatedColor);
mTextShadowColor = selectColor(attr.mTextShadowColor, mTextShadowColor);
mHintLetterColor = selectColor(attr.mHintLetterColor, mHintLetterColor);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java b/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
index c3e0aa685..df386fce4 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
@@ -16,7 +16,6 @@
package com.android.inputmethod.keyboard.internal;
-import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.SparseIntArray;
@@ -38,7 +37,7 @@ public final class KeyVisualAttributes {
public final float mHintLabelRatio;
public final float mPreviewTextRatio;
- public final ColorStateList mTextColorStateList;
+ public final int mTextColor;
public final int mTextInactivatedColor;
public final int mTextShadowColor;
public final int mHintLetterColor;
@@ -119,7 +118,7 @@ public final class KeyVisualAttributes {
mPreviewTextRatio = ResourceUtils.getFraction(keyAttr,
R.styleable.Keyboard_Key_keyPreviewTextRatio);
- mTextColorStateList = keyAttr.getColorStateList(R.styleable.Keyboard_Key_keyTextColor);
+ mTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyTextColor, 0);
mTextInactivatedColor = keyAttr.getColor(
R.styleable.Keyboard_Key_keyTextInactivatedColor, 0);
mTextShadowColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyTextShadowColor, 0);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 89221ba24..976038c10 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -29,6 +29,8 @@ import java.util.Locale;
public final class KeyboardTextsSet {
public static final String PREFIX_TEXT = "!text/";
+ public static final String SWITCH_TO_ALPHA_KEY_LABEL = "label_to_alpha_key";
+
private static final char BACKSLASH = Constants.CODE_BACKSLASH;
private static final int MAX_STRING_REFERENCE_INDIRECTION = 10;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 93d80c909..96acb1551 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -24,7 +24,8 @@ import java.util.HashMap;
* !!!!! DO NOT EDIT THIS FILE !!!!!
*
* This file is generated by tools/make-keyboard-text. The base template file is
- * tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
+ * tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/
+ * KeyboardTextsTable.tmpl
*
* This file must be updated when any text resources in keyboard layout files have been changed.
* These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
@@ -34,7 +35,7 @@ import java.util.HashMap;
* To update this file, please run the following commands.
* $ cd $ANDROID_BUILD_TOP
* $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
- * $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src
+ * $ make-keyboard-text -java packages/inputmethods/LatinIME/java
*
* The updated source file will be generated to the following path (this file).
* packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 013f9220a..c450a1d4f 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.latin;
import android.text.TextUtils;
+import android.util.Log;
import android.util.SparseArray;
import com.android.inputmethod.annotations.UsedForTesting;
@@ -29,6 +30,7 @@ import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
import com.android.inputmethod.latin.makedict.WordProperty;
import com.android.inputmethod.latin.settings.NativeSuggestOptions;
import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.FileUtils;
import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.LanguageModelParam;
import com.android.inputmethod.latin.utils.StringUtils;
@@ -84,6 +86,7 @@ public final class BinaryDictionary extends Dictionary {
private final Locale mLocale;
private final long mDictSize;
private final String mDictFilePath;
+ private final boolean mIsUpdatable;
private final int[] mInputCodePoints = new int[MAX_WORD_LENGTH];
private final int[] mOutputCodePoints = new int[MAX_WORD_LENGTH * MAX_RESULTS];
private final int[] mSpaceIndices = new int[MAX_RESULTS];
@@ -130,6 +133,7 @@ public final class BinaryDictionary extends Dictionary {
mLocale = locale;
mDictSize = length;
mDictFilePath = filename;
+ mIsUpdatable = isUpdatable;
mNativeSuggestOptions.setUseFullEditDistance(useFullEditDistance);
loadDictionary(filename, offset, length, isUpdatable);
}
@@ -177,6 +181,7 @@ public final class BinaryDictionary extends Dictionary {
int bigramProbability);
private static native int setCurrentTimeForTestNative(int currentTime);
private static native String getPropertyNative(long dict, String query);
+ private static native boolean isCorruptedNative(long dict);
public static boolean createEmptyDictFile(final String filePath, final long dictVersion,
final Locale locale, final Map<String, String> attributeMap) {
@@ -198,6 +203,22 @@ public final class BinaryDictionary extends Dictionary {
mNativeDict = openNative(path, startOffset, length, isUpdatable);
}
+ // TODO: Check isCorrupted() for main dictionaries.
+ public boolean isCorrupted() {
+ if (!isValidDictionary()) {
+ return false;
+ }
+ if (!isCorruptedNative(mNativeDict)) {
+ return false;
+ }
+ // TODO: Record the corruption.
+ Log.e(TAG, "BinaryDictionary (" + mDictFilePath + ") is corrupted.");
+ Log.e(TAG, "locale: " + mLocale);
+ Log.e(TAG, "dict size: " + mDictSize);
+ Log.e(TAG, "updatable: " + mIsUpdatable);
+ return true;
+ }
+
@UsedForTesting
public DictionaryHeader getHeader() throws UnsupportedFormatException {
if (mNativeDict == 0) {
@@ -444,7 +465,7 @@ public final class BinaryDictionary extends Dictionary {
// only be called for actual files. Right now it's only called by the flush() family of
// functions, which require an updatable dictionary, so it's okay. But beware.
loadDictionary(dictFile.getAbsolutePath(), 0 /* startOffset */,
- dictFile.length(), true /* isUpdatable */);
+ dictFile.length(), mIsUpdatable);
}
public void flush() {
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index 138a626a0..e767e4be9 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -232,11 +232,35 @@ public class DictionaryFacilitatorForSuggest {
return null != mPersonalizationDictionary;
}
+ public void flushPersonalizationDictionary() {
+ if (hasPersonalizationDictionary()) {
+ mPersonalizationDictionary.flush();
+ }
+ }
+
public void waitForLoadingMainDictionary(final long timeout, final TimeUnit unit)
throws InterruptedException {
mLatchForWaitingLoadingMainDictionary.await(timeout, unit);
}
+ @UsedForTesting
+ public void waitForLoadingDictionariesForTesting(final long timeout, final TimeUnit unit)
+ throws InterruptedException {
+ waitForLoadingMainDictionary(timeout, unit);
+ if (mContactsDictionary != null) {
+ mContactsDictionary.waitAllTasksForTests();
+ }
+ if (mUserDictionary != null) {
+ mUserDictionary.waitAllTasksForTests();
+ }
+ if (mUserHistoryDictionary != null) {
+ mUserHistoryDictionary.waitAllTasksForTests();
+ }
+ if (mPersonalizationDictionary != null) {
+ mPersonalizationDictionary.waitAllTasksForTests();
+ }
+ }
+
private void setMainDictionary(final Dictionary mainDictionary) {
mMainDictionary = mainDictionary;
addOrReplaceDictionary(Dictionary.TYPE_MAIN, mainDictionary);
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 230739d6f..f9ab9419b 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -276,22 +276,26 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
return attributeMap;
}
+ private void removeBinaryDictionaryLocked() {
+ if (mBinaryDictionary != null) {
+ mBinaryDictionary.close();
+ }
+ if (mDictFile.exists() && !FileUtils.deleteRecursively(mDictFile)) {
+ Log.e(TAG, "Can't remove a file: " + mDictFile.getName());
+ }
+ mBinaryDictionary = null;
+ }
+
protected void clear() {
- final File dictFile = mDictFile;
getExecutor(mDictName).execute(new Runnable() {
@Override
public void run() {
if (mDictionaryWriter == null) {
- if (mBinaryDictionary != null) {
- mBinaryDictionary.close();
- }
- if (dictFile.exists() && !FileUtils.deleteRecursively(dictFile)) {
- Log.e(TAG, "Can't remove a file: " + dictFile.getName());
- }
- BinaryDictionary.createEmptyDictFile(dictFile.getAbsolutePath(),
+ removeBinaryDictionaryLocked();
+ BinaryDictionary.createEmptyDictFile(mDictFile.getAbsolutePath(),
DICTIONARY_FORMAT_VERSION, mLocale, getHeaderAttributeMap());
mBinaryDictionary = new BinaryDictionary(
- dictFile.getAbsolutePath(), 0 /* offset */, dictFile.length(),
+ mDictFile.getAbsolutePath(), 0 /* offset */, mDictFile.length(),
true /* useFullEditDistance */, mLocale, mDictType, mIsUpdatable);
} else {
mDictionaryWriter.clear();
@@ -469,6 +473,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
sessionId);
holder.set(binarySuggestion);
+ if (mBinaryDictionary.isCorrupted()) {
+ removeBinaryDictionaryLocked();
+ }
}
});
return holder.get(null, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS);
diff --git a/java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java b/java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java
new file mode 100644
index 000000000..9870faa98
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.DialogInterface.OnShowListener;
+
+import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
+
+/**
+ * The dialog box that shows the important notice contents.
+ */
+public final class ImportantNoticeDialog extends AlertDialog implements OnShowListener,
+ OnClickListener, OnDismissListener {
+ public interface ImportantNoticeDialogListener {
+ public void onClickSettingsOfImportantNoticeDialog(final int nextVersion);
+ public void onDismissImportantNoticeDialog(final int nextVersion);
+ }
+
+ private final ImportantNoticeDialogListener mListener;
+ private final int mNextImportantNoticeVersion;
+
+ public ImportantNoticeDialog(
+ final Context context, final ImportantNoticeDialogListener listener) {
+ super(context, THEME_HOLO_DARK);
+ mListener = listener;
+ mNextImportantNoticeVersion = ImportantNoticeUtils.getNextImportantNoticeVersion(context);
+ setMessage(ImportantNoticeUtils.getNextImportantNoticeContents(context));
+ // Create buttons and set listeners.
+ setButton(BUTTON_POSITIVE, context.getString(android.R.string.ok), this);
+ if (shouldHaveSettingsButton()) {
+ setButton(BUTTON_NEGATIVE, context.getString(R.string.go_to_settings), this);
+ }
+ // Set listeners.
+ setOnShowListener(this);
+ setOnDismissListener(this);
+ }
+
+ private boolean shouldHaveSettingsButton() {
+ return mNextImportantNoticeVersion
+ == ImportantNoticeUtils.VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS;
+ }
+
+ @Override
+ public void onShow(final DialogInterface dialog) {
+ ImportantNoticeUtils.updateLastImportantNoticeVersion(getContext());
+ }
+
+ @Override
+ public void onClick(final DialogInterface dialog, final int which) {
+ if (shouldHaveSettingsButton() && which == BUTTON_NEGATIVE) {
+ mListener.onClickSettingsOfImportantNoticeDialog(mNextImportantNoticeVersion);
+ }
+ }
+
+ @Override
+ public void onDismiss(final DialogInterface dialog) {
+ mListener.onDismissImportantNoticeDialog(mNextImportantNoticeVersion);
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 346ba8523..44282a492 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -26,8 +26,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
-import android.content.DialogInterface.OnDismissListener;
-import android.content.DialogInterface.OnShowListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
@@ -100,7 +98,8 @@ import java.util.concurrent.TimeUnit;
*/
public class LatinIME extends InputMethodService implements KeyboardActionListener,
SuggestionStripView.Listener, SuggestionStripViewAccessor,
- DictionaryFacilitatorForSuggest.DictionaryInitializationListener {
+ DictionaryFacilitatorForSuggest.DictionaryInitializationListener,
+ ImportantNoticeDialog.ImportantNoticeDialogListener {
private static final String TAG = LatinIME.class.getSimpleName();
private static final boolean TRACE = false;
private static boolean DEBUG = false;
@@ -751,6 +750,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
+ ", word caps = "
+ ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0));
}
+ Log.i(TAG, "Starting input. Cursor position = "
+ + editorInfo.initialSelStart + "," + editorInfo.initialSelEnd);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
ResearchLogger.latinIME_onStartInputViewInternal(editorInfo, prefs);
@@ -799,19 +800,22 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
suggest = mInputLogic.mSuggest;
}
- // Sometimes, while rotating, for some reason the framework tells the app we are not
- // connected to it and that means we can't refresh the cache. In this case, schedule a
- // refresh later.
// TODO[IL]: Can the following be moved to InputLogic#startInput?
final boolean canReachInputConnection;
if (!mInputLogic.mConnection.resetCachesUponCursorMoveAndReturnSuccess(
editorInfo.initialSelStart, editorInfo.initialSelEnd,
false /* shouldFinishComposition */)) {
+ // Sometimes, while rotating, for some reason the framework tells the app we are not
+ // connected to it and that means we can't refresh the cache. In this case, schedule a
+ // refresh later.
// We try resetting the caches up to 5 times before giving up.
mHandler.postResetCaches(isDifferentTextField, 5 /* remainingTries */);
// mLastSelection{Start,End} are reset later in this method, don't need to do it here
canReachInputConnection = false;
} else {
+ // When rotating, initialSelStart and initialSelEnd sometimes are lying. Make a best
+ // effort to work around this bug.
+ mInputLogic.mConnection.tryFixLyingCursorPosition();
if (isDifferentTextField) {
mHandler.postResumeSuggestions();
}
@@ -1177,39 +1181,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mInputLogic.mSuggest.mDictionaryFacilitator.addWordToUserDictionary(wordToEdit);
}
- // TODO: Move this method out of {@link LatinIME}.
// Callback for the {@link SuggestionStripView}, to call when the important notice strip is
// pressed.
@Override
public void showImportantNoticeContents() {
- final Context context = this;
- final AlertDialog.Builder builder =
- new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);
- builder.setMessage(ImportantNoticeUtils.getNextImportantNoticeContents(context));
- builder.setPositiveButton(android.R.string.ok, null /* listener */);
- final OnClickListener onClickListener = new OnClickListener() {
- @Override
- public void onClick(final DialogInterface dialog, final int position) {
- if (position == DialogInterface.BUTTON_NEGATIVE) {
- launchSettings();
- }
- }
- };
- builder.setNegativeButton(R.string.go_to_settings, onClickListener);
- final AlertDialog importantNoticeDialog = builder.create();
- importantNoticeDialog.setOnShowListener(new OnShowListener() {
- @Override
- public void onShow(final DialogInterface dialog) {
- ImportantNoticeUtils.updateLastImportantNoticeVersion(context);
- }
- });
- importantNoticeDialog.setOnDismissListener(new OnDismissListener() {
- @Override
- public void onDismiss(final DialogInterface dialog) {
- setNeutralSuggestionStrip();
- }
- });
- showOptionDialog(importantNoticeDialog);
+ showOptionDialog(new ImportantNoticeDialog(this /* context */, this /* listener */));
+ }
+
+ // Implement {@link ImportantNoticeDialog.ImportantNoticeDialogListener}
+ @Override
+ public void onClickSettingsOfImportantNoticeDialog(final int nextVersion) {
+ launchSettings();
+ }
+
+ // Implement {@link ImportantNoticeDialog.ImportantNoticeDialogListener}
+ @Override
+ public void onDismissImportantNoticeDialog(final int nextVersion) {
+ setNeutralSuggestionStrip();
}
public void displaySettingsDialog() {
@@ -1717,9 +1705,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// DO NOT USE THIS for any other purpose than testing. This is information private to LatinIME.
@UsedForTesting
- /* package for test */ void waitForMainDictionary(final long timeout, final TimeUnit unit)
+ /* package for test */ void waitForLoadingDictionaries(final long timeout, final TimeUnit unit)
throws InterruptedException {
- mInputLogic.mSuggest.mDictionaryFacilitator.waitForLoadingMainDictionary(timeout, unit);
+ mInputLogic.mSuggest.mDictionaryFacilitator.waitForLoadingDictionariesForTesting(
+ timeout, unit);
}
// DO NOT USE THIS for any other purpose than testing. This can break the keyboard badly.
@@ -1733,6 +1722,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
resetSuggest(new Suggest(locale, dictionaryFacilitator));
}
+ // DO NOT USE THIS for any other purpose than testing.
+ @UsedForTesting
+ /* package for test */ void clearPersonalizedDictionariesForTest() {
+ mInputLogic.mSuggest.mDictionaryFacilitator.clearUserHistoryDictionary();
+ mInputLogic.mSuggest.mDictionaryFacilitator.clearPersonalizationDictionary();
+ }
+
public void dumpDictionaryForDebug(final String dictName) {
if (mInputLogic.mSuggest == null) {
initSuggest();
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index cc2db4c93..323256d1c 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -172,20 +172,6 @@ public final class RichInputConnection {
Log.d(TAG, "Will try to retrieve text later.");
return false;
}
- final int lengthOfTextBeforeCursor = mCommittedTextBeforeComposingText.length();
- if (lengthOfTextBeforeCursor > newSelStart
- || (newSelStart != lengthOfTextBeforeCursor
- && lengthOfTextBeforeCursor < Constants.EDITOR_CONTENTS_CACHE_SIZE
- && newSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
- // newSelStart and newSelEnd may be lying -- when rotating the device (probably a
- // framework bug). If the values don't agree and we have less chars than we asked
- // for, then we know how many chars we have. If we got more than newSelStart says, then
- // we also know it was lying. In both cases the length is more reliable. Note that we
- // only have to check newSelStart (not newSelEnd) since if newSelEnd is wrong, then
- // newSelStart will be wrong as well.
- mExpectedSelStart = lengthOfTextBeforeCursor;
- mExpectedSelEnd = lengthOfTextBeforeCursor;
- }
if (null != mIC && shouldFinishComposition) {
mIC.finishComposingText();
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
@@ -497,12 +483,16 @@ public final class RichInputConnection {
*
* @param start the character index where the selection should start.
* @param end the character index where the selection should end.
- * @return Returns true on success, false if the input connection is no longer valid either when
- * setting the selection or when retrieving the text cache at that point.
+ * @return Returns true on success, false on failure: either the input connection is no longer
+ * valid when setting the selection or when retrieving the text cache at that point, or
+ * invalid arguments were passed.
*/
public boolean setSelection(final int start, final int end) {
if (DEBUG_BATCH_NESTING) checkBatchEdit();
if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
+ if (start < 0 || end < 0) {
+ return false;
+ }
mExpectedSelStart = start;
mExpectedSelEnd = end;
if (null != mIC) {
@@ -861,9 +851,9 @@ public final class RichInputConnection {
mExpectedSelStart = mExpectedSelEnd = Constants.NOT_A_CURSOR_POSITION;
} else {
final int textLength = textBeforeCursor.length();
- if (textLength > mExpectedSelStart
- || (textLength < Constants.EDITOR_CONTENTS_CACHE_SIZE
- && mExpectedSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
+ if (textLength < Constants.EDITOR_CONTENTS_CACHE_SIZE
+ && (textLength > mExpectedSelStart
+ || mExpectedSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
// It should not be possible to have only one of those variables be
// NOT_A_CURSOR_POSITION, so if they are equal, either the selection is zero-sized
// (simple cursor, no selection) or there is no cursor/we don't know its pos
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 52a6f5f08..045d06f0e 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -330,7 +330,13 @@ public final class InputLogic {
// Another option would be to send suggestions each time we set the composing
// text, but that is probably too expensive to do, so we decided to leave things
// as is.
- resetEntireInputState(settingsValues, newSelStart, newSelEnd);
+ // Also, we're posting a resume suggestions message, and this will update the
+ // suggestions strip in a few milliseconds, so if we cleared the suggestion strip here
+ // we'd have the suggestion strip noticeably janky. To avoid that, we don't clear
+ // it here, which means we'll keep outdated suggestions for a split second but the
+ // visual result is better.
+ resetEntireInputState(settingsValues, newSelStart, newSelEnd,
+ false /* clearSuggestionStrip */);
} else {
// resetEntireInputState calls resetCachesUponCursorMove, but forcing the
// composition to end. But in all cases where we don't reset the entire input
@@ -484,6 +490,7 @@ public final class InputLogic {
handler.showGesturePreviewAndSuggestionStrip(
SuggestedWords.EMPTY, false /* dismissGestureFloatingPreviewText */);
handler.cancelUpdateSuggestionStrip();
+ ++mAutoCommitSequenceNumber;
mConnection.beginBatchEdit();
if (mWordComposer.isComposingWord()) {
if (settingsValues.mIsInternal) {
@@ -498,7 +505,7 @@ public final class InputLogic {
// If we are in the middle of a recorrection, we need to commit the recorrection
// first so that we can insert the batch input at the current cursor position.
resetEntireInputState(settingsValues, mConnection.getExpectedSelectionStart(),
- mConnection.getExpectedSelectionEnd());
+ mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
} else if (wordComposerSize <= 1) {
// We auto-correct the previous (typed, not gestured) string iff it's one character
// long. The reason for this is, even in the middle of gesture typing, you'll still
@@ -581,6 +588,7 @@ public final class InputLogic {
public void onEndBatchInput(final SettingsValues settingValues,
final InputPointers batchPointers) {
mInputLogicHandler.onEndBatchInput(batchPointers, mAutoCommitSequenceNumber);
+ ++mAutoCommitSequenceNumber;
}
// TODO: remove this argument
@@ -651,7 +659,7 @@ public final class InputLogic {
// If we are in the middle of a recorrection, we need to commit the recorrection
// first so that we can insert the character at the current cursor position.
resetEntireInputState(settingsValues, mConnection.getExpectedSelectionStart(),
- mConnection.getExpectedSelectionEnd());
+ mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
} else {
commitTyped(settingsValues, LastComposedWord.NOT_A_SEPARATOR);
}
@@ -693,7 +701,7 @@ public final class InputLogic {
// If we are in the middle of a recorrection, we need to commit the recorrection
// first so that we can insert the character at the current cursor position.
resetEntireInputState(settingsValues, mConnection.getExpectedSelectionStart(),
- mConnection.getExpectedSelectionEnd());
+ mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
isComposingWord = false;
}
// We want to find out whether to start composing a new word with this character. If so,
@@ -775,7 +783,7 @@ public final class InputLogic {
// If we are in the middle of a recorrection, we need to commit the recorrection
// first so that we can insert the separator at the current cursor position.
resetEntireInputState(settingsValues, mConnection.getExpectedSelectionStart(),
- mConnection.getExpectedSelectionEnd());
+ mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
}
// isComposingWord() may have changed since we stored wasComposing
if (mWordComposer.isComposingWord()) {
@@ -881,7 +889,7 @@ public final class InputLogic {
// If we are in the middle of a recorrection, we need to commit the recorrection
// first so that we can remove the character at the current cursor position.
resetEntireInputState(settingsValues, mConnection.getExpectedSelectionStart(),
- mConnection.getExpectedSelectionEnd());
+ mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
// When we exit this if-clause, mWordComposer.isComposingWord() will return false.
}
if (mWordComposer.isComposingWord()) {
@@ -1252,18 +1260,28 @@ public final class InputLogic {
// HACK: We may want to special-case some apps that exhibit bad behavior in case of
// recorrection. This is a temporary, stopgap measure that will be removed later.
// TODO: remove this.
- if (settingsValues.isBrokenByRecorrection()) return;
+ if (settingsValues.isBrokenByRecorrection()
// Recorrection is not supported in languages without spaces because we don't know
// how to segment them yet.
- if (!settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) return;
+ || !settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces
// If no suggestions are requested, don't try restarting suggestions.
- if (!settingsValues.isSuggestionsRequested()) return;
+ || !settingsValues.isSuggestionsRequested()
// If the cursor is not touching a word, or if there is a selection, return right away.
- if (mConnection.hasSelection()) return;
+ || mConnection.hasSelection()
// If we don't know the cursor location, return.
- if (mConnection.getExpectedSelectionStart() < 0) return;
+ || mConnection.getExpectedSelectionStart() < 0) {
+ mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+ return;
+ }
final int expectedCursorPosition = mConnection.getExpectedSelectionStart();
- if (!mConnection.isCursorTouchingWord(settingsValues.mSpacingAndPunctuations)) return;
+ if (!mConnection.isCursorTouchingWord(settingsValues.mSpacingAndPunctuations)) {
+ // Show predictions.
+ mWordComposer.setCapitalizedModeAndPreviousWordAtStartComposingTime(
+ WordComposer.CAPS_MODE_OFF,
+ getNthPreviousWordForSuggestion(settingsValues.mSpacingAndPunctuations, 1));
+ mLatinIME.mHandler.postUpdateSuggestionStrip();
+ return;
+ }
final TextRange range = mConnection.getWordRangeAtCursor(
settingsValues.mSpacingAndPunctuations.mSortedWordSeparators,
0 /* additionalPrecedingWordsCount */);
@@ -1606,14 +1624,17 @@ public final class InputLogic {
* @param settingsValues the current values of the settings.
* @param newSelStart the new selection start, in java characters.
* @param newSelEnd the new selection end, in java characters.
+ * @param clearSuggestionStrip whether this method should clear the suggestion strip.
*/
// TODO: how is this different from startInput ?!
// TODO: remove all references to this in LatinIME and make this private
public void resetEntireInputState(final SettingsValues settingsValues,
- final int newSelStart, final int newSelEnd) {
+ final int newSelStart, final int newSelEnd, final boolean clearSuggestionStrip) {
final boolean shouldFinishComposition = mWordComposer.isComposingWord();
resetComposingState(true /* alsoResetLastComposedWord */);
- mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+ if (clearSuggestionStrip) {
+ mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+ }
mConnection.resetCachesUponCursorMoveAndReturnSuccess(newSelStart, newSelEnd,
shouldFinishComposition);
}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java
index 71e120c5f..bf776cfc5 100644
--- a/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java
+++ b/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java
@@ -120,16 +120,10 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
// used only for testing.
private final DictionaryBufferFactory mBufferFactory;
protected DictBuffer mDictBuffer;
- private final BinaryDictionary mBinaryDictionary;
/* package */ Ver2DictDecoder(final File file, final int factoryFlag) {
mDictionaryBinaryFile = file;
mDictBuffer = null;
- // dictType is not being used in dicttool. Passing an empty string.
- mBinaryDictionary = new BinaryDictionary(file.getAbsolutePath(),
- 0 /* offset */, file.length() /* length */, true /* useFullEditDistance */,
- null /* locale */, "" /* dictType */, false /* isUpdatable */);
-
if ((factoryFlag & MASK_DICTBUFFER) == USE_READONLY_BYTEBUFFER) {
mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
} else if ((factoryFlag & MASK_DICTBUFFER) == USE_BYTEARRAY) {
@@ -144,10 +138,6 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
/* package */ Ver2DictDecoder(final File file, final DictionaryBufferFactory factory) {
mDictionaryBinaryFile = file;
mBufferFactory = factory;
- // dictType is not being used in dicttool. Passing an empty string.
- mBinaryDictionary = new BinaryDictionary(file.getAbsolutePath(),
- 0 /* offset */, file.length() /* length */, true /* useFullEditDistance */,
- null /* locale */, "" /* dictType */, false /* isUpdatable */);
}
@Override
@@ -172,7 +162,13 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
@Override
public DictionaryHeader readHeader() throws IOException, UnsupportedFormatException {
- final DictionaryHeader header = mBinaryDictionary.getHeader();
+ // dictType is not being used in dicttool. Passing an empty string.
+ final BinaryDictionary binaryDictionary = new BinaryDictionary(
+ mDictionaryBinaryFile.getAbsolutePath(), 0 /* offset */,
+ mDictionaryBinaryFile.length() /* length */, true /* useFullEditDistance */,
+ null /* locale */, "" /* dictType */, false /* isUpdatable */);
+ final DictionaryHeader header = binaryDictionary.getHeader();
+ binaryDictionary.close();
if (header == null) {
throw new IOException("Cannot read the dictionary header.");
}
@@ -254,6 +250,11 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
@Override
public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
throws FileNotFoundException, IOException, UnsupportedFormatException {
+ // dictType is not being used in dicttool. Passing an empty string.
+ final BinaryDictionary binaryDictionary = new BinaryDictionary(
+ mDictionaryBinaryFile.getAbsolutePath(), 0 /* offset */,
+ mDictionaryBinaryFile.length() /* length */, true /* useFullEditDistance */,
+ null /* locale */, "" /* dictType */, false /* isUpdatable */);
final DictionaryHeader header = readHeader();
final FusionDictionary fusionDict =
new FusionDictionary(new FusionDictionary.PtNodeArray(), header.mDictionaryOptions);
@@ -261,11 +262,11 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
final ArrayList<WordProperty> wordProperties = CollectionUtils.newArrayList();
do {
final BinaryDictionary.GetNextWordPropertyResult result =
- mBinaryDictionary.getNextWordProperty(token);
+ binaryDictionary.getNextWordProperty(token);
final WordProperty wordProperty = result.mWordProperty;
if (wordProperty == null) {
+ binaryDictionary.close();
if (deleteDictIfBroken) {
- mBinaryDictionary.close();
mDictionaryBinaryFile.delete();
}
return null;
@@ -294,6 +295,7 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
fusionDict.setBigram(word0, bigram.mWord, bigram.mProbabilityInfo);
}
}
+ binaryDictionary.close();
return fusionDict;
}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
index 88fff38f2..afe82317e 100644
--- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
+++ b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
@@ -35,7 +35,6 @@ public class Ver4DictDecoder extends AbstractDictDecoder {
private static final String TAG = Ver4DictDecoder.class.getSimpleName();
final File mDictDirectory;
- final BinaryDictionary mBinaryDictionary;
@UsedForTesting
/* package */ Ver4DictDecoder(final File dictDirectory, final int factoryFlag) {
@@ -45,24 +44,32 @@ public class Ver4DictDecoder extends AbstractDictDecoder {
@UsedForTesting
/* package */ Ver4DictDecoder(final File dictDirectory, final DictionaryBufferFactory factory) {
mDictDirectory = dictDirectory;
- // dictType is not being used in dicttool. Passing an empty string.
- mBinaryDictionary = new BinaryDictionary(dictDirectory.getAbsolutePath(),
- 0 /* offset */, 0 /* length */, true /* useFullEditDistance */, null /* locale */,
- "" /* dictType */, true /* isUpdatable */);
+
}
@Override
public DictionaryHeader readHeader() throws IOException, UnsupportedFormatException {
- final DictionaryHeader header = mBinaryDictionary.getHeader();
+ // dictType is not being used in dicttool. Passing an empty string.
+ final BinaryDictionary binaryDictionary= new BinaryDictionary(
+ mDictDirectory.getAbsolutePath(), 0 /* offset */, 0 /* length */,
+ true /* useFullEditDistance */, null /* locale */,
+ "" /* dictType */, true /* isUpdatable */);
+ final DictionaryHeader header = binaryDictionary.getHeader();
+ binaryDictionary.close();
if (header == null) {
throw new IOException("Cannot read the dictionary header.");
}
- return mBinaryDictionary.getHeader();
+ return header;
}
@Override
public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
throws FileNotFoundException, IOException, UnsupportedFormatException {
+ // dictType is not being used in dicttool. Passing an empty string.
+ final BinaryDictionary binaryDictionary = new BinaryDictionary(
+ mDictDirectory.getAbsolutePath(), 0 /* offset */, 0 /* length */,
+ true /* useFullEditDistance */, null /* locale */,
+ "" /* dictType */, true /* isUpdatable */);
final DictionaryHeader header = readHeader();
final FusionDictionary fusionDict =
new FusionDictionary(new FusionDictionary.PtNodeArray(), header.mDictionaryOptions);
@@ -70,11 +77,11 @@ public class Ver4DictDecoder extends AbstractDictDecoder {
final ArrayList<WordProperty> wordProperties = CollectionUtils.newArrayList();
do {
final BinaryDictionary.GetNextWordPropertyResult result =
- mBinaryDictionary.getNextWordProperty(token);
+ binaryDictionary.getNextWordProperty(token);
final WordProperty wordProperty = result.mWordProperty;
if (wordProperty == null) {
+ binaryDictionary.close();
if (deleteDictIfBroken) {
- mBinaryDictionary.close();
FileUtils.deleteRecursively(mDictDirectory);
}
return null;
@@ -103,6 +110,7 @@ public class Ver4DictDecoder extends AbstractDictDecoder {
fusionDict.setBigram(word0, bigram.mWord, bigram.mProbabilityInfo);
}
}
+ binaryDictionary.close();
return fusionDict;
}
}
diff --git a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
index 8f7378c58..d3734d693 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
@@ -68,6 +68,11 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB
dumpAllWordsForDebug();
}
// Flush pending writes.
+ flush();
+ // TODO: Quit depending on finalize() and really close the dictionary file.
+ }
+
+ public void flush() {
asyncFlushBinaryDictionary();
}
diff --git a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
index 6b0bb86ac..ca8bef397 100644
--- a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
@@ -60,7 +60,7 @@ public final class ImportantNoticeUtils {
return context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
}
- public static int getCurrentImportantNoticeVersion(final Context context) {
+ private static int getCurrentImportantNoticeVersion(final Context context) {
return context.getResources().getInteger(R.integer.config_important_notice_version);
}
@@ -68,7 +68,7 @@ public final class ImportantNoticeUtils {
return getImportantNoticePreferences(context).getInt(KEY_IMPORTANT_NOTICE_VERSION, 0);
}
- private static int getNextImportantNoticeVersion(final Context context) {
+ public static int getNextImportantNoticeVersion(final Context context) {
return getLastImportantNoticeVersion(context) + 1;
}
@@ -92,23 +92,23 @@ public final class ImportantNoticeUtils {
.apply();
}
- // TODO: Make title resource to string array indexed by version.
public static String getNextImportantNoticeTitle(final Context context) {
- switch (getNextImportantNoticeVersion(context)) {
- case VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS:
- return context.getString(R.string.important_notice_title);
- default:
- return null;
+ final int nextVersion = getCurrentImportantNoticeVersion(context);
+ final String[] importantNoticeTitleArray = context.getResources().getStringArray(
+ R.array.important_notice_title_array);
+ if (nextVersion > 0 && nextVersion < importantNoticeTitleArray.length) {
+ return importantNoticeTitleArray[nextVersion];
}
+ return null;
}
- // TODO: Make content resource to string array indexed by version.
public static String getNextImportantNoticeContents(final Context context) {
- switch (getNextImportantNoticeVersion(context)) {
- case VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS:
- return context.getString(R.string.important_notice_contents);
- default:
- return null;
+ final int nextVersion = getNextImportantNoticeVersion(context);
+ final String[] importantNoticeContentsArray = context.getResources().getStringArray(
+ R.array.important_notice_contents_array);
+ if (nextVersion > 0 && nextVersion < importantNoticeContentsArray.length) {
+ return importantNoticeContentsArray[nextVersion];
}
+ return null;
}
}
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index 1e00cd825..bb54cbdb9 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -529,6 +529,14 @@ static int latinime_BinaryDictionary_setCurrentTimeForTest(JNIEnv *env, jclass c
return TimeKeeper::peekCurrentTime();
}
+static bool latinime_BinaryDictionary_isCorruptedNative(JNIEnv *env, jclass clazz, jlong dict) {
+ Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+ if (!dictionary) {
+ return false;
+ }
+ return dictionary->getDictionaryStructurePolicy()->isCorrupted();
+}
+
static const JNINativeMethod sMethods[] = {
{
const_cast<char *>("createEmptyDictFileNative"),
@@ -642,6 +650,11 @@ static const JNINativeMethod sMethods[] = {
const_cast<char *>("getPropertyNative"),
const_cast<char *>("(JLjava/lang/String;)Ljava/lang/String;"),
reinterpret_cast<void *>(latinime_BinaryDictionary_getProperty)
+ },
+ {
+ const_cast<char *>("isCorruptedNative"),
+ const_cast<char *>("(J)Z"),
+ reinterpret_cast<void *>(latinime_BinaryDictionary_isCorruptedNative)
}
};
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
index 212f2ef39..84a6ccf33 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
@@ -87,9 +87,24 @@ int PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
int lastCandidatePtNodePos = 0;
// Let's loop through PtNodes in this PtNode array searching for either the terminal
// or one of its ascendants.
+ if (pos < 0 || pos >= mDictBufferSize) {
+ AKLOGE("PtNode array position is invalid. pos: %d, dict size: %d",
+ pos, mDictBufferSize);
+ mIsCorrupted = true;
+ ASSERT(false);
+ *outUnigramProbability = NOT_A_PROBABILITY;
+ return 0;
+ }
for (int ptNodeCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
mDictRoot, &pos); ptNodeCount > 0; --ptNodeCount) {
const int startPos = pos;
+ if (pos < 0 || pos >= mDictBufferSize) {
+ AKLOGE("PtNode position is invalid. pos: %d, dict size: %d", pos, mDictBufferSize);
+ mIsCorrupted = true;
+ ASSERT(false);
+ *outUnigramProbability = NOT_A_PROBABILITY;
+ return 0;
+ }
const PatriciaTrieReadingUtils::NodeFlags flags =
PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
const int character = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
index 1c714e7de..ab9751380 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTests.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
@@ -351,6 +351,38 @@ public class InputLogicTests extends InputTestsBase {
}
// TODO: Add some tests for non-BMP characters
+ public void testAutoCorrectByUserHistory() {
+ final String WORD_TO_BE_CORRECTED = "qpmx";
+ final String NOT_CORRECTED_RESULT = "qpmx ";
+ final String DESIRED_WORD = "qpmz";
+ final String CORRECTED_RESULT = "qpmz ";
+ final int typeCountNotToAutocorrect = 3;
+ final int typeCountToAutoCorrect = 16;
+ int startIndex = 0;
+ int endIndex = 0;
+
+ for (int i = 0; i < typeCountNotToAutocorrect; i++) {
+ type(DESIRED_WORD);
+ type(Constants.CODE_SPACE);
+ }
+ startIndex = mEditText.getText().length();
+ type(WORD_TO_BE_CORRECTED);
+ type(Constants.CODE_SPACE);
+ endIndex = mEditText.getText().length();
+ assertEquals("not auto-corrected by user history", NOT_CORRECTED_RESULT,
+ mEditText.getText().subSequence(startIndex, endIndex).toString());
+ for (int i = typeCountNotToAutocorrect; i < typeCountToAutoCorrect; i++) {
+ type(DESIRED_WORD);
+ type(Constants.CODE_SPACE);
+ }
+ startIndex = mEditText.getText().length();
+ type(WORD_TO_BE_CORRECTED);
+ type(Constants.CODE_SPACE);
+ endIndex = mEditText.getText().length();
+ assertEquals("auto-corrected by user history",
+ CORRECTED_RESULT, mEditText.getText().subSequence(startIndex, endIndex).toString());
+ }
+
public void testPredictionsAfterSpace() {
final String WORD_TO_TYPE = "Barack ";
type(WORD_TO_TYPE);
diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
index 4b157e700..690c559e8 100644
--- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
@@ -275,9 +275,9 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
}
}
- protected void waitForDictionaryToBeLoaded() {
+ protected void waitForDictionariesToBeLoaded() {
try {
- mLatinIME.waitForMainDictionary(
+ mLatinIME.waitForLoadingDictionaries(
TIMEOUT_TO_WAIT_FOR_LOADING_MAIN_DICTIONARY_IN_SECONDS, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Log.e(TAG, "Interrupted during waiting for loading main dictionary.", e);
@@ -286,7 +286,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
protected void changeLanguage(final String locale) {
changeLanguageWithoutWait(locale);
- waitForDictionaryToBeLoaded();
+ waitForDictionariesToBeLoaded();
}
protected void changeLanguageWithoutWait(final String locale) {
@@ -314,6 +314,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
mLatinIME.loadKeyboard();
runMessages();
mKeyboard = mLatinIME.mKeyboardSwitcher.getKeyboard();
+ mLatinIME.clearPersonalizedDictionariesForTest();
}
protected void changeKeyboardLocaleAndDictLocale(final String keyboardLocale,
@@ -322,7 +323,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
if (!keyboardLocale.equals(dictLocale)) {
mLatinIME.replaceDictionariesForTest(LocaleUtils.constructLocaleFromString(dictLocale));
}
- waitForDictionaryToBeLoaded();
+ waitForDictionariesToBeLoaded();
}
protected void pickSuggestionManually(final int index, final String suggestion) {
diff --git a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java
index 24af09484..2cc22fae4 100644
--- a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java
+++ b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java
@@ -20,6 +20,8 @@ import android.content.res.Resources;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SuggestedWords;
import com.android.inputmethod.latin.utils.RunInLocale;
@@ -32,6 +34,18 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
private static final int ARMENIAN_FULL_STOP = '\u0589';
private static final int ARMENIAN_COMMA = '\u055D';
+ private int mScreenMetrics;
+
+ private boolean isPhone() {
+ return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_PHONE
+ || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_PHONE;
+ }
+
+ private boolean isTablet() {
+ return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_TABLET
+ || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_TABLET;
+ }
+
private SpacingAndPunctuations ENGLISH;
private SpacingAndPunctuations FRENCH;
private SpacingAndPunctuations GERMAN;
@@ -56,6 +70,8 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
protected void setUp() throws Exception {
super.setUp();
+ mScreenMetrics = mContext.getResources().getInteger(R.integer.config_screen_metrics);
+
// Language only
ENGLISH = getSpacingAndPunctuations(Locale.ENGLISH);
FRENCH = getSpacingAndPunctuations(Locale.FRENCH);
@@ -373,23 +389,39 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
assertTrue(SWISS_GERMAN.mUsesGermanRules);
}
- private static final String[] PUNCTUATION_LABELS_LTR = {
+ // Punctuations for phone.
+ private static final String[] PUNCTUATION_LABELS_PHONE = {
"!", "?", ",", ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_"
};
- private static final String[] PUNCTUATION_WORDS_LTR = PUNCTUATION_LABELS_LTR;
- private static final String[] PUNCTUATION_WORDS_HEBREW = {
+ private static final String[] PUNCTUATION_WORDS_PHONE_LTR = PUNCTUATION_LABELS_PHONE;
+ private static final String[] PUNCTUATION_WORDS_PHONE_HEBREW = {
"!", "?", ",", ":", ";", "\"", ")", "(", "'", "-", "/", "@", "_"
};
// U+061F: "؟" ARABIC QUESTION MARK
// U+060C: "،" ARABIC COMMA
// U+061B: "؛" ARABIC SEMICOLON
- private static final String[] PUNCTUATION_LABELS_ARABIC_PERSIAN = {
+ private static final String[] PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN = {
"!", "\u061F", "\u060C", ":", "\u061B", "\"", "(", ")", "'", "-", "/", "@", "_"
};
- private static final String[] PUNCTUATION_WORDS_ARABIC_PERSIAN = {
+ private static final String[] PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN = {
"!", "\u061F", "\u060C", ":", "\u061B", "\"", ")", "(", "'", "-", "/", "@", "_"
};
+ // Punctuations for tablet.
+ private static final String[] PUNCTUATION_LABELS_TABLET = {
+ ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_"
+ };
+ private static final String[] PUNCTUATION_WORDS_TABLET_LTR = PUNCTUATION_LABELS_TABLET;
+ private static final String[] PUNCTUATION_WORDS_TABLET_HEBREW = {
+ ":", ";", "\"", ")", "(", "'", "-", "/", "@", "_"
+ };
+ private static final String[] PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN = {
+ "!", "\u061F", ":", "\u061B", "\"", "'", "(", ")", "-", "/", "@", "_"
+ };
+ private static final String[] PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN = {
+ "!", "\u061F", ":", "\u061B", "\"", "'", ")", "(", "-", "/", "@", "_"
+ };
+
private static void testingStandardPunctuationSuggestions(final SpacingAndPunctuations sp,
final String[] punctuationLabels, final String[] punctuationWords) {
final SuggestedWords suggestedWords = sp.mSuggestPuncList;
@@ -407,19 +439,39 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
}
}
- // TODO: Add tests for tablet as well
- public void testPunctuationSuggestions() {
+ public void testPhonePunctuationSuggestions() {
+ if (!isPhone()) {
+ return;
+ }
+ testingStandardPunctuationSuggestions(ENGLISH,
+ PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
+ testingStandardPunctuationSuggestions(FRENCH,
+ PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
+ testingStandardPunctuationSuggestions(GERMAN,
+ PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
+ testingStandardPunctuationSuggestions(ARABIC,
+ PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN);
+ testingStandardPunctuationSuggestions(PERSIAN,
+ PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN);
+ testingStandardPunctuationSuggestions(HEBREW,
+ PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_HEBREW);
+ }
+
+ public void testTabletPunctuationSuggestions() {
+ if (!isTablet()) {
+ return;
+ }
testingStandardPunctuationSuggestions(ENGLISH,
- PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR);
+ PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
testingStandardPunctuationSuggestions(FRENCH,
- PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR);
+ PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
testingStandardPunctuationSuggestions(GERMAN,
- PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR);
+ PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
testingStandardPunctuationSuggestions(ARABIC,
- PUNCTUATION_LABELS_ARABIC_PERSIAN, PUNCTUATION_WORDS_ARABIC_PERSIAN);
+ PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN);
testingStandardPunctuationSuggestions(PERSIAN,
- PUNCTUATION_LABELS_ARABIC_PERSIAN, PUNCTUATION_WORDS_ARABIC_PERSIAN);
+ PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN);
testingStandardPunctuationSuggestions(HEBREW,
- PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_HEBREW);
+ PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_HEBREW);
}
}
diff --git a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl b/tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
index 7ec42ceea..b25bfb204 100644
--- a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
+++ b/tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
@@ -24,7 +24,8 @@ import java.util.HashMap;
* !!!!! DO NOT EDIT THIS FILE !!!!!
*
* This file is generated by tools/make-keyboard-text. The base template file is
- * tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
+ * tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/
+ * KeyboardTextsTable.tmpl
*
* This file must be updated when any text resources in keyboard layout files have been changed.
* These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
@@ -34,7 +35,7 @@ import java.util.HashMap;
* To update this file, please run the following commands.
* $ cd $ANDROID_BUILD_TOP
* $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
- * $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src
+ * $ make-keyboard-text -java packages/inputmethods/LatinIME/java
*
* The updated source file will be generated to the following path (this file).
* packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
index e9d6c864f..9bb2b38dd 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
@@ -29,7 +29,6 @@ import java.util.Comparator;
import java.util.HashMap;
import java.util.Locale;
import java.util.jar.JarFile;
-import java.util.regex.Pattern;
public class MoreKeysResources {
private static final String TEXT_RESOURCE_NAME = "donottranslate-more-keys.xml";