merge in jb-ub-latinimegoogle-azuki history after reset to jb-ub-latinimegoogle
diff --git a/dictionaries/ru_wordlist.combined.gz b/dictionaries/ru_wordlist.combined.gz
index 253c515..1cfab4e 100644
--- a/dictionaries/ru_wordlist.combined.gz
+++ b/dictionaries/ru_wordlist.combined.gz
Binary files differ
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 17d11c0..2273394 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -29,13 +29,13 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
- <application android:label="@string/aosp_android_keyboard_ime_name"
+ <application android:label="@string/english_ime_name"
android:icon="@mipmap/ic_ime_settings"
android:killAfterRestore="false"
android:supportsRtl="true">
<service android:name="LatinIME"
- android:label="@string/aosp_android_keyboard_ime_name"
+ android:label="@string/english_ime_name"
android:permission="android.permission.BIND_INPUT_METHOD">
<intent-filter>
<action android:name="android.view.InputMethod" />
@@ -44,7 +44,7 @@
</service>
<service android:name=".spellcheck.AndroidSpellCheckerService"
- android:label="@string/aosp_spell_checker_service_name"
+ android:label="@string/spell_checker_service_name"
android:permission="android.permission.BIND_TEXT_SERVICE">
<intent-filter>
<action android:name="android.service.textservice.SpellCheckerService" />
@@ -53,7 +53,7 @@
</service>
<activity android:name=".setup.SetupActivity"
- android:label="@string/aosp_android_keyboard_ime_name"
+ android:label="@string/english_ime_name"
android:icon="@drawable/ic_setup_wizard">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -69,7 +69,7 @@
</intent-filter>
</receiver>
- <activity android:name="SettingsActivity" android:label="@string/aosp_android_keyboard_ime_settings"
+ <activity android:name="SettingsActivity" android:label="@string/english_ime_settings"
android:uiOptions="splitActionBarWhenNarrow">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -77,7 +77,7 @@
</activity>
<activity android:name="com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsActivity"
- android:label="@string/aosp_android_spell_checker_service_settings">
+ android:label="@string/android_spell_checker_settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
diff --git a/java/res/drawable-hdpi/ic_menu_add.png b/java/res/drawable-hdpi/ic_menu_add.png
new file mode 100644
index 0000000..4b68f52
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_menu_add.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_menu_add.png b/java/res/drawable-mdpi/ic_menu_add.png
new file mode 100644
index 0000000..15ffadd
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_menu_add.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_menu_add.png b/java/res/drawable-xhdpi/ic_menu_add.png
new file mode 100644
index 0000000..420510e
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_menu_add.png
Binary files differ
diff --git a/java/res/layout/dictionary_line.xml b/java/res/layout/dictionary_line.xml
index a8d15ab..26924a5 100644
--- a/java/res/layout/dictionary_line.xml
+++ b/java/res/layout/dictionary_line.xml
@@ -52,33 +52,59 @@
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
- <TextView
- android:id="@+android:id/summary"
- android:layout_marginLeft="5dip"
- android:layout_marginStart="5dip"
+ <FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- android:maxLines="1" />
+ android:layout_marginStart="5dip">
- <!-- <ProgressBar -->
- <!-- android:id="@+id/dictionary_line_progress_bar" -->
- <!-- style="@android:style/Widget.Holo.ProgressBar.Horizontal" -->
- <!-- android:layout_width="match_parent" -->
- <!-- android:layout_height="match_parent" -->
- <!-- android:gravity="center" /> -->
+ <TextView
+ android:id="@+android:id/summary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="?android:attr/textColorSecondary"
+ android:maxLines="1" />
+ <com.android.inputmethod.dictionarypack.DictionaryDownloadProgressBar
+ android:id="@+id/dictionary_line_progress_bar"
+ style="@android:style/Widget.Holo.ProgressBar.Horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center" />
+
+ </FrameLayout>
</LinearLayout>
- <Button
- android:id="@+android:id/wordlist_button"
+ <com.android.inputmethod.dictionarypack.ButtonSwitcher
+ android:id="@+android:id/wordlist_button_switcher"
android:layout_weight="0"
+ android:layout_marginStart="13dip"
+ android:layout_marginLeft="13dip"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right|center_vertical"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/install_dict" />
-
+ android:layout_height="wrap_content">
+ <Button
+ android:id="@+android:id/dict_install_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right|center_vertical"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:text="@string/install_dict" />
+ <Button
+ android:id="@+android:id/dict_cancel_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right|center_vertical"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:text="@string/cancel_download_dict" />
+ <Button
+ android:id="@+android:id/dict_delete_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right|center_vertical"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:text="@string/delete_dict" />
+ </com.android.inputmethod.dictionarypack.ButtonSwitcher>
</LinearLayout>
diff --git a/java/res/layout/setup_steps_cards.xml b/java/res/layout/setup_steps_cards.xml
index 6c46461..2451731 100644
--- a/java/res/layout/setup_steps_cards.xml
+++ b/java/res/layout/setup_steps_cards.xml
@@ -56,6 +56,12 @@
layout="@layout/setup_step" />
</FrameLayout>
<TextView
+ android:id="@+id/setup_next"
+ android:text="@string/setup_next_action"
+ android:gravity="end|center_vertical"
+ style="@style/setupStepActionLabelStyleCommon"
+ android:layout_marginTop="@dimen/setup_step_horizontal_line_height" />
+ <TextView
android:id="@+id/setup_finish"
android:text="@string/setup_finish_action"
style="@style/setupStepActionLabelStyle"
diff --git a/java/res/layout/setup_welcome_video.xml b/java/res/layout/setup_welcome_video.xml
index da59ec8..3cc5f21 100644
--- a/java/res/layout/setup_welcome_video.xml
+++ b/java/res/layout/setup_welcome_video.xml
@@ -22,16 +22,17 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ android:paddingTop="@dimen/setup_welcome_video_vertical_margin"
+ android:paddingBottom="@dimen/setup_welcome_video_vertical_margin">
<View
android:layout_weight="@integer/setup_welcome_video_left_padding_weight_in_screen"
android:layout_width="0dp"
android:layout_height="0dp" />
<VideoView
android:id="@+id/setup_welcome_video"
+ android:background="@color/setup_background"
android:layout_weight="@integer/setup_welcome_video_weight_in_screen"
- android:layout_marginTop="@dimen/setup_welcome_video_vertical_margin"
- android:layout_marginBottom="@dimen/setup_welcome_video_vertical_margin"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<View
diff --git a/java/res/layout/user_dictionary_add_word.xml b/java/res/layout/user_dictionary_add_word.xml
new file mode 100644
index 0000000..bbf9b1b
--- /dev/null
+++ b/java/res/layout/user_dictionary_add_word.xml
@@ -0,0 +1,99 @@
+<?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.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/user_dict_settings_add_dialog_top"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <com.android.internal.widget.DialogTitle
+ style="?android:attr/windowTitleStyle"
+ android:layout_width="match_parent"
+ android:layout_height="64dip"
+ android:layout_marginEnd="16dip"
+ android:layout_marginStart="16dip"
+ android:ellipsize="end"
+ android:gravity="center_vertical|start"
+ android:singleLine="true"
+ android:text="@string/user_dict_settings_add_dialog_title" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="2dip"
+ android:background="@android:color/holo_blue_light" />
+ </LinearLayout>
+
+ <EditText
+ android:id="@+id/user_dictionary_add_word_text"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="fill_horizontal|center_vertical"
+ android:layout_marginBottom="8dip"
+ android:layout_marginStart="8dip"
+ android:layout_marginTop="8dip"
+ android:hint="@string/user_dict_settings_add_word_hint"
+ android:imeOptions="flagNoFullscreen"
+ android:inputType="textNoSuggestions"
+ android:maxLength="@integer/user_dictionary_max_word_length" >
+
+ <requestFocus />
+ </EditText>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:divider="?android:attr/dividerHorizontal"
+ android:dividerPadding="0dip"
+ android:orientation="vertical"
+ android:showDividers="beginning" >
+
+ <LinearLayout
+ style="?android:attr/buttonBarStyle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:measureWithLargestChild="true"
+ android:orientation="horizontal" >
+
+ <Button
+ style="?android:attr/buttonBarButtonStyle"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start"
+ android:layout_weight="1"
+ android:maxLines="2"
+ android:onClick="onClickCancel"
+ android:text="@string/cancel"
+ android:textSize="14sp" />
+
+ <Button
+ style="?android:attr/buttonBarButtonStyle"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_gravity="end"
+ android:layout_weight="1"
+ android:maxLines="2"
+ android:onClick="onClickConfirm"
+ android:text="@string/user_dict_settings_add_dialog_confirm"
+ android:textSize="14sp" />
+ </LinearLayout>
+ </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/java/res/layout/user_dictionary_add_word_fullscreen.xml b/java/res/layout/user_dictionary_add_word_fullscreen.xml
new file mode 100644
index 0000000..75e86c5
--- /dev/null
+++ b/java/res/layout/user_dictionary_add_word_fullscreen.xml
@@ -0,0 +1,91 @@
+<?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.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/user_dict_settings_add_dialog_top"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <TextView
+ style="?android:attr/listSeparatorTextViewStyle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/user_dict_settings_add_screen_title" />
+
+ <EditText
+ android:id="@+id/user_dictionary_add_word_text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="fill_horizontal|center_vertical"
+ android:layout_marginBottom="8dip"
+ android:layout_marginStart="8dip"
+ android:layout_marginTop="8dip"
+ android:hint="@string/user_dict_settings_add_word_hint"
+ android:imeOptions="flagNoFullscreen"
+ android:inputType="textNoSuggestions"
+ android:maxLength="@integer/user_dictionary_max_word_length" >
+
+ <requestFocus />
+ </EditText>
+
+ <GridLayout
+ android:id="@+id/user_dictionary_add_word_grid"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="8dip"
+ android:layout_marginStart="8dip"
+ android:columnCount="2" >
+
+ <TextView
+ android:id="@+id/user_dictionary_add_shortcut_label"
+ style="?android:attr/textAppearanceSmall"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start|center_vertical"
+ android:text="@string/user_dict_settings_add_shortcut_option_name" />
+
+ <EditText
+ android:id="@+id/user_dictionary_add_shortcut"
+ android:layout_width="wrap_content"
+ android:layout_gravity="fill_horizontal|center_vertical"
+ android:layout_marginBottom="8dip"
+ android:layout_marginStart="8dip"
+ android:layout_marginTop="8dip"
+ android:hint="@string/user_dict_settings_add_shortcut_hint"
+ android:imeOptions="flagNoFullscreen"
+ android:inputType="textNoSuggestions"
+ android:maxLength="@integer/user_dictionary_max_word_length" />
+
+ <TextView
+ android:id="@+id/user_dictionary_add_locale_label"
+ style="?android:attr/textAppearanceSmall"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start|center_vertical"
+ android:text="@string/user_dict_settings_add_locale_option_name"
+ android:visibility="gone" />
+
+ <Spinner
+ android:id="@+id/user_dictionary_add_locale"
+ android:layout_width="wrap_content"
+ android:layout_gravity="fill_horizontal|center_vertical"
+ android:layout_marginBottom="8dip"
+ android:layout_marginStart="8dip"
+ android:layout_marginTop="8dip"
+ android:visibility="gone" />
+ </GridLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/java/res/layout/user_dictionary_item.xml b/java/res/layout/user_dictionary_item.xml
new file mode 100644
index 0000000..56bad77
--- /dev/null
+++ b/java/res/layout/user_dictionary_item.xml
@@ -0,0 +1,51 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?android:attr/selectableItemBackground"
+ android:gravity="center_vertical"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingEnd="?android:attr/scrollbarSize" >
+
+ <RelativeLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="6dip"
+ android:layout_weight="1" >
+
+ <TextView
+ android:id="@+android:id/text1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ <TextView
+ android:id="@+android:id/text2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignStart="@android:id/text1"
+ android:layout_below="@android:id/text1"
+ android:maxLines="1"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="?android:attr/textColorSecondary"
+ android:visibility="gone" />
+ </RelativeLayout>
+
+</LinearLayout>
diff --git a/java/res/layout/user_dictionary_preference_list_fragment.xml b/java/res/layout/user_dictionary_preference_list_fragment.xml
new file mode 100644
index 0000000..40e562c
--- /dev/null
+++ b/java/res/layout/user_dictionary_preference_list_fragment.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@android:color/transparent"
+ android:orientation="vertical" >
+
+ <ListView
+ android:id="@android:id/list"
+ android:layout_width="match_parent"
+ android:layout_height="0px"
+ android:layout_weight="1"
+ android:cacheColorHint="@android:color/transparent"
+ android:clipToPadding="false"
+ android:drawSelectorOnTop="false"
+ android:paddingTop="0dip"
+ android:scrollbarAlwaysDrawVerticalTrack="true" />
+
+ <TextView
+ android:id="@android:id/empty"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:padding="5dip"
+ android:visibility="gone" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/java/res/raw/empty.dict b/java/res/raw/empty.dict
index da1bf96..80ce066 100644
--- a/java/res/raw/empty.dict
+++ b/java/res/raw/empty.dict
@@ -1 +1 @@
-x±
\ No newline at end of file
+Á:þ
\ No newline at end of file
diff --git a/java/res/raw/main_ru.dict b/java/res/raw/main_ru.dict
index 9fd6133..7074416 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.xml b/java/res/values-af/strings.xml
index 77bd071..88e915d 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-sleutelbord (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android-sleutelbord-instellings (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android-speltoetser (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android-speltoetserinstellings (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropsies"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Navorsing-loglêerbevele"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Soek kontakname op"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Wys altyd"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Wys in portretmodus"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Versteek altyd"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Outokorrigering"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Spasiebalk en leestekens korrigeer outomaties woorde wat verkeerd gespel is"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Af"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Stel <xliff:g id="APPLICATION_NAME">%s</xliff:g> op"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Aktiveer <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Verifieer asseblief \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" in jou Taal- en invoerinstellings. Dit sal dit magtig om op jou toestel te loop."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Aktiveer in instellings"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Skakel oor na <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Volgende, kies \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" as jou aktiewe teks-invoermetode."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Druk om te hersien en af te laai"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Laai tans af: voorstelle vir <xliff:g id="LANGUAGE">%1$s</xliff:g> sal binnekort gereed wees."</string>
<string name="version_text" msgid="2715354215568469385">"Weergawe <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index 9b1179d..933ab74 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"የAndroid ቁልፍ ሰሌዳ (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"የAndroid ቁልፍ ሰሌዳ ቅንብሮች (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android ፊደል አራሚ (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"የAndroid ፊደል አራሚ ቅንብሮች (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"ግቤት አማራጮች"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"የጥናት የምዝግብ ማስታወሻ ትዕዛዞች"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"የእውቅያ ስሞችን ተመልከት"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"ሁልጊዜ አሳይ"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"በቁም አቀማመጥ ሁነታ አሳይ"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ሁልጊዜ ደብቅ"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"በራስ-ማስተካከል"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"የቦታ ቁልፍ እና ሥርዓተ ነጥብ በስህተት የተተየቡ ቃላትን በራስሰር ያስተካክላሉ ።"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ውጪ"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ን በማዋቀር ላይ"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ን ያንቁ"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"እባክዎ «<xliff:g id="APPLICATION_NAME">%s</xliff:g>»ን በቋንቋ እና ግቤት ቅንብሮችዎ ውስጥ ያረጋግጡት። ይሄ እሱ በመሣሪያዎ ላይ እንዲሄድ ይፈቅድለታል።"</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"በቅንብሮች ውስጥ ያንቁ"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"ወደ <xliff:g id="APPLICATION_NAME">%s</xliff:g> ይቀይሩ"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"በመቀጠል «<xliff:g id="APPLICATION_NAME">%s</xliff:g>»ን እንደ የጽሑፍ ግቤት ስልትዎ ይምረጡት።"</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"ለመገምገምና ለማውረድ ይጫኑ"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"በማውረድ ላይ፦ የ<xliff:g id="LANGUAGE">%1$s</xliff:g> ጥቆማ አስተያየቶች በቅርቡ ዝግጁ ይሆናሉ።"</string>
<string name="version_text" msgid="2715354215568469385">"ሥሪት <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 096abcc..cedb820 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"لوحة مفاتيح Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"إعدادات لوحة مفاتيح Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"المدقق الإملائي في Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"إعدادات المدقق الإملائي في Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"خيارات الإرسال"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"أوامر سجلات البحث"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"بحث في أسماء جهات الاتصال"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"عرض دومًا"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"العرض في وضع رأسي"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"إخفاء دومًا"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"التصحيح التلقائي"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"تؤدي المسافة والترقيم إلى تصحيح الكلمات المكتوبة بشكل غير صحيح"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"إيقاف"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"إعداد <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"تمكين <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"يُرجى تحديد \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" في إعدادات اللغة والإدخال حيث يسمح هذا الإعداد بتشغيله على جهازك."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"تمكين في الإعدادات"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"التبديل إلى <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"بعد ذلك، حدد \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" باعتباره أسلوب إدخال النص النشط."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"اضغط للمراجعة والتنزيل"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"جارٍ التنزيل: ستتوفر اقتراحات للغة <xliff:g id="LANGUAGE">%1$s</xliff:g> بعد قليل."</string>
<string name="version_text" msgid="2715354215568469385">"الإصدار <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml
index 01ad8c6..6daca23 100644
--- a/java/res/values-be/strings.xml
+++ b/java/res/values-be/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Клавіятура Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Налады клавіятуры Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Iнструмент праверкi правапiсу для Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Налады інструмента праверкі правапісу для Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Параметры ўводу"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Каманды гiсторыя даследаванняў"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Шукаць імёны кантактаў"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Заўсёды паказваць"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Паказаць у партрэтным рэжыме"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Заўседы хаваць"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Аўтавыпраўленне"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Прабелы і пунктуацыйныя знакі дазваляюць аўтаматычна выпраўляць памылкова ўведзеныя словы"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Адключаны"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Наладка прыкладання <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Уключыць прыкладанне <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Праверце прыкладанне \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" на сваёй мове і параметры ўводу. Гэта дасць магчымасць дазволіць яму працаваць на вашай прыладзе."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Уключыць у наладах"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Пераключыцца на прыкладанне <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Выберыце \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" як актыўны метад уводу тэксту."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Нацiснiце, каб прагледзець i спампаваць"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Загрузка: прапановы для мовы \"<xliff:g id="LANGUAGE">%1$s</xliff:g>\" хутка з\'явяцца."</string>
<string name="version_text" msgid="2715354215568469385">"Версія <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index f45a2c4..2f50ad8 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Клавиатура на Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Настройки на клавиатурата на Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Програма за правописна проверка за Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Настройки на програмата за правописна проверка за Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Опции за въвеждане"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Команди за рег. файл за проучвания"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Търсене на имена"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Винаги да се показва"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Показване във вертикална ориентация"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Винаги да се скрива"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Автоматична поправка"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Клавишът за интервал и пунктуация авт. поправя сгрешени думи"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Изкл."</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Настройване на <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Активирайте <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Поставете отметка за <xliff:g id="APPLICATION_NAME">%s</xliff:g> в „Език и въвеждане“. Така ще упълномощите приложението да се изпълнява на устройството."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Активиране в настройките"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Превключете към <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"След това изберете <xliff:g id="APPLICATION_NAME">%s</xliff:g> като активен метод на въвеждане на текст."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Натиснете, за да прегледате и изтеглите"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Изтегля се: Предложенията за <xliff:g id="LANGUAGE">%1$s</xliff:g> ще бъдат готови скоро."</string>
<string name="version_text" msgid="2715354215568469385">"Версия <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index 047a3a0..b241f88 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Teclat d\'Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Configuració del teclat d\'Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Corrector ortogràfic d\'Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Configuració del corrector ortogràfic d\'Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opcions d\'entrada"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Recerca d\'ordres de reg."</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cerca noms de contactes"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostra sempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostra en mode vertical"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Amaga sempre"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Correcció automàtica"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Prémer tecla d\'espai o punt. per corregir errors"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactiva"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configuració de <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Activació de <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Marca \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" a la configuració d\'Idioma i introducció de temps. D\'aquesta manera es podrà executar al dispositiu."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Activa a la configuració"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Canvi a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"A continuació, selecciona \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" com a mètode d\'introducció de text actiu."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Prem per revisar-lo i per baixar-lo"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Baixada: els suggeriments per a <xliff:g id="LANGUAGE">%1$s</xliff:g> estaran disponibles ben aviat."</string>
<string name="version_text" msgid="2715354215568469385">"Versió <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index f238d0f..1aef354 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Klávesnice Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Nastavení klávesnice Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Kontrola pravopisu Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Nastavení kontroly pravopisu Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávání textu a dat"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Příkazy vývoj. protokolu"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Vyhledat kontakty"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vždy zobrazovat"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Zobrazovat v režimu na výšku"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vždy skrývat"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automatické opravy"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Stisknutím mezerníku a interpunkce se automaticky opravují chybně napsaná slova"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Vypnuto"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Nastavení aplikace <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Zapnutí aplikace <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"V nastavení Jazyk a zadávání zaškrtněte aplikaci <xliff:g id="APPLICATION_NAME">%s</xliff:g>, povolíte tak její spuštění."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Aktivovat v nastavení"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Přepnutí na aplikaci <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Poté vyberte jako aktivní metodu zadávání textu možnost <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Stisknutím zkontrolujete a stáhnete"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Stahování: návrhy pro jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g> budou brzy k dispozici."</string>
<string name="version_text" msgid="2715354215568469385">"Verze <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index f5e51b4..4135cca 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-tastatur (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Indstillinger for Android-tastatur (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android-stavekontrol (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Indstillinger for Android-stavekontrol (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Indstillinger for input"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Forskningslogkommandoer"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Slå kontaktnavne op"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vis altid"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Vis i portræt"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Skjul altid"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automatisk rettelse"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Mellemrumstast og tegnsætning retter automatisk forkerte ord"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Fra"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> konfigureres"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Aktivér <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Markér \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" i Sprog og inputindstillinger. Dermed får appen tilladelse til at køre på din enhed."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Aktivér i Indstillinger"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Skift til <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Dernæst skal du vælge \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" som din aktive sms-indtastningsmetode."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Tryk for at gennemgå og downloade"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloader: Der vil snart være forslag klar på <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 58fb65f..213a7c1 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-Tastatur (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android-Tastatureinstellungen (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android-Rechtschreibprüfung (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Einstellungen für die Android-Rechtschreibprüfung (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Eingabeoptionen"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Forschungsprotokollbefehle"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontaktnamen prüfen"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Immer anzeigen"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Im Hochformat anzeigen"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Nie anzeigen"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autokorrektur"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Korrektur fehlerhafter Wörter durch Leertaste und Satzzeichen"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Aus"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> einrichten"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> aktivieren"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Aktivieren Sie \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" unter \"Sprache & Eingabe\". Damit wird die App auf Ihrem Gerät autorisiert."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"In den Einstellungen aktivieren"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Zu <xliff:g id="APPLICATION_NAME">%s</xliff:g> wechseln"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Wählen Sie dann \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" als Ihre aktive Texteingabemethode."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Zum Lesen und Herunterladen drücken"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Download wurde gestartet: Vorschläge für <xliff:g id="LANGUAGE">%1$s</xliff:g> sind in Kürze bereit."</string>
<string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 6fe3550..6c3c56c 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Πληκτρολόγιο Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Ρυθμίσεις πληκτρολογίου Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Ορθογραφικός έλεγχος Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Ρυθμίσεις ορθογραφικού ελέγχου Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Επιλογές εισόδου"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Έρευνα εντολών καταγραφής"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Αναζήτηση ονομάτων επαφών"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Να εμφανίζεται πάντα"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Εμφάνιση σε κατακόρυφο προσανατολισμό"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Πάντα απόκρυψη"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Αυτόματη διόρθωση"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Τα πλήκτρα διαστήματος και στίξης διορθ. αυτόμ. λάθος λέξεις"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Απενεργοποίηση"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Ρύθμιση της εφαρμογής <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Ενεργοποιήστε την εφαρμογή <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Επιλέξτε \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" στις ρυθμίσεις Γλώσσα και εισαγωγή, για να εκτελεστεί στη συσκευή."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Ενεργοποίηση στις Ρυθμίσεις"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Μετάβαση στην εφαρμογή <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Στη συνέχεια, επιλέξτε \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ως την ενεργή μέθοδο εισαγωγής κειμένου."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Πατήστε για έλεγχο και λήψη"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Λήψη: Οι προτάσεις για τα <xliff:g id="LANGUAGE">%1$s</xliff:g> θα είναι έτοιμες σύντομα."</string>
<string name="version_text" msgid="2715354215568469385">"Έκδοση <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index 927387f..a65dd91 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android Keyboard (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android Keyboard Settings (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android Spell Checker (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android Spell Checker Settings (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Input options"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Research Log Commands"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Look up contact names"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Always show"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Show in portrait mode"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Always hide"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Auto-correction"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Correct mistyped words automatically with spacebar and punctuation"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Off"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Setting up <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Enable <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Please tick \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" in your Language & input settings. This will authorise it to run on your device."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Enable in Settings"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Switch to <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Next, select \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" as your active text-input method."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Press to review and download"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloading: suggestions for <xliff:g id="LANGUAGE">%1$s</xliff:g> will be ready soon."</string>
<string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 4086299..353b8f1 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Teclado de Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Configuración del teclado de Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Corrector ortográfico de Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Configuración del corrector ortográfico de Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opciones de entrada"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Comandos registro invest."</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Buscar nombres contactos"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar siempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostrar en modo de retrato"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Corrección automática"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"La barra espaciadora y las teclas de puntuación insertan automáticamente la palabra corregida"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivado"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurando <xliff:g id="APPLICATION_NAME">%s</xliff:g>…"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Habilitar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Marca \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" en Teclado e idioma para permitir que se ejecute en el dispositivo."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Habilitar en Configuración"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Cambiar a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"A continuación, selecciona \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" como tu método de entrada de texto activo."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Pulsar para opinar y descargar"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Descargando: las sugerencias de <xliff:g id="LANGUAGE">%1$s</xliff:g> estarán disponibles en breve."</string>
<string name="version_text" msgid="2715354215568469385">"Versión <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index 770eb92..a5a806b 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Teclado Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Ajustes del teclado de Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Corrector de Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Ajustes del corrector de Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opciones entrada texto"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Comandos registro investigación"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Nombres de contactos"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar siempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostrar en modo vertical"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autocorrección"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Pulsar la tecla de espacio o punto para corregir errores"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivada"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurando <xliff:g id="APPLICATION_NAME">%s</xliff:g>..."</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Habilitar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Selecciona <xliff:g id="APPLICATION_NAME">%s</xliff:g> en Idioma e introducción de texto para que pueda usarse en tu dispositivo."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Habilitar en Ajustes"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Cambiar a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"A continuación, selecciona <xliff:g id="APPLICATION_NAME">%s</xliff:g> como método de introducción de texto activo."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Pulsa para comprobar y descargar"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Descargando: las sugerencias de <xliff:g id="LANGUAGE">%1$s</xliff:g> estarán disponibles en breve."</string>
<string name="version_text" msgid="2715354215568469385">"Versión <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml
index 7b1061d..7f7dcb0 100644
--- a/java/res/values-et/strings.xml
+++ b/java/res/values-et/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Androidi klaviatuur (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Androidi klaviatuuri seaded (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Androidi õigekirjakontroll (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Androidi õigekirjakontrolli seaded (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Sisestusvalikud"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Uuringulogi käsud"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontakti nimede kontroll."</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Kuva alati"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Kuva vertikaalrežiimis"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Peida alati"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automaatparandus"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Tühik ja kirjavahemärgid parand. autom. kirjavigadega sõnad"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Väljas"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Rakenduse <xliff:g id="APPLICATION_NAME">%s</xliff:g> seadistamine"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Lubage <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Märkige oma keele ja sisestamise seadetes rakendus „<xliff:g id="APPLICATION_NAME">%s</xliff:g>”. See lubab rakenduse käitamise teie seadmes."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Luba seadetes"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Minge üle rakendusele <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Järgmisena valige aktiivseks tekstisisestusmeetodiks rakendus „<xliff:g id="APPLICATION_NAME">%s</xliff:g>”."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Vajutage ülevaatamiseks ja allalaadimiseks"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Allalaadimine: <xliff:g id="LANGUAGE">%1$s</xliff:g> keele soovitused on varsti saadaval."</string>
<string name="version_text" msgid="2715354215568469385">"Versioon <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index 1da3041..52f11ac 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"صفحه کلید Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"تنظیمات صفحه کلید Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"غلطگیر Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"تنظیمات غلطگیر Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"گزینههای ورودی"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"فرمانهای گزارشگیری پژوهش"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"جستجوی نام مخاطبین"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"همیشه نمایش داده شود"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"نمایش در حالت عمودی"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"همیشه پنهان شود"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"تصحیح خودکار"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"کلید فاصله و علائم نگارشی به صورت خودکار کلماتی را که غلط تایپ شدهاند تصحیح میکنند"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"خاموش"</string>
@@ -183,6 +183,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"راهاندازی <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"فعالسازی <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"لطفاً «<xliff:g id="APPLICATION_NAME">%s</xliff:g>» را در تنظیمات زبان و ورودی خود علامت بزنید. این کار مجوز اجرای آن در دستگاه شما است."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"فعالسازی در تنظیمات"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"جابجایی به <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"در مرحله بعد، با انتخاب «<xliff:g id="APPLICATION_NAME">%s</xliff:g>» به عنوان روش ورودی نوشتار خود آن را فعال نمایید."</string>
@@ -225,4 +227,48 @@
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"دانلود لغات پیشنهادی برای <xliff:g id="LANGUAGE">%1$s</xliff:g> به زودی شروع میشود."</string>
<!-- no translation found for version_text (2715354215568469385) -->
<skip />
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index 1039051..5e46393 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-näppäimistö (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android-näppäimistön asetukset (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android-oikoluku (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android-oikoluvun asetukset (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Syöttövalinnat"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Tutkimuslokin komennot"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Hae kontaktien nimiä"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Näytä aina"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Näytä pystyasennossa"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Piilota aina"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autom. korjaus"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Välilyönnit ja välimerkit korjaavat väärinkirjoitetut sanat automaattisesti"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Älä käytä"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Sovelluksen <xliff:g id="APPLICATION_NAME">%s</xliff:g> asetukset"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Ota <xliff:g id="APPLICATION_NAME">%s</xliff:g> käyttöön"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Valitse <xliff:g id="APPLICATION_NAME">%s</xliff:g> kieli- ja syöttötapa-asetuksissa, mikä valtuuttaa sovel. laitteellesi."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Ota käyttöön asetuksissa"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Siirry sovellukseen <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Valitse <xliff:g id="APPLICATION_NAME">%s</xliff:g> käytössä olevaksi tekstinsyöttötavaksi."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Paina tätä, jos haluat tarkastella kohdetta tai ladata sen"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Ladataan: pian ehdotuksia näytetään kielellä <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Versio <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 90e3afd..eb22cb2 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Clavier Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Paramètres du clavier Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Correcteur orthographique Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Paramètres du correcteur orthographique Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Options de saisie"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Commandes journaux rech."</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Rechercher noms contacts"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Toujours afficher"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Afficher en mode Portrait"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Toujours masquer"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Correction auto"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Corriger autom. orthographe (pression sur barre espace/signes ponctuation)"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Désactiver"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurer <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Activer <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Sous \"Langue et saisie\", cochez \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" pour autoriser son exécution sur l\'appareil."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Activer le clavier dans les paramètres"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Basculer vers <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Sélectionnez ensuite \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" comme mode de saisie actif."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Appuyez ici pour consulter et télécharger le dictionnaire."</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"En cours de téléchargement. Des suggestions pour la langue suivante seront bientôt disponibles : <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml
similarity index 66%
copy from java/res/values/setup-dimens.xml
copy to java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml
index dac5440..ad61c1a 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml
@@ -15,15 +15,17 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">46sp</dimen>
- <dimen name="setup_welcome_description_text_size">26sp</dimen>
- <dimen name="setup_step_bullet_text_size">22sp</dimen>
+ <!-- Setup wizard dimensions for large-tablet/portrait. -->
+ <dimen name="setup_title_text_size">72sp</dimen>
+ <dimen name="setup_welcome_description_text_size">36sp</dimen>
+ <dimen name="setup_step_bullet_text_size">24sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
<dimen name="setup_step_indicator_height">24dp</dimen>
- <dimen name="setup_step_title_text_size">22sp</dimen>
- <dimen name="setup_step_instruction_text_size">14sp</dimen>
- <dimen name="setup_step_action_text_size">18sp</dimen>
- <dimen name="setup_vertical_padding">16dp</dimen>
- <dimen name="setup_horizontal_padding">16dp</dimen>
+ <dimen name="setup_step_title_text_size">24sp</dimen>
+ <dimen name="setup_step_instruction_text_size">18sp</dimen>
+ <dimen name="setup_step_action_text_size">20sp</dimen>
+ <dimen name="setup_vertical_padding">96dp</dimen>
+ <dimen name="setup_horizontal_padding">144dp</dimen>
<dimen name="setup_step_action_height">48dp</dimen>
<dimen name="setup_step_horizontal_padding">24dp</dimen>
<dimen name="setup_step_horizontal_padding_half">12dp</dimen>
@@ -32,7 +34,7 @@
<integer name="setup_title_weight_in_screen">40</integer>
<integer name="setup_body_weight_in_screen">60</integer>
<dimen name="setup_welcome_video_vertical_margin">24dp</dimen>
- <integer name="setup_welcome_video_weight_in_screen">80</integer>
- <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer>
- <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer>
+ <integer name="setup_welcome_video_weight_in_screen">50</integer>
+ <integer name="setup_welcome_video_left_padding_weight_in_screen">25</integer>
+ <integer name="setup_welcome_video_right_padding_weight_in_screen">25</integer>
</resources>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml
similarity index 87%
copy from java/res/values/setup-dimens.xml
copy to java/res/values-h330dp-land/setup-dimens-large-phone-land.xml
index dac5440..69a8a7a 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml
@@ -15,9 +15,11 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">46sp</dimen>
- <dimen name="setup_welcome_description_text_size">26sp</dimen>
+ <!-- Setup wizard dimensions for large-phone/landscape. -->
+ <dimen name="setup_title_text_size">42sp</dimen>
+ <dimen name="setup_welcome_description_text_size">24sp</dimen>
<dimen name="setup_step_bullet_text_size">22sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
<dimen name="setup_step_indicator_height">24dp</dimen>
<dimen name="setup_step_title_text_size">22sp</dimen>
<dimen name="setup_step_instruction_text_size">14sp</dimen>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml
similarity index 66%
copy from java/res/values/setup-dimens.xml
copy to java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml
index dac5440..6a14d59 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml
@@ -15,15 +15,17 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">46sp</dimen>
- <dimen name="setup_welcome_description_text_size">26sp</dimen>
- <dimen name="setup_step_bullet_text_size">22sp</dimen>
+ <!-- Setup wizard dimensions for small-tablet/landscape. -->
+ <dimen name="setup_title_text_size">56sp</dimen>
+ <dimen name="setup_welcome_description_text_size">28sp</dimen>
+ <dimen name="setup_step_bullet_text_size">24sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
<dimen name="setup_step_indicator_height">24dp</dimen>
- <dimen name="setup_step_title_text_size">22sp</dimen>
- <dimen name="setup_step_instruction_text_size">14sp</dimen>
- <dimen name="setup_step_action_text_size">18sp</dimen>
- <dimen name="setup_vertical_padding">16dp</dimen>
- <dimen name="setup_horizontal_padding">16dp</dimen>
+ <dimen name="setup_step_title_text_size">24sp</dimen>
+ <dimen name="setup_step_instruction_text_size">18sp</dimen>
+ <dimen name="setup_step_action_text_size">20sp</dimen>
+ <dimen name="setup_vertical_padding">32dp</dimen>
+ <dimen name="setup_horizontal_padding">96dp</dimen>
<dimen name="setup_step_action_height">48dp</dimen>
<dimen name="setup_step_horizontal_padding">24dp</dimen>
<dimen name="setup_step_horizontal_padding_half">12dp</dimen>
@@ -32,7 +34,7 @@
<integer name="setup_title_weight_in_screen">40</integer>
<integer name="setup_body_weight_in_screen">60</integer>
<dimen name="setup_welcome_video_vertical_margin">24dp</dimen>
- <integer name="setup_welcome_video_weight_in_screen">80</integer>
- <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer>
- <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer>
+ <integer name="setup_welcome_video_weight_in_screen">60</integer>
+ <integer name="setup_welcome_video_left_padding_weight_in_screen">20</integer>
+ <integer name="setup_welcome_video_right_padding_weight_in_screen">20</integer>
</resources>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml
similarity index 93%
rename from java/res/values/setup-dimens.xml
rename to java/res/values-h540dp-port/setup-dimens-large-phone-port.xml
index dac5440..b8dd33d 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml
@@ -15,9 +15,11 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Setup wizard dimensions for large-phone/portrait. -->
<dimen name="setup_title_text_size">46sp</dimen>
<dimen name="setup_welcome_description_text_size">26sp</dimen>
<dimen name="setup_step_bullet_text_size">22sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
<dimen name="setup_step_indicator_height">24dp</dimen>
<dimen name="setup_step_title_text_size">22sp</dimen>
<dimen name="setup_step_instruction_text_size">14sp</dimen>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml
similarity index 66%
copy from java/res/values/setup-dimens.xml
copy to java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml
index dac5440..0004a3c 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml
@@ -15,15 +15,17 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">46sp</dimen>
- <dimen name="setup_welcome_description_text_size">26sp</dimen>
- <dimen name="setup_step_bullet_text_size">22sp</dimen>
+ <!-- Setup wizard dimensions for large-tablet/landscape. -->
+ <dimen name="setup_title_text_size">58sp</dimen>
+ <dimen name="setup_welcome_description_text_size">28sp</dimen>
+ <dimen name="setup_step_bullet_text_size">24sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
<dimen name="setup_step_indicator_height">24dp</dimen>
- <dimen name="setup_step_title_text_size">22sp</dimen>
- <dimen name="setup_step_instruction_text_size">14sp</dimen>
- <dimen name="setup_step_action_text_size">18sp</dimen>
- <dimen name="setup_vertical_padding">16dp</dimen>
- <dimen name="setup_horizontal_padding">16dp</dimen>
+ <dimen name="setup_step_title_text_size">24sp</dimen>
+ <dimen name="setup_step_instruction_text_size">18sp</dimen>
+ <dimen name="setup_step_action_text_size">20sp</dimen>
+ <dimen name="setup_vertical_padding">96dp</dimen>
+ <dimen name="setup_horizontal_padding">192dp</dimen>
<dimen name="setup_step_action_height">48dp</dimen>
<dimen name="setup_step_horizontal_padding">24dp</dimen>
<dimen name="setup_step_horizontal_padding_half">12dp</dimen>
@@ -32,7 +34,7 @@
<integer name="setup_title_weight_in_screen">40</integer>
<integer name="setup_body_weight_in_screen">60</integer>
<dimen name="setup_welcome_video_vertical_margin">24dp</dimen>
- <integer name="setup_welcome_video_weight_in_screen">80</integer>
- <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer>
- <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer>
+ <integer name="setup_welcome_video_weight_in_screen">50</integer>
+ <integer name="setup_welcome_video_left_padding_weight_in_screen">25</integer>
+ <integer name="setup_welcome_video_right_padding_weight_in_screen">25</integer>
</resources>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml
similarity index 66%
copy from java/res/values/setup-dimens.xml
copy to java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml
index dac5440..87c991c 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml
@@ -15,15 +15,17 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">46sp</dimen>
- <dimen name="setup_welcome_description_text_size">26sp</dimen>
- <dimen name="setup_step_bullet_text_size">22sp</dimen>
+ <!-- Setup wizard dimensions for small-tablet/portrait. -->
+ <dimen name="setup_title_text_size">72sp</dimen>
+ <dimen name="setup_welcome_description_text_size">36sp</dimen>
+ <dimen name="setup_step_bullet_text_size">24sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
<dimen name="setup_step_indicator_height">24dp</dimen>
- <dimen name="setup_step_title_text_size">22sp</dimen>
- <dimen name="setup_step_instruction_text_size">14sp</dimen>
- <dimen name="setup_step_action_text_size">18sp</dimen>
- <dimen name="setup_vertical_padding">16dp</dimen>
- <dimen name="setup_horizontal_padding">16dp</dimen>
+ <dimen name="setup_step_title_text_size">24sp</dimen>
+ <dimen name="setup_step_instruction_text_size">18sp</dimen>
+ <dimen name="setup_step_action_text_size">20sp</dimen>
+ <dimen name="setup_vertical_padding">32dp</dimen>
+ <dimen name="setup_horizontal_padding">64dp</dimen>
<dimen name="setup_step_action_height">48dp</dimen>
<dimen name="setup_step_horizontal_padding">24dp</dimen>
<dimen name="setup_step_horizontal_padding_half">12dp</dimen>
@@ -32,7 +34,7 @@
<integer name="setup_title_weight_in_screen">40</integer>
<integer name="setup_body_weight_in_screen">60</integer>
<dimen name="setup_welcome_video_vertical_margin">24dp</dimen>
- <integer name="setup_welcome_video_weight_in_screen">80</integer>
- <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer>
- <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer>
+ <integer name="setup_welcome_video_weight_in_screen">60</integer>
+ <integer name="setup_welcome_video_left_padding_weight_in_screen">20</integer>
+ <integer name="setup_welcome_video_right_padding_weight_in_screen">20</integer>
</resources>
diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml
index ac913f8..91d4ef0 100644
--- a/java/res/values-hi/strings.xml
+++ b/java/res/values-hi/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android कीबोर्ड (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android कीबोर्ड सेटिंग (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android वर्तनी परीक्षक (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android वर्तनी परीक्षक सेटिंग (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"इनपुट विकल्प"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"लॉग आदेशों का शोध करें"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"संपर्क नामों को खोजें"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"हमेशा दिखाएं"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"पोर्ट्रेट मोड में दिखाएं"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"हमेशा छुपाएं"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"स्वत: सुधार"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Spacebar और विराम चिह्न गलत लिखे गए शब्दों को स्वचालित रूप से ठीक करते हैं"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"बंद"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट करना"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> को सक्षम करें"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"कृपया अपनी भाषा और इनपुट सेटिंग में \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" को चेक करें. इससे वह आपके उपकरण पर चलने के लिए अधिकृत हो जाएगा."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"सेटिंग में सक्षम करें"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> पर स्विच करें"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"इसके बाद, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" को अपनी सक्रिय पाठ-इनपुट पद्धति के रूप में चुनें."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"समीक्षा करने और डाउनलोड करने के लिए दबाएं"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"डाउनलोड हो रहा है: <xliff:g id="LANGUAGE">%1$s</xliff:g> के लिए सुझाव जल्दी ही तैयार हो जाएंगे."</string>
<string name="version_text" msgid="2715354215568469385">"संस्करण <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index a9bc163..77f22c7 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Androidova tipkovnica (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Postavke Androidove tipkovnice (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Androidova provjera pravopisa (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Postavke Androidove provjere pravopisa (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opcije ulaza"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Istraživanje naredbi dnevnika"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Potražite imena kontakata"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Uvijek prikaži"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Prikaži u portretnom načinu"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Uvijek sakrij"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automatski ispravak"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Razmak i interpunkcija automatski ispravljaju krive riječi"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Isključeno"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Postavljanje aplikacije <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Omogućite aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Potvrdite aplikaciju \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" u postavkama Jezik i unos i ovlastite je za pokretanje."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Omogući u postavkama"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Prijeđite na aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Zatim odaberite aplikaciju \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" kao aktivan način unosa teksta."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Pritisnite za pregled i preuzimanje"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Preuzimanje: prijedlozi za <xliff:g id="LANGUAGE">%1$s</xliff:g> bit će spremni uskoro."</string>
<string name="version_text" msgid="2715354215568469385">"Verzija <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index 9bf47660..1fb6af5 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-billentyűzet (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android-billentyűzet beállításai (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Androidos helyesírás-ellenőrző (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Androidos helyesírás-ellenőrző beállításai (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Beviteli beállítások"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Naplózási parancsok"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Névjegyek keresése"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mindig látszik"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Megjelenítés álló tájolásban"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Mindig rejtve"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automatikus javítás"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Szóköz és központozás automatikusan javítja az elgépelést"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Ki"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"A(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> beállítása"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"A(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> engedélyezése"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Jelölje be a(z) „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” alkalmazást a „Nyelv és bevitel” alatt a futtatás érdekében."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Engedélyezés a Beállítások között"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Váltás a(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> alkalmazásra"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Ezután válassza a(z) „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” alkalmazást aktív szövegbeviteli módszerként."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Nyomja meg az áttekintéshez és letöltéshez"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Letöltés: a(z) <xliff:g id="LANGUAGE">%1$s</xliff:g> nyelvvel kapcsolatos javaslatok hamarosan elérhetők lesznek."</string>
<string name="version_text" msgid="2715354215568469385">"Verzió: <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index 0fb7a88..d18b963 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Keyboard Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Setelan Keyboard Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Pemeriksa Ejaan Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Setelan Pemeriksa Ejaan Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opsi masukan"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Riset Perintah Log"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cari nama kontak"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Selalu tampilkan"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Tampilkan dalam mode potret"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Selalu sembunyikan"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Koreksi otomatis"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Bilah spasi dan tanda baca secara otomatis dikoreksi pada kata yang salah ketik"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Mati"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Menyiapkan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Aktifkan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Centang \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" di setelan Bahasa & masukan Anda. Tindakan ini akan mengizinkannya berjalan di perangkat Anda."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Aktifkan dalam Setelan"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Beralih ke <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Lalu, pilih \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" sebagai metode masukan teks aktif Anda."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Tekan untuk meninjau dan mengunduh"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Mengunduh: saran untuk bahasa <xliff:g id="LANGUAGE">%1$s</xliff:g> akan segera tersedia."</string>
<string name="version_text" msgid="2715354215568469385">"Versi <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-is/strings.xml b/java/res/values-is/strings.xml
deleted file mode 100644
index 9da7d66..0000000
--- a/java/res/values-is/strings.xml
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
-**
-** Copyright 2008, 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.
-*/
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for aosp_android_keyboard_ime_name (8250992613616792321) -->
- <skip />
- <!-- no translation found for aosp_android_keyboard_ime_settings (423615877174850267) -->
- <skip />
- <!-- no translation found for aosp_spell_checker_service_name (511950477199948048) -->
- <skip />
- <!-- no translation found for aosp_android_spell_checker_service_settings (2970535894327288421) -->
- <skip />
- <!-- no translation found for english_ime_input_options (3909945612939668554) -->
- <skip />
- <!-- no translation found for english_ime_research_log (8492602295696577851) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
- <skip />
- <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
- <skip />
- <!-- no translation found for sound_on_keypress (6093592297198243644) -->
- <skip />
- <!-- no translation found for popup_on_keypress (123894815723512944) -->
- <skip />
- <!-- no translation found for general_category (1859088467017573195) -->
- <skip />
- <!-- no translation found for correction_category (2236750915056607613) -->
- <skip />
- <!-- no translation found for gesture_typing_category (497263612130532630) -->
- <skip />
- <!-- no translation found for misc_category (6894192814868233453) -->
- <skip />
- <!-- no translation found for advanced_settings (362895144495591463) -->
- <skip />
- <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
- <skip />
- <!-- no translation found for show_language_switch_key (5915478828318774384) -->
- <skip />
- <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
- <skip />
- <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
- <skip />
- <!-- no translation found for use_contacts_dict (4435317977804180815) -->
- <skip />
- <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
- <skip />
- <!-- no translation found for use_double_space_period (8781529969425082860) -->
- <skip />
- <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
- <skip />
- <!-- no translation found for auto_cap (1719746674854628252) -->
- <skip />
- <!-- no translation found for auto_cap_summary (7934452761022946874) -->
- <skip />
- <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
- <skip />
- <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
- <skip />
- <!-- no translation found for main_dictionary (4798763781818361168) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
- <skip />
- <!-- no translation found for auto_correction (7630720885194996950) -->
- <skip />
- <!-- no translation found for auto_correction_summary (5625751551134658006) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_very_aggeressive (3386782235540547678) -->
- <skip />
- <!-- no translation found for bigram_prediction (1084449187723948550) -->
- <skip />
- <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
- <skip />
- <!-- no translation found for gesture_input (826951152254563827) -->
- <skip />
- <!-- no translation found for gesture_input_summary (9180350639305731231) -->
- <skip />
- <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
- <skip />
- <!-- no translation found for added_word (8993883354622484372) -->
- <skip />
- <string name="label_go_key" msgid="1635148082137219148">"Áfram"</string>
- <string name="label_next_key" msgid="362972844525672568">"Næsta"</string>
- <string name="label_previous_key" msgid="1211868118071386787">"Fyrra"</string>
- <string name="label_done_key" msgid="2441578748772529288">"Lokið"</string>
- <string name="label_send_key" msgid="2815056534433717444">"Senda"</string>
- <!-- no translation found for label_pause_key (181098308428035340) -->
- <skip />
- <!-- no translation found for label_wait_key (6402152600878093134) -->
- <skip />
- <!-- no translation found for spoken_use_headphones (896961781287283493) -->
- <skip />
- <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
- <skip />
- <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
- <skip />
- <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
- <skip />
- <!-- no translation found for spoken_description_shift (244197883292549308) -->
- <skip />
- <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
- <skip />
- <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
- <skip />
- <!-- no translation found for spoken_description_delete (8740376944276199801) -->
- <skip />
- <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
- <skip />
- <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
- <skip />
- <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
- <skip />
- <!-- no translation found for spoken_description_settings (4627462689603838099) -->
- <skip />
- <!-- no translation found for spoken_description_tab (2667716002663482248) -->
- <skip />
- <!-- no translation found for spoken_description_space (2582521050049860859) -->
- <skip />
- <!-- no translation found for spoken_description_mic (615536748882611950) -->
- <skip />
- <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
- <skip />
- <!-- no translation found for spoken_description_return (8178083177238315647) -->
- <skip />
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
- <!-- no translation found for spoken_description_dot (40711082435231673) -->
- <skip />
- <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
- <skip />
- <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
- <skip />
- <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
- <skip />
- <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
- <skip />
- <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
- <skip />
- <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
- <skip />
- <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
- <skip />
- <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
- <skip />
- <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
- <skip />
- <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
- <skip />
- <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
- <skip />
- <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
- <skip />
- <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
- <skip />
- <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
- <skip />
- <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
- <skip />
- <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
- <skip />
- <!-- no translation found for voice_input (3583258583521397548) -->
- <skip />
- <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
- <skip />
- <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
- <skip />
- <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
- <skip />
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
- <!-- no translation found for language_selection_title (1651299598555326750) -->
- <skip />
- <!-- no translation found for send_feedback (1780431884109392046) -->
- <skip />
- <!-- no translation found for select_language (3693815588777926848) -->
- <skip />
- <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
- <skip />
- <!-- no translation found for has_dictionary (6071847973466625007) -->
- <skip />
- <!-- no translation found for prefs_enable_log (6620424505072963557) -->
- <skip />
- <!-- no translation found for prefs_description_log (7525225584555429211) -->
- <skip />
- <!-- no translation found for keyboard_layout (8451164783510487501) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
- <!-- no translation found for subtype_es_US (5583145191430180200) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
- <skip />
- <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
- <skip />
- <!-- no translation found for subtype_no_language (141420857808801746) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwertz (1177848172397202890) -->
- <skip />
- <!-- no translation found for subtype_no_language_azerty (8721460968141187394) -->
- <skip />
- <!-- no translation found for subtype_no_language_dvorak (3122976737669823935) -->
- <skip />
- <!-- no translation found for subtype_no_language_colemak (4205992994906097244) -->
- <skip />
- <!-- no translation found for subtype_no_language_pcqwerty (8840928374394180189) -->
- <skip />
- <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
- <skip />
- <!-- no translation found for add_style (6163126614514489951) -->
- <skip />
- <!-- no translation found for add (8299699805688017798) -->
- <skip />
- <!-- no translation found for remove (4486081658752944606) -->
- <skip />
- <!-- no translation found for save (7646738597196767214) -->
- <skip />
- <!-- no translation found for subtype_locale (8576443440738143764) -->
- <skip />
- <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
- <skip />
- <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
- <skip />
- <!-- no translation found for enable (5031294444630523247) -->
- <skip />
- <!-- no translation found for not_now (6172462888202790482) -->
- <skip />
- <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
- <skip />
- <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
- <skip />
- <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
- <skip />
- <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
- <skip />
- <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
- <skip />
- <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
- <skip />
- <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
- <skip />
- <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
- <skip />
- <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
- <skip />
- <!-- no translation found for error (8940763624668513648) -->
- <skip />
- <!-- no translation found for button_default (3988017840431881491) -->
- <skip />
- <!-- no translation found for setup_welcome_title (6112821709832031715) -->
- <skip />
- <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
- <skip />
- <!-- no translation found for setup_start_action (8936036460897347708) -->
- <skip />
- <!-- no translation found for setup_next_action (371821437915144603) -->
- <skip />
- <!-- no translation found for setup_steps_title (6400373034871816182) -->
- <skip />
- <!-- no translation found for setup_step1_title (3147967630253462315) -->
- <skip />
- <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
- <skip />
- <!-- no translation found for setup_step1_action (4366513534999901728) -->
- <skip />
- <!-- no translation found for setup_step2_title (6860725447906690594) -->
- <skip />
- <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
- <skip />
- <!-- no translation found for setup_step2_action (1660330307159824337) -->
- <skip />
- <!-- no translation found for setup_step3_title (3154757183631490281) -->
- <skip />
- <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
- <skip />
- <!-- no translation found for setup_step3_action (600879797256942259) -->
- <skip />
- <!-- no translation found for setup_finish_action (276559243409465389) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
- <skip />
- <!-- no translation found for app_name (6320102637491234792) -->
- <skip />
- <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
- <skip />
- <!-- no translation found for dictionary_service_name (6237472350693511448) -->
- <skip />
- <!-- no translation found for download_description (6014835283119198591) -->
- <skip />
- <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
- <skip />
- <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
- <skip />
- <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
- <skip />
- <!-- no translation found for user_dictionaries (3582332055892252845) -->
- <skip />
- <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
- <skip />
- <!-- no translation found for dictionary_available (4728975345815214218) -->
- <skip />
- <!-- no translation found for dictionary_downloading (2982650524622620983) -->
- <skip />
- <!-- no translation found for dictionary_installed (8081558343559342962) -->
- <skip />
- <!-- no translation found for dictionary_disabled (8950383219564621762) -->
- <skip />
- <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
- <skip />
- <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
- <skip />
- <!-- no translation found for check_for_updates_now (8087688440916388581) -->
- <skip />
- <!-- no translation found for last_update (730467549913588780) -->
- <skip />
- <!-- no translation found for message_updating (4457761393932375219) -->
- <skip />
- <!-- no translation found for message_loading (8689096636874758814) -->
- <skip />
- <!-- no translation found for main_dict_description (3072821352793492143) -->
- <skip />
- <!-- no translation found for cancel (6830980399865683324) -->
- <skip />
- <!-- no translation found for install_dict (180852772562189365) -->
- <skip />
- <!-- no translation found for cancel_download_dict (7843340278507019303) -->
- <skip />
- <!-- no translation found for delete_dict (756853268088330054) -->
- <skip />
- <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
- <skip />
- <!-- no translation found for download_over_metered (1643065851159409546) -->
- <skip />
- <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
- <skip />
- <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
- <skip />
- <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
- <skip />
- <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
- <skip />
- <!-- no translation found for version_text (2715354215568469385) -->
- <skip />
-</resources>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 81210ac..c8fedef 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Tastiera Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Impostazioni tastiera Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Controllo ortografico Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Impostazioni controllo ortografico Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opzioni inserimento"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Ricerca comandi di log"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cerca in nomi contatti"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostra sempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostra in modalità verticale"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Nascondi sempre"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Correzione automatica"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Barra spaziatrice/punteggiatura correggono parole con errori"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Off"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurazione di <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Abilita <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Seleziona \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" nelle impostazioni Lingua e immissione per autorizzarne l\'esecuzione sul dispositivo."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Abilita nelle impostazioni"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Passa a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Quindi seleziona \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" come metodo di immissione testo attivo."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Premi per esaminare e scaricare"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Download: i suggerimenti per <xliff:g id="LANGUAGE">%1$s</xliff:g> saranno pronti a breve."</string>
<string name="version_text" msgid="2715354215568469385">"Versione <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index d8e7042..b120f68 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"מקלדת Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"הגדרות מקלדת Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"בודק האיות של Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"הגדרות בודק האיות של Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"אפשרויות קלט"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"פקודות יומן מחקר"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"חפש שמות של אנשי קשר"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"הצג תמיד"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"הצג בפריסה לאורך"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"הסתר תמיד"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"תיקון אוטומטי"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"מקש הרווח ופיסוק מתקנים אוטומטית שגיאות הקלדה"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"כבוי"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"הגדרת <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"הפעל את <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"סמן את \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" בהגדרות השפה והקלט שלך. פעולה זו תאפשר לו לפעול במכשיר שלך."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"הפעל בהגדרות"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"עבור אל <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"בשלב הבא, בחר ב-\'<xliff:g id="APPLICATION_NAME">%s</xliff:g>\' כאמצעי הקלט הפעיל להזנת טקסט."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"לחץ כדי לעיין ולהוריד"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"מוריד: הצעות ב<xliff:g id="LANGUAGE">%1$s</xliff:g> יהיו מוכנות בקרוב."</string>
<string name="version_text" msgid="2715354215568469385">"גרסה <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index dc1c05f..ac52f31 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Androidキーボード(AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Androidキーボードの設定(AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Androidスペルチェッカー(AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Androidスペルチェッカーの設定(AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"入力オプション"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"ログコマンドの検索"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"連絡先名の検索"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"常に表示"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"縦向きで表示"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"常に非表示"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"自動修正"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"誤入力をスペースまたは句読点キーで修正する"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"OFF"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>の設定"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>の有効化"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"[言語と入力]で[<xliff:g id="APPLICATION_NAME">%s</xliff:g>]のチェックボックスをオンにしてください。これで、端末でアプリを実行できるようになります。"</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"設定での有効化"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>への切り替え"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"次に、有効なテキスト入力方法として「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」を選択します。"</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"押すと確認/ダウンロードできます"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"ダウンロード中: <xliff:g id="LANGUAGE">%1$s</xliff:g>の入力候補をまもなく利用できます。"</string>
<string name="version_text" msgid="2715354215568469385">"バージョン<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-ka/strings.xml b/java/res/values-ka/strings.xml
deleted file mode 100644
index 98da8ee..0000000
--- a/java/res/values-ka/strings.xml
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
-**
-** Copyright 2008, 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.
-*/
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for aosp_android_keyboard_ime_name (8250992613616792321) -->
- <skip />
- <!-- no translation found for aosp_android_keyboard_ime_settings (423615877174850267) -->
- <skip />
- <!-- no translation found for aosp_spell_checker_service_name (511950477199948048) -->
- <skip />
- <!-- no translation found for aosp_android_spell_checker_service_settings (2970535894327288421) -->
- <skip />
- <!-- no translation found for english_ime_input_options (3909945612939668554) -->
- <skip />
- <!-- no translation found for english_ime_research_log (8492602295696577851) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
- <skip />
- <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
- <skip />
- <!-- no translation found for sound_on_keypress (6093592297198243644) -->
- <skip />
- <!-- no translation found for popup_on_keypress (123894815723512944) -->
- <skip />
- <!-- no translation found for general_category (1859088467017573195) -->
- <skip />
- <!-- no translation found for correction_category (2236750915056607613) -->
- <skip />
- <!-- no translation found for gesture_typing_category (497263612130532630) -->
- <skip />
- <!-- no translation found for misc_category (6894192814868233453) -->
- <skip />
- <!-- no translation found for advanced_settings (362895144495591463) -->
- <skip />
- <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
- <skip />
- <!-- no translation found for show_language_switch_key (5915478828318774384) -->
- <skip />
- <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
- <skip />
- <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
- <skip />
- <!-- no translation found for use_contacts_dict (4435317977804180815) -->
- <skip />
- <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
- <skip />
- <!-- no translation found for use_double_space_period (8781529969425082860) -->
- <skip />
- <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
- <skip />
- <!-- no translation found for auto_cap (1719746674854628252) -->
- <skip />
- <!-- no translation found for auto_cap_summary (7934452761022946874) -->
- <skip />
- <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
- <skip />
- <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
- <skip />
- <!-- no translation found for main_dictionary (4798763781818361168) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
- <skip />
- <!-- no translation found for auto_correction (7630720885194996950) -->
- <skip />
- <!-- no translation found for auto_correction_summary (5625751551134658006) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_very_aggeressive (3386782235540547678) -->
- <skip />
- <!-- no translation found for bigram_prediction (1084449187723948550) -->
- <skip />
- <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
- <skip />
- <!-- no translation found for gesture_input (826951152254563827) -->
- <skip />
- <!-- no translation found for gesture_input_summary (9180350639305731231) -->
- <skip />
- <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
- <skip />
- <!-- no translation found for added_word (8993883354622484372) -->
- <skip />
- <string name="label_go_key" msgid="1635148082137219148">"გადასვლა"</string>
- <string name="label_next_key" msgid="362972844525672568">"შემდეგი"</string>
- <string name="label_previous_key" msgid="1211868118071386787">"წინა"</string>
- <string name="label_done_key" msgid="2441578748772529288">"შესრულებულია"</string>
- <string name="label_send_key" msgid="2815056534433717444">"გაგზავნა"</string>
- <!-- no translation found for label_pause_key (181098308428035340) -->
- <skip />
- <!-- no translation found for label_wait_key (6402152600878093134) -->
- <skip />
- <!-- no translation found for spoken_use_headphones (896961781287283493) -->
- <skip />
- <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
- <skip />
- <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
- <skip />
- <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
- <skip />
- <!-- no translation found for spoken_description_shift (244197883292549308) -->
- <skip />
- <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
- <skip />
- <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
- <skip />
- <!-- no translation found for spoken_description_delete (8740376944276199801) -->
- <skip />
- <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
- <skip />
- <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
- <skip />
- <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
- <skip />
- <!-- no translation found for spoken_description_settings (4627462689603838099) -->
- <skip />
- <!-- no translation found for spoken_description_tab (2667716002663482248) -->
- <skip />
- <!-- no translation found for spoken_description_space (2582521050049860859) -->
- <skip />
- <!-- no translation found for spoken_description_mic (615536748882611950) -->
- <skip />
- <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
- <skip />
- <!-- no translation found for spoken_description_return (8178083177238315647) -->
- <skip />
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
- <!-- no translation found for spoken_description_dot (40711082435231673) -->
- <skip />
- <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
- <skip />
- <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
- <skip />
- <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
- <skip />
- <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
- <skip />
- <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
- <skip />
- <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
- <skip />
- <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
- <skip />
- <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
- <skip />
- <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
- <skip />
- <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
- <skip />
- <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
- <skip />
- <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
- <skip />
- <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
- <skip />
- <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
- <skip />
- <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
- <skip />
- <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
- <skip />
- <!-- no translation found for voice_input (3583258583521397548) -->
- <skip />
- <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
- <skip />
- <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
- <skip />
- <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
- <skip />
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
- <!-- no translation found for language_selection_title (1651299598555326750) -->
- <skip />
- <!-- no translation found for send_feedback (1780431884109392046) -->
- <skip />
- <!-- no translation found for select_language (3693815588777926848) -->
- <skip />
- <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
- <skip />
- <!-- no translation found for has_dictionary (6071847973466625007) -->
- <skip />
- <!-- no translation found for prefs_enable_log (6620424505072963557) -->
- <skip />
- <!-- no translation found for prefs_description_log (7525225584555429211) -->
- <skip />
- <!-- no translation found for keyboard_layout (8451164783510487501) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
- <!-- no translation found for subtype_es_US (5583145191430180200) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
- <skip />
- <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
- <skip />
- <!-- no translation found for subtype_no_language (141420857808801746) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwertz (1177848172397202890) -->
- <skip />
- <!-- no translation found for subtype_no_language_azerty (8721460968141187394) -->
- <skip />
- <!-- no translation found for subtype_no_language_dvorak (3122976737669823935) -->
- <skip />
- <!-- no translation found for subtype_no_language_colemak (4205992994906097244) -->
- <skip />
- <!-- no translation found for subtype_no_language_pcqwerty (8840928374394180189) -->
- <skip />
- <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
- <skip />
- <!-- no translation found for add_style (6163126614514489951) -->
- <skip />
- <!-- no translation found for add (8299699805688017798) -->
- <skip />
- <!-- no translation found for remove (4486081658752944606) -->
- <skip />
- <!-- no translation found for save (7646738597196767214) -->
- <skip />
- <!-- no translation found for subtype_locale (8576443440738143764) -->
- <skip />
- <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
- <skip />
- <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
- <skip />
- <!-- no translation found for enable (5031294444630523247) -->
- <skip />
- <!-- no translation found for not_now (6172462888202790482) -->
- <skip />
- <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
- <skip />
- <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
- <skip />
- <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
- <skip />
- <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
- <skip />
- <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
- <skip />
- <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
- <skip />
- <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
- <skip />
- <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
- <skip />
- <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
- <skip />
- <!-- no translation found for error (8940763624668513648) -->
- <skip />
- <!-- no translation found for button_default (3988017840431881491) -->
- <skip />
- <!-- no translation found for setup_welcome_title (6112821709832031715) -->
- <skip />
- <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
- <skip />
- <!-- no translation found for setup_start_action (8936036460897347708) -->
- <skip />
- <!-- no translation found for setup_next_action (371821437915144603) -->
- <skip />
- <!-- no translation found for setup_steps_title (6400373034871816182) -->
- <skip />
- <!-- no translation found for setup_step1_title (3147967630253462315) -->
- <skip />
- <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
- <skip />
- <!-- no translation found for setup_step1_action (4366513534999901728) -->
- <skip />
- <!-- no translation found for setup_step2_title (6860725447906690594) -->
- <skip />
- <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
- <skip />
- <!-- no translation found for setup_step2_action (1660330307159824337) -->
- <skip />
- <!-- no translation found for setup_step3_title (3154757183631490281) -->
- <skip />
- <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
- <skip />
- <!-- no translation found for setup_step3_action (600879797256942259) -->
- <skip />
- <!-- no translation found for setup_finish_action (276559243409465389) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
- <skip />
- <!-- no translation found for app_name (6320102637491234792) -->
- <skip />
- <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
- <skip />
- <!-- no translation found for dictionary_service_name (6237472350693511448) -->
- <skip />
- <!-- no translation found for download_description (6014835283119198591) -->
- <skip />
- <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
- <skip />
- <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
- <skip />
- <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
- <skip />
- <!-- no translation found for user_dictionaries (3582332055892252845) -->
- <skip />
- <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
- <skip />
- <!-- no translation found for dictionary_available (4728975345815214218) -->
- <skip />
- <!-- no translation found for dictionary_downloading (2982650524622620983) -->
- <skip />
- <!-- no translation found for dictionary_installed (8081558343559342962) -->
- <skip />
- <!-- no translation found for dictionary_disabled (8950383219564621762) -->
- <skip />
- <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
- <skip />
- <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
- <skip />
- <!-- no translation found for check_for_updates_now (8087688440916388581) -->
- <skip />
- <!-- no translation found for last_update (730467549913588780) -->
- <skip />
- <!-- no translation found for message_updating (4457761393932375219) -->
- <skip />
- <!-- no translation found for message_loading (8689096636874758814) -->
- <skip />
- <!-- no translation found for main_dict_description (3072821352793492143) -->
- <skip />
- <!-- no translation found for cancel (6830980399865683324) -->
- <skip />
- <!-- no translation found for install_dict (180852772562189365) -->
- <skip />
- <!-- no translation found for cancel_download_dict (7843340278507019303) -->
- <skip />
- <!-- no translation found for delete_dict (756853268088330054) -->
- <skip />
- <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
- <skip />
- <!-- no translation found for download_over_metered (1643065851159409546) -->
- <skip />
- <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
- <skip />
- <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
- <skip />
- <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
- <skip />
- <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
- <skip />
- <!-- no translation found for version_text (2715354215568469385) -->
- <skip />
-</resources>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index 46cba2a..79f8090 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android 키보드(AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android 키보드 설정(AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android 맞춤법 검사기(AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android 맞춤법 검사기 설정(AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"입력 옵션"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"로그 명령 탐색"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"연락처 이름 조회"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"항상 표시"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"세로 모드로 표시"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"항상 숨기기"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"자동 수정"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"스페이스바와 문장부호 키를 사용하면 오타가 자동으로 교정됩니다."</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"사용 안함"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> 설정"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> 사용 설정"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"언어 및 입력 설정에서 \'<xliff:g id="APPLICATION_NAME">%s</xliff:g>\'을(를) 확인하세요. 애플리케이션을 기기에서 실행할 수 있도록 승인합니다."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"\'설정\'에서 사용 설정"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>(으)로 전환"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"그런 다음, 텍스트 입력 방법으로 \'<xliff:g id="APPLICATION_NAME">%s</xliff:g>\'을(를) 선택합니다."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"검토하고 다운로드하려면 누르세요."</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"다운로드 중: <xliff:g id="LANGUAGE">%1$s</xliff:g>에 대한 추천항목이 곧 준비됩니다."</string>
<string name="version_text" msgid="2715354215568469385">"버전 <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values/setup-dimens.xml b/java/res/values-land/setup-dimens-small-phone-land.xml
similarity index 60%
copy from java/res/values/setup-dimens.xml
copy to java/res/values-land/setup-dimens-small-phone-land.xml
index dac5440..63f4661 100644
--- a/java/res/values/setup-dimens.xml
+++ b/java/res/values-land/setup-dimens-small-phone-land.xml
@@ -15,19 +15,21 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">46sp</dimen>
- <dimen name="setup_welcome_description_text_size">26sp</dimen>
- <dimen name="setup_step_bullet_text_size">22sp</dimen>
- <dimen name="setup_step_indicator_height">24dp</dimen>
- <dimen name="setup_step_title_text_size">22sp</dimen>
+ <!-- Setup wizard dimensions for small-phone/landscape. -->
+ <dimen name="setup_title_text_size">36sp</dimen>
+ <dimen name="setup_welcome_description_text_size">18sp</dimen>
+ <dimen name="setup_step_bullet_text_size">18sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">18dp</dimen>
+ <dimen name="setup_step_indicator_height">18dp</dimen>
+ <dimen name="setup_step_title_text_size">18sp</dimen>
<dimen name="setup_step_instruction_text_size">14sp</dimen>
- <dimen name="setup_step_action_text_size">18sp</dimen>
- <dimen name="setup_vertical_padding">16dp</dimen>
- <dimen name="setup_horizontal_padding">16dp</dimen>
- <dimen name="setup_step_action_height">48dp</dimen>
- <dimen name="setup_step_horizontal_padding">24dp</dimen>
- <dimen name="setup_step_horizontal_padding_half">12dp</dimen>
- <dimen name="setup_step_vertical_padding">16dp</dimen>
+ <dimen name="setup_step_action_text_size">16sp</dimen>
+ <dimen name="setup_vertical_padding">12dp</dimen>
+ <dimen name="setup_horizontal_padding">12dp</dimen>
+ <dimen name="setup_step_action_height">42dp</dimen>
+ <dimen name="setup_step_horizontal_padding">20dp</dimen>
+ <dimen name="setup_step_horizontal_padding_half">10dp</dimen>
+ <dimen name="setup_step_vertical_padding">12dp</dimen>
<dimen name="setup_step_horizontal_line_height">2dp</dimen>
<integer name="setup_title_weight_in_screen">40</integer>
<integer name="setup_body_weight_in_screen">60</integer>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index e7220e4..35e6b92 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"„Android“ klaviatūra (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"„Android“ klaviatūros nustatymai (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"„Android“ rašybos tikrinimo programa (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"„Android“ rašybos tikrinimo programos nustatymai (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Įvesties parinktys"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Tyrinėti žurnalo komandas"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontaktų vardų paieška"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Visada rodyti"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Rodyti portreto režimu"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Visada slėpti"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automatinis taisymas"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Tarpo kl. ir skyr. ženkl. aut. išt. neteis. įv. žodž."</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Išjungta"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"„<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ sąranka"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Įgalinkite „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Skiltyje „Kalbos ir įvesties nustatymai“ žr. „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ (progr. bus įgal. veikti įr.)."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Įgalinti nustatymuose"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Perjungimas į „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Toliau pasirinkite „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ kaip aktyvų teksto įvesties metodą."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Paspauskite, kad peržiūrėtumėte ir atsisiųstumėte"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Atsisiunčiama. Netrukus bus galimi <xliff:g id="LANGUAGE">%1$s</xliff:g> pasiūlymai."</string>
<string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> versija"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 7063b45..a8976fd 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android tastatūra (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android tastatūras iestatījumi (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android pareizrakstības pārbaudītājs (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android pareizrakstības pārbaudītāja iestatījumi (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Ievades opcijas"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Izpētes žurnāla komandas"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Meklēt kontaktp. vārdus"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vienmēr rādīt"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Rādīt portreta režīmā"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vienmēr slēpt"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automātiska labošana"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Atstarpes taustiņš un interpunkcija; automātiska kļūdainu vārdu labošana"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Izslēgta"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Lietojumprogrammas <xliff:g id="APPLICATION_NAME">%s</xliff:g> iestatīšana"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Lietojumprogrammas <xliff:g id="APPLICATION_NAME">%s</xliff:g> iespējošana"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Valodas un ievades iestatījumos atzīmējiet “<xliff:g id="APPLICATION_NAME">%s</xliff:g>”, autorizējot tās palaišanu ierīcē."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Iespējot iestatījumos"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Pārslēgšanās uz lietojumprogrammu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Pēc tam atlasiet “<xliff:g id="APPLICATION_NAME">%s</xliff:g>” kā aktīvo ievades metodi."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Nospiediet, lai pārskatītu un lejupielādētu"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Notiek lejupielāde. Drīz būs pieejami ieteikumi šādai valodai: <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Versija <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-mk/strings.xml b/java/res/values-mk/strings.xml
deleted file mode 100644
index c435f4e..0000000
--- a/java/res/values-mk/strings.xml
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
-**
-** Copyright 2008, 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.
-*/
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for aosp_android_keyboard_ime_name (8250992613616792321) -->
- <skip />
- <!-- no translation found for aosp_android_keyboard_ime_settings (423615877174850267) -->
- <skip />
- <!-- no translation found for aosp_spell_checker_service_name (511950477199948048) -->
- <skip />
- <!-- no translation found for aosp_android_spell_checker_service_settings (2970535894327288421) -->
- <skip />
- <!-- no translation found for english_ime_input_options (3909945612939668554) -->
- <skip />
- <!-- no translation found for english_ime_research_log (8492602295696577851) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
- <skip />
- <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
- <skip />
- <!-- no translation found for sound_on_keypress (6093592297198243644) -->
- <skip />
- <!-- no translation found for popup_on_keypress (123894815723512944) -->
- <skip />
- <!-- no translation found for general_category (1859088467017573195) -->
- <skip />
- <!-- no translation found for correction_category (2236750915056607613) -->
- <skip />
- <!-- no translation found for gesture_typing_category (497263612130532630) -->
- <skip />
- <!-- no translation found for misc_category (6894192814868233453) -->
- <skip />
- <!-- no translation found for advanced_settings (362895144495591463) -->
- <skip />
- <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
- <skip />
- <!-- no translation found for show_language_switch_key (5915478828318774384) -->
- <skip />
- <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
- <skip />
- <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
- <skip />
- <!-- no translation found for use_contacts_dict (4435317977804180815) -->
- <skip />
- <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
- <skip />
- <!-- no translation found for use_double_space_period (8781529969425082860) -->
- <skip />
- <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
- <skip />
- <!-- no translation found for auto_cap (1719746674854628252) -->
- <skip />
- <!-- no translation found for auto_cap_summary (7934452761022946874) -->
- <skip />
- <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
- <skip />
- <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
- <skip />
- <!-- no translation found for main_dictionary (4798763781818361168) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
- <skip />
- <!-- no translation found for auto_correction (7630720885194996950) -->
- <skip />
- <!-- no translation found for auto_correction_summary (5625751551134658006) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_very_aggeressive (3386782235540547678) -->
- <skip />
- <!-- no translation found for bigram_prediction (1084449187723948550) -->
- <skip />
- <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
- <skip />
- <!-- no translation found for gesture_input (826951152254563827) -->
- <skip />
- <!-- no translation found for gesture_input_summary (9180350639305731231) -->
- <skip />
- <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
- <skip />
- <!-- no translation found for added_word (8993883354622484372) -->
- <skip />
- <string name="label_go_key" msgid="1635148082137219148">"Оди"</string>
- <string name="label_next_key" msgid="362972844525672568">"Следно"</string>
- <string name="label_previous_key" msgid="1211868118071386787">"Претходно"</string>
- <string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
- <string name="label_send_key" msgid="2815056534433717444">"Испрати"</string>
- <!-- no translation found for label_pause_key (181098308428035340) -->
- <skip />
- <!-- no translation found for label_wait_key (6402152600878093134) -->
- <skip />
- <!-- no translation found for spoken_use_headphones (896961781287283493) -->
- <skip />
- <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
- <skip />
- <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
- <skip />
- <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
- <skip />
- <!-- no translation found for spoken_description_shift (244197883292549308) -->
- <skip />
- <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
- <skip />
- <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
- <skip />
- <!-- no translation found for spoken_description_delete (8740376944276199801) -->
- <skip />
- <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
- <skip />
- <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
- <skip />
- <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
- <skip />
- <!-- no translation found for spoken_description_settings (4627462689603838099) -->
- <skip />
- <!-- no translation found for spoken_description_tab (2667716002663482248) -->
- <skip />
- <!-- no translation found for spoken_description_space (2582521050049860859) -->
- <skip />
- <!-- no translation found for spoken_description_mic (615536748882611950) -->
- <skip />
- <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
- <skip />
- <!-- no translation found for spoken_description_return (8178083177238315647) -->
- <skip />
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
- <!-- no translation found for spoken_description_dot (40711082435231673) -->
- <skip />
- <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
- <skip />
- <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
- <skip />
- <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
- <skip />
- <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
- <skip />
- <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
- <skip />
- <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
- <skip />
- <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
- <skip />
- <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
- <skip />
- <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
- <skip />
- <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
- <skip />
- <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
- <skip />
- <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
- <skip />
- <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
- <skip />
- <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
- <skip />
- <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
- <skip />
- <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
- <skip />
- <!-- no translation found for voice_input (3583258583521397548) -->
- <skip />
- <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
- <skip />
- <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
- <skip />
- <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
- <skip />
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
- <!-- no translation found for language_selection_title (1651299598555326750) -->
- <skip />
- <!-- no translation found for send_feedback (1780431884109392046) -->
- <skip />
- <!-- no translation found for select_language (3693815588777926848) -->
- <skip />
- <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
- <skip />
- <!-- no translation found for has_dictionary (6071847973466625007) -->
- <skip />
- <!-- no translation found for prefs_enable_log (6620424505072963557) -->
- <skip />
- <!-- no translation found for prefs_description_log (7525225584555429211) -->
- <skip />
- <!-- no translation found for keyboard_layout (8451164783510487501) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
- <!-- no translation found for subtype_es_US (5583145191430180200) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
- <skip />
- <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
- <skip />
- <!-- no translation found for subtype_no_language (141420857808801746) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwertz (1177848172397202890) -->
- <skip />
- <!-- no translation found for subtype_no_language_azerty (8721460968141187394) -->
- <skip />
- <!-- no translation found for subtype_no_language_dvorak (3122976737669823935) -->
- <skip />
- <!-- no translation found for subtype_no_language_colemak (4205992994906097244) -->
- <skip />
- <!-- no translation found for subtype_no_language_pcqwerty (8840928374394180189) -->
- <skip />
- <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
- <skip />
- <!-- no translation found for add_style (6163126614514489951) -->
- <skip />
- <!-- no translation found for add (8299699805688017798) -->
- <skip />
- <!-- no translation found for remove (4486081658752944606) -->
- <skip />
- <!-- no translation found for save (7646738597196767214) -->
- <skip />
- <!-- no translation found for subtype_locale (8576443440738143764) -->
- <skip />
- <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
- <skip />
- <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
- <skip />
- <!-- no translation found for enable (5031294444630523247) -->
- <skip />
- <!-- no translation found for not_now (6172462888202790482) -->
- <skip />
- <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
- <skip />
- <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
- <skip />
- <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
- <skip />
- <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
- <skip />
- <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
- <skip />
- <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
- <skip />
- <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
- <skip />
- <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
- <skip />
- <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
- <skip />
- <!-- no translation found for error (8940763624668513648) -->
- <skip />
- <!-- no translation found for button_default (3988017840431881491) -->
- <skip />
- <!-- no translation found for setup_welcome_title (6112821709832031715) -->
- <skip />
- <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
- <skip />
- <!-- no translation found for setup_start_action (8936036460897347708) -->
- <skip />
- <!-- no translation found for setup_next_action (371821437915144603) -->
- <skip />
- <!-- no translation found for setup_steps_title (6400373034871816182) -->
- <skip />
- <!-- no translation found for setup_step1_title (3147967630253462315) -->
- <skip />
- <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
- <skip />
- <!-- no translation found for setup_step1_action (4366513534999901728) -->
- <skip />
- <!-- no translation found for setup_step2_title (6860725447906690594) -->
- <skip />
- <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
- <skip />
- <!-- no translation found for setup_step2_action (1660330307159824337) -->
- <skip />
- <!-- no translation found for setup_step3_title (3154757183631490281) -->
- <skip />
- <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
- <skip />
- <!-- no translation found for setup_step3_action (600879797256942259) -->
- <skip />
- <!-- no translation found for setup_finish_action (276559243409465389) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
- <skip />
- <!-- no translation found for app_name (6320102637491234792) -->
- <skip />
- <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
- <skip />
- <!-- no translation found for dictionary_service_name (6237472350693511448) -->
- <skip />
- <!-- no translation found for download_description (6014835283119198591) -->
- <skip />
- <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
- <skip />
- <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
- <skip />
- <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
- <skip />
- <!-- no translation found for user_dictionaries (3582332055892252845) -->
- <skip />
- <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
- <skip />
- <!-- no translation found for dictionary_available (4728975345815214218) -->
- <skip />
- <!-- no translation found for dictionary_downloading (2982650524622620983) -->
- <skip />
- <!-- no translation found for dictionary_installed (8081558343559342962) -->
- <skip />
- <!-- no translation found for dictionary_disabled (8950383219564621762) -->
- <skip />
- <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
- <skip />
- <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
- <skip />
- <!-- no translation found for check_for_updates_now (8087688440916388581) -->
- <skip />
- <!-- no translation found for last_update (730467549913588780) -->
- <skip />
- <!-- no translation found for message_updating (4457761393932375219) -->
- <skip />
- <!-- no translation found for message_loading (8689096636874758814) -->
- <skip />
- <!-- no translation found for main_dict_description (3072821352793492143) -->
- <skip />
- <!-- no translation found for cancel (6830980399865683324) -->
- <skip />
- <!-- no translation found for install_dict (180852772562189365) -->
- <skip />
- <!-- no translation found for cancel_download_dict (7843340278507019303) -->
- <skip />
- <!-- no translation found for delete_dict (756853268088330054) -->
- <skip />
- <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
- <skip />
- <!-- no translation found for download_over_metered (1643065851159409546) -->
- <skip />
- <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
- <skip />
- <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
- <skip />
- <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
- <skip />
- <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
- <skip />
- <!-- no translation found for version_text (2715354215568469385) -->
- <skip />
-</resources>
diff --git a/java/res/values-mn/strings.xml b/java/res/values-mn/strings.xml
deleted file mode 100644
index 04fc218..0000000
--- a/java/res/values-mn/strings.xml
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
-**
-** Copyright 2008, 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.
-*/
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for aosp_android_keyboard_ime_name (8250992613616792321) -->
- <skip />
- <!-- no translation found for aosp_android_keyboard_ime_settings (423615877174850267) -->
- <skip />
- <!-- no translation found for aosp_spell_checker_service_name (511950477199948048) -->
- <skip />
- <!-- no translation found for aosp_android_spell_checker_service_settings (2970535894327288421) -->
- <skip />
- <!-- no translation found for english_ime_input_options (3909945612939668554) -->
- <skip />
- <!-- no translation found for english_ime_research_log (8492602295696577851) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
- <skip />
- <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
- <skip />
- <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
- <skip />
- <!-- no translation found for sound_on_keypress (6093592297198243644) -->
- <skip />
- <!-- no translation found for popup_on_keypress (123894815723512944) -->
- <skip />
- <!-- no translation found for general_category (1859088467017573195) -->
- <skip />
- <!-- no translation found for correction_category (2236750915056607613) -->
- <skip />
- <!-- no translation found for gesture_typing_category (497263612130532630) -->
- <skip />
- <!-- no translation found for misc_category (6894192814868233453) -->
- <skip />
- <!-- no translation found for advanced_settings (362895144495591463) -->
- <skip />
- <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
- <skip />
- <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
- <skip />
- <!-- no translation found for show_language_switch_key (5915478828318774384) -->
- <skip />
- <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
- <skip />
- <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
- <skip />
- <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
- <skip />
- <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
- <skip />
- <!-- no translation found for use_contacts_dict (4435317977804180815) -->
- <skip />
- <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
- <skip />
- <!-- no translation found for use_double_space_period (8781529969425082860) -->
- <skip />
- <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
- <skip />
- <!-- no translation found for auto_cap (1719746674854628252) -->
- <skip />
- <!-- no translation found for auto_cap_summary (7934452761022946874) -->
- <skip />
- <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
- <skip />
- <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
- <skip />
- <!-- no translation found for main_dictionary (4798763781818361168) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
- <skip />
- <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
- <skip />
- <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
- <skip />
- <!-- no translation found for auto_correction (7630720885194996950) -->
- <skip />
- <!-- no translation found for auto_correction_summary (5625751551134658006) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
- <skip />
- <!-- no translation found for auto_correction_threshold_mode_very_aggeressive (3386782235540547678) -->
- <skip />
- <!-- no translation found for bigram_prediction (1084449187723948550) -->
- <skip />
- <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
- <skip />
- <!-- no translation found for gesture_input (826951152254563827) -->
- <skip />
- <!-- no translation found for gesture_input_summary (9180350639305731231) -->
- <skip />
- <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
- <skip />
- <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
- <skip />
- <!-- no translation found for added_word (8993883354622484372) -->
- <skip />
- <string name="label_go_key" msgid="1635148082137219148">"Очих"</string>
- <string name="label_next_key" msgid="362972844525672568">"Дараагийн"</string>
- <string name="label_previous_key" msgid="1211868118071386787">"Өмнөх"</string>
- <string name="label_done_key" msgid="2441578748772529288">"Хийгдлээ"</string>
- <string name="label_send_key" msgid="2815056534433717444">"Илгээх"</string>
- <!-- no translation found for label_pause_key (181098308428035340) -->
- <skip />
- <!-- no translation found for label_wait_key (6402152600878093134) -->
- <skip />
- <!-- no translation found for spoken_use_headphones (896961781287283493) -->
- <skip />
- <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
- <skip />
- <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
- <skip />
- <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
- <skip />
- <!-- no translation found for spoken_description_shift (244197883292549308) -->
- <skip />
- <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
- <skip />
- <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
- <skip />
- <!-- no translation found for spoken_description_delete (8740376944276199801) -->
- <skip />
- <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
- <skip />
- <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
- <skip />
- <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
- <skip />
- <!-- no translation found for spoken_description_settings (4627462689603838099) -->
- <skip />
- <!-- no translation found for spoken_description_tab (2667716002663482248) -->
- <skip />
- <!-- no translation found for spoken_description_space (2582521050049860859) -->
- <skip />
- <!-- no translation found for spoken_description_mic (615536748882611950) -->
- <skip />
- <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
- <skip />
- <!-- no translation found for spoken_description_return (8178083177238315647) -->
- <skip />
- <!-- no translation found for spoken_description_search (1247236163755920808) -->
- <skip />
- <!-- no translation found for spoken_description_dot (40711082435231673) -->
- <skip />
- <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
- <skip />
- <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
- <skip />
- <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
- <skip />
- <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
- <skip />
- <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
- <skip />
- <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
- <skip />
- <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
- <skip />
- <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
- <skip />
- <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
- <skip />
- <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
- <skip />
- <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
- <skip />
- <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
- <skip />
- <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
- <skip />
- <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
- <skip />
- <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
- <skip />
- <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
- <skip />
- <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
- <skip />
- <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
- <skip />
- <!-- no translation found for voice_input (3583258583521397548) -->
- <skip />
- <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
- <skip />
- <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
- <skip />
- <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
- <skip />
- <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
- <skip />
- <!-- no translation found for configure_input_method (373356270290742459) -->
- <skip />
- <!-- no translation found for language_selection_title (1651299598555326750) -->
- <skip />
- <!-- no translation found for send_feedback (1780431884109392046) -->
- <skip />
- <!-- no translation found for select_language (3693815588777926848) -->
- <skip />
- <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
- <skip />
- <!-- no translation found for has_dictionary (6071847973466625007) -->
- <skip />
- <!-- no translation found for prefs_enable_log (6620424505072963557) -->
- <skip />
- <!-- no translation found for prefs_description_log (7525225584555429211) -->
- <skip />
- <!-- no translation found for keyboard_layout (8451164783510487501) -->
- <skip />
- <!-- no translation found for subtype_en_GB (88170601942311355) -->
- <skip />
- <!-- no translation found for subtype_en_US (6160452336634534239) -->
- <skip />
- <!-- no translation found for subtype_es_US (5583145191430180200) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
- <skip />
- <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
- <skip />
- <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
- <skip />
- <!-- no translation found for subtype_no_language (141420857808801746) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
- <!-- no translation found for subtype_no_language_qwertz (1177848172397202890) -->
- <skip />
- <!-- no translation found for subtype_no_language_azerty (8721460968141187394) -->
- <skip />
- <!-- no translation found for subtype_no_language_dvorak (3122976737669823935) -->
- <skip />
- <!-- no translation found for subtype_no_language_colemak (4205992994906097244) -->
- <skip />
- <!-- no translation found for subtype_no_language_pcqwerty (8840928374394180189) -->
- <skip />
- <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
- <skip />
- <!-- no translation found for add_style (6163126614514489951) -->
- <skip />
- <!-- no translation found for add (8299699805688017798) -->
- <skip />
- <!-- no translation found for remove (4486081658752944606) -->
- <skip />
- <!-- no translation found for save (7646738597196767214) -->
- <skip />
- <!-- no translation found for subtype_locale (8576443440738143764) -->
- <skip />
- <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
- <skip />
- <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
- <skip />
- <!-- no translation found for enable (5031294444630523247) -->
- <skip />
- <!-- no translation found for not_now (6172462888202790482) -->
- <skip />
- <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
- <skip />
- <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
- <skip />
- <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
- <skip />
- <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
- <skip />
- <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
- <skip />
- <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
- <skip />
- <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
- <skip />
- <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
- <skip />
- <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
- <skip />
- <!-- no translation found for error (8940763624668513648) -->
- <skip />
- <!-- no translation found for button_default (3988017840431881491) -->
- <skip />
- <!-- no translation found for setup_welcome_title (6112821709832031715) -->
- <skip />
- <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
- <skip />
- <!-- no translation found for setup_start_action (8936036460897347708) -->
- <skip />
- <!-- no translation found for setup_next_action (371821437915144603) -->
- <skip />
- <!-- no translation found for setup_steps_title (6400373034871816182) -->
- <skip />
- <!-- no translation found for setup_step1_title (3147967630253462315) -->
- <skip />
- <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
- <skip />
- <!-- no translation found for setup_step1_action (4366513534999901728) -->
- <skip />
- <!-- no translation found for setup_step2_title (6860725447906690594) -->
- <skip />
- <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
- <skip />
- <!-- no translation found for setup_step2_action (1660330307159824337) -->
- <skip />
- <!-- no translation found for setup_step3_title (3154757183631490281) -->
- <skip />
- <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
- <skip />
- <!-- no translation found for setup_step3_action (600879797256942259) -->
- <skip />
- <!-- no translation found for setup_finish_action (276559243409465389) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
- <skip />
- <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
- <skip />
- <!-- no translation found for app_name (6320102637491234792) -->
- <skip />
- <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
- <skip />
- <!-- no translation found for dictionary_service_name (6237472350693511448) -->
- <skip />
- <!-- no translation found for download_description (6014835283119198591) -->
- <skip />
- <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
- <skip />
- <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
- <skip />
- <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
- <skip />
- <!-- no translation found for user_dictionaries (3582332055892252845) -->
- <skip />
- <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
- <skip />
- <!-- no translation found for dictionary_available (4728975345815214218) -->
- <skip />
- <!-- no translation found for dictionary_downloading (2982650524622620983) -->
- <skip />
- <!-- no translation found for dictionary_installed (8081558343559342962) -->
- <skip />
- <!-- no translation found for dictionary_disabled (8950383219564621762) -->
- <skip />
- <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
- <skip />
- <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
- <skip />
- <!-- no translation found for check_for_updates_now (8087688440916388581) -->
- <skip />
- <!-- no translation found for last_update (730467549913588780) -->
- <skip />
- <!-- no translation found for message_updating (4457761393932375219) -->
- <skip />
- <!-- no translation found for message_loading (8689096636874758814) -->
- <skip />
- <!-- no translation found for main_dict_description (3072821352793492143) -->
- <skip />
- <!-- no translation found for cancel (6830980399865683324) -->
- <skip />
- <!-- no translation found for install_dict (180852772562189365) -->
- <skip />
- <!-- no translation found for cancel_download_dict (7843340278507019303) -->
- <skip />
- <!-- no translation found for delete_dict (756853268088330054) -->
- <skip />
- <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
- <skip />
- <!-- no translation found for download_over_metered (1643065851159409546) -->
- <skip />
- <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
- <skip />
- <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
- <skip />
- <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
- <skip />
- <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
- <skip />
- <!-- no translation found for version_text (2715354215568469385) -->
- <skip />
-</resources>
diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml
index 690f072..d9dd8e4 100644
--- a/java/res/values-ms/strings.xml
+++ b/java/res/values-ms/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Papan kekunci Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Tetapan Papan Kekunci Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Penyemak Ejaan Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Tetapan Penyemak Ejaan Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Pilihan input"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Arahan Log Penyelidikan"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cari nama kenalan"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Sentiasa tunjukkan"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Tunjukkan dalam mod potret"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Sentiasa sembunyikan"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Auto pembetulan"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Bar ruang dan tanda baca secara automatik membetulkan perkataan yang ditaip salah"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Matikan"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Menyediakan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Dayakan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Sila semak \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" dlm ttpn Bhs & input. Ini mbnarkn apl djlnkn pd pranti anda."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Dayakan dalam Tetapan"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Beralih ke <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Seterusnya, pilih \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" sebagai kaedah input teks aktif anda."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Tekan untuk mengulas dan memuat turun"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Memuat turun: cadangan untuk <xliff:g id="LANGUAGE">%1$s</xliff:g> akan sedia tidak lama lagi."</string>
<string name="version_text" msgid="2715354215568469385">"Versi <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index 1b0528a..3df30a1 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-tastatur (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Instillinger for Android-tastatur (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android-stavekontroll (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Innstillinger for Android-stavekontroll (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Inndataalternativer"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Kommandoer for undersøkelseslogging"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Slå opp kontaktnavn"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vis alltid"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Vis i stående modus"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Skjul alltid"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autokorrektur"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Mellomromstast og skilletegn retter automat. feilstavede ord"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Av"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Konfigurerer <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Aktiver <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Sjekk <xliff:g id="APPLICATION_NAME">%s</xliff:g> i Språk og inndata-innstillingene dine. Dette tillater appen å kjøre på enheten."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Aktiver i Innstillinger"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Bytt til <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Deretter velger du «<xliff:g id="APPLICATION_NAME">%s</xliff:g>» som den aktive inndatametoden for tekst."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Trykk for å se gjennom og laste ned"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Laster ned: forslag blir snart tilgjengelige for <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Versjon <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index 8d3007a..73fbaba 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android-toetsenbord (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Instellingen voor het Android-toetsenbord (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Spellingcontrole van Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Instellingen voor spellingcontrole van Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropties"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Opdrachten in onderzoekslogbestand"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Contactnamen opzoeken"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Altijd weergeven"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Weergeven in staande modus"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Altijd verbergen"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autocorrectie"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Met spatiebalk en interpunctie worden verkeerd gespelde woorden automatisch gecorrigeerd"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Uitgeschakeld"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> instellen"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> inschakelen"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Vink \'<xliff:g id="APPLICATION_NAME">%s</xliff:g>\' aan in \'Instellingen voor taal en invoer\'. De app kan dan worden uitgevoerd op uw apparaat."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Inschakelen in \'Instellingen\'"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Overschakelen naar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Selecteer vervolgens \'<xliff:g id="APPLICATION_NAME">%s</xliff:g>\' als actieve tekstinvoermethode."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Druk om te controleren en te downloaden"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloaden: suggesties voor het <xliff:g id="LANGUAGE">%1$s</xliff:g> zijn straks beschikbaar."</string>
<string name="version_text" msgid="2715354215568469385">"Versie <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index 39d4c94..730dcd9 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Klawiatura Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Ustawienia klawiatury Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Sprawdzanie pisowni na Androidzie (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Ustawienia sprawdzania pisowni na Androidzie (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opcje wprowadzania"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Polecenia dziennika badań"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Przeszukaj kontakty"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Zawsze pokazuj"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Pokaż w trybie pionowym"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Zawsze ukrywaj"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autokorekta"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Spacja i znaki przestankowe poprawiają błędnie wpisane słowa"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Wyłącz"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Konfigurowanie aplikacji <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Włącz aplikację <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Zaznacz aplikację „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” w ustawieniach Język, klawiatura i głos. Umożliwi to jej uruchamianie na urządzeniu."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Włącz w Ustawieniach"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Przełącz się na aplikację <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Następnie wybierz „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” jako aktywną metodę wprowadzania tekstu."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Naciśnij, by sprawdzić i pobrać"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Pobieranie – wkrótce będą dostępne sugestie w tym języku: <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Wersja <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-port/setup-dimens-small-phone-port.xml b/java/res/values-port/setup-dimens-small-phone-port.xml
new file mode 100644
index 0000000..34f4d92
--- /dev/null
+++ b/java/res/values-port/setup-dimens-small-phone-port.xml
@@ -0,0 +1,40 @@
+<?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.
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Setup wizard dimensions for small-phone/portrait. -->
+ <dimen name="setup_title_text_size">40sp</dimen>
+ <dimen name="setup_welcome_description_text_size">20sp</dimen>
+ <dimen name="setup_step_bullet_text_size">18sp</dimen>
+ <dimen name="setup_step_triangle_indicator_height">18dp</dimen>
+ <dimen name="setup_step_indicator_height">18dp</dimen>
+ <dimen name="setup_step_title_text_size">18sp</dimen>
+ <dimen name="setup_step_instruction_text_size">14sp</dimen>
+ <dimen name="setup_step_action_text_size">16sp</dimen>
+ <dimen name="setup_vertical_padding">12dp</dimen>
+ <dimen name="setup_horizontal_padding">12dp</dimen>
+ <dimen name="setup_step_action_height">42dp</dimen>
+ <dimen name="setup_step_horizontal_padding">20dp</dimen>
+ <dimen name="setup_step_horizontal_padding_half">10dp</dimen>
+ <dimen name="setup_step_vertical_padding">12dp</dimen>
+ <dimen name="setup_step_horizontal_line_height">2dp</dimen>
+ <integer name="setup_title_weight_in_screen">40</integer>
+ <integer name="setup_body_weight_in_screen">60</integer>
+ <dimen name="setup_welcome_video_vertical_margin">16dp</dimen>
+ <integer name="setup_welcome_video_weight_in_screen">80</integer>
+ <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer>
+ <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer>
+</resources>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index f01f0b4..e880e3b 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Teclado Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Definições do Teclado Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Verificador Ortográfico Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Definições do Verificador Ortográfico Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opções de introdução"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Comandos de Reg. Invest."</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Procurar nomes de contac."</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar sempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostrar em modo retrato"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar sempre"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Correção automática"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Correcção automática de palavras mal escritas c/ barra de espaços e pontuação"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desligar"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Ativar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Marque \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" nas definições de Idioma e introdução p/ autorizar a execução no dispositivo."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Ativar nas Definições"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Mudar para <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Em seguida, selecione \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" como o seu método de introdução de texto ativo."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Prima para consultar e transferir"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"A transferir: as sugestões para <xliff:g id="LANGUAGE">%1$s</xliff:g> estarão prontas em breve."</string>
<string name="version_text" msgid="2715354215568469385">"Versão <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index 778aea3..4f186d0 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Teclado Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Configurações de teclado Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Corretor ortográfico do Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Configurações de corretor ortográfico do Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opções de entrada"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Pesq. comandos de reg."</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Buscar nomes de contatos"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar sempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostrar em modo de retrato"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Sempre ocultar"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Correção automática"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"A barra de espaço e a pontuação corrigem automaticamente palavras com erro de digitação"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desativado"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurando o <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Ative o <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Marque \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" em \"Configurações de idioma e entrada\" para autorizar a execução."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Ativar em \"Configurações\""</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Abra o <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Em seguida, selecione \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" como o método de entrada de texto ativo."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Pressione para consultar e fazer o download"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Download em andamento: as sugestões para <xliff:g id="LANGUAGE">%1$s</xliff:g> estarão prontas em breve."</string>
<string name="version_text" msgid="2715354215568469385">"Versão <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index 89b571b..d1b8429 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -20,14 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for aosp_android_keyboard_ime_name (8250992613616792321) -->
- <skip />
- <!-- no translation found for aosp_android_keyboard_ime_settings (423615877174850267) -->
- <skip />
- <!-- no translation found for aosp_spell_checker_service_name (511950477199948048) -->
- <skip />
- <!-- no translation found for aosp_android_spell_checker_service_settings (2970535894327288421) -->
- <skip />
<!-- no translation found for english_ime_input_options (3909945612939668554) -->
<skip />
<!-- no translation found for english_ime_research_log (8492602295696577851) -->
@@ -98,6 +90,10 @@
<skip />
<!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
<skip />
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<!-- no translation found for auto_correction (7630720885194996950) -->
<skip />
<!-- no translation found for auto_correction_summary (5625751551134658006) -->
@@ -326,6 +322,8 @@
<skip />
<!-- no translation found for setup_step1_instruction (2578631936624637241) -->
<skip />
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<!-- no translation found for setup_step1_action (4366513534999901728) -->
<skip />
<!-- no translation found for setup_step2_title (6860725447906690594) -->
@@ -407,4 +405,48 @@
<skip />
<!-- no translation found for version_text (2715354215568469385) -->
<skip />
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 6449a00..0c13d3a 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Tastatură Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Setări tastatură Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Verificator ortografic Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Setări verificator ortografic Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Opţiuni de introducere text"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Comenzi jurnal cercetare"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Verificare nume în agendă"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Afişaţi întotdeauna"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Afişaţi în modul Portret"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ascundeţi întotdeauna"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autocorectare"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Corectare automată cuvinte prin bară spaţiu/semne punctuaţie"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Dezactivată"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Configurarea <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Activați <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Bifați „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” din setările Limbă și introducere de text. Astfel, o autorizați să ruleze pe dispozitiv."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Activați în Setări"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Comutați la <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Apoi, selectați „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” ca metodă de introducere a textului activă."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Apăsați pentru examinare și descărcare"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Se descarcă: sugestiile pentru <xliff:g id="LANGUAGE">%1$s</xliff:g> vor fi gata în curând."</string>
<string name="version_text" msgid="2715354215568469385">"Versiunea <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index da79631..b113999 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Клавиатура Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Настройки клавиатуры Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Проверка правописания Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Настройки проверки правописания Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Настройки"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Все команды"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Поиск контактов"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Всегда предлагать"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Только в вертикальном режиме"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Никогда не предлагать"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Автоисправление"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Автоматическое исправление опечаток при вводе знака препинания или пробела"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Откл."</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>: настройка"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>: включение"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Установите флажок <xliff:g id="APPLICATION_NAME">%s</xliff:g> в меню \"Язык и ввод\", чтобы использовать этот способ ввода на устройстве."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Включить в настройках"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>: активация"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Выберите приложение \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" как текущий способ ввода."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Нажмите, чтобы просмотреть и загрузить"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Загрузка словаря: <xliff:g id="LANGUAGE">%1$s</xliff:g>…"</string>
<string name="version_text" msgid="2715354215568469385">"Версия <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index ce920e4..792e7f3 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Klávesnica Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Nastavenia klávesnice Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Kontrola pravopisu (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Nastavenia kontroly pravopisu Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávania textu a údajov"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Príkazy denníka výskumu"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Vyhľadať kontakty"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vždy zobrazovať"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Zobraziť v režime na výšku"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vždy skrývať"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Automatické opravy"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Stlačením medzerníka a interpunkcie sa aut. opravia chybné slová"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Vypnuté"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Nastavenie aplikácie <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Povoľte aplikáciu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"V nastaveniach vstupu a jazyka začiarknite políčko <xliff:g id="APPLICATION_NAME">%s</xliff:g>. Týmto aplikácii povolíte spustenie v zariadení."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Povoliť v Nastaveniach"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Prepnite na aplikáciu <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Potom vyberte aplikáciu <xliff:g id="APPLICATION_NAME">%s</xliff:g> ako aktívnu metódu textového vstupu."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Stlačením skontrolujete a prevezmete"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Preberanie: návrhy pre jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g> budú čoskoro k dispozícii."</string>
<string name="version_text" msgid="2715354215568469385">"Verzia <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index 11c3ced..b404ca8 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Tipkovnica za Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Nastavitve tipkovnice za Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Črkovalnik za Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Nastavitve črkovalnika za Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti vnosa"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Ukazi za dnevnik raziskav"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Iskanje imen stikov"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vedno pokaži"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Prikaži v pokončnem načinu"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vedno skrij"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Samodejni popravek"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Preslednica in ločila samodejno popravijo napačno vtipkane besede"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Izklopljeno"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Nastavitev aplikacije <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Omogočanje aplikacije <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"V nastavitvah za jezik in vnos izberite aplikacijo »<xliff:g id="APPLICATION_NAME">%s</xliff:g>«. S tem ji omogočite izvajanje v napravi."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Omogoči v nastavitvah"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Preklop na aplikacijo <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Nato izberite aplikacijo »<xliff:g id="APPLICATION_NAME">%s</xliff:g>« kot aktivni način vnosa besedila."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Pritisnite za pregled in prenos"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Predlogi za prenos za jezik <xliff:g id="LANGUAGE">%1$s</xliff:g> bodo kmalu pripravljeni."</string>
<string name="version_text" msgid="2715354215568469385">"Različica <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index a22428b..8f17e4b 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android тастатура (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Подешавања Android тастатуре (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android провера правописа (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Подешавања Android провере правописа (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Опције уноса"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Команде евиденције истраживања"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Потражи имена контаката"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Увек прикажи"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Прикажи у усправном режиму"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Увек сакриј"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Аутом. исправљање"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Размак и интерпункција аутоматски исправљају грешке у куцању"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Искључи"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Подешавање апликације <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Омогућите апликацију <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Потврдите апликацију „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ у Подешавањима језика и уноса. Тако јој одобравате покретање на уређају."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Омогући у Подешавањима"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Пребаците на <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Затим изаберите „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ као активни метод уноса текста."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Притисните за преглед и преузимање"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Преузимање: Предлози за <xliff:g id="LANGUAGE">%1$s</xliff:g> ће ускоро бити спремни."</string>
<string name="version_text" msgid="2715354215568469385">"Верзија <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 206fcc2..f9cb468 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Androids tangentbord (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Inställningar för Androids tangentbord (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Stavningskontroll i Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Inställningar för Androids stavningskontroll (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Inmatningsalternativ"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Loggkommandon"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Sök namn på kontakter"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Visa alltid"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Visa i stående format"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Dölj alltid"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Autokorrigering"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Blanksteg/skiljetecken rättar felstavning"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Av"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Konfigurera <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Aktivera <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Markera <xliff:g id="APPLICATION_NAME">%s</xliff:g> i inställningarna för språk och inmatning så att appen kan köras."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Aktivera i inställningarna"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Byt till <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Välj sedan <xliff:g id="APPLICATION_NAME">%s</xliff:g> som din aktiva textinmatningsmetod."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Tryck om du vill granska och hämta"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Hämtar: förslag för <xliff:g id="LANGUAGE">%1$s</xliff:g> är snart klara."</string>
<string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 33e1657..b082076 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Kibodi ya Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Mipangilio ya Kibodi ya Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Kikagua-tahajia cha Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Mipangilio ya Kikagua-tahajia cha Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Chaguo za uingizaji"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Amri za Kumbukumbu za Utafiti"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Angalia majina ya unaowasiliana nao"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Onyesha kila wakati"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Onyesha katika hali wima"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ficha kila wakati"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Usahihishaji otomatiki"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Kiaamba na kiakifishi hurekebisha maneno ambayo yamechapishwa vibaya"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Zima"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Inasanidi <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Washa <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Tafadhali angalia \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" katika lugha yako na mipangilio ya kuingiza. Hii itaidhinisha ili iendeshwe kwenye kifaa chako."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Washa katika Mipangilio"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Badilisha kwenda <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Kisha, chagua \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" kama mbinu yako inayotumika ya kuingiza data ya maandishi."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Bonyeza ili kukagua na kupakua"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Inapakua: mapendekezo ya <xliff:g id="LANGUAGE">%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>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-sw600dp-land/setup-dimens.xml b/java/res/values-sw600dp-land/setup-dimens.xml
deleted file mode 100644
index e5051ea..0000000
--- a/java/res/values-sw600dp-land/setup-dimens.xml
+++ /dev/null
@@ -1,21 +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.
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">64sp</dimen>
- <dimen name="setup_welcome_description_text_size">36sp</dimen>
- <dimen name="setup_horizontal_padding">96dp</dimen>
-</resources>
diff --git a/java/res/values-sw768dp-land/setup-dimens.xml b/java/res/values-sw768dp-land/setup-dimens.xml
deleted file mode 100644
index 34b7f42..0000000
--- a/java/res/values-sw768dp-land/setup-dimens.xml
+++ /dev/null
@@ -1,21 +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.
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <dimen name="setup_title_text_size">64sp</dimen>
- <dimen name="setup_welcome_description_text_size">36sp</dimen>
- <dimen name="setup_horizontal_padding">192dp</dimen>
-</resources>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index 0fb2311..1f6da81 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"แป้นพิมพ์แอนดรอยด์ (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"การตั้งค่าแป้นพิมพ์แอนดรอยด์ (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"เครื่องตรวจตัวสะกดแอนดรอยด์ (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"การตั้งค่าเครื่องตรวจตัวสะกดแอนดรอยด์ (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"ตัวเลือกการป้อนข้อมูล"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"คำสั่งบันทึกการวิจัย"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"ค้นหารายชื่อติดต่อ"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"แสดงทุกครั้ง"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"แสดงในโหมดแนวตั้ง"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ซ่อนทุกครั้ง"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"การแก้ไขอัตโนมัติ"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"กดเว้นวรรคและเครื่องหมายจะแก้คำผิดอัตโนมัติ"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ปิด"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"การตั้งค่า <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"เปิดใช้งาน <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"โปรดตรวจสอบ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ในการตั้งค่าภาษาและการป้อนข้อมูลของคุณ ซึ่งจะอนุญาตให้แอปทำงานบนอุปกรณ์ของคุณ"</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"เปิดใช้งานในการตั้งค่า"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"สลับไปใช้ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"ถัดไป เลือก \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" เป็นวิธีการป้อนข้อความที่ใช้งานของคุณ"</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"กดเพื่อตรวจสอบและดาวน์โหลด"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"กำลังดาวน์โหลด: คำแนะนำสำหรับ <xliff:g id="LANGUAGE">%1$s</xliff:g> จะพร้อมใช้งานเร็วๆ นี้"</string>
<string name="version_text" msgid="2715354215568469385">"เวอร์ชัน <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index f6e71e6..ecd5ae7 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android Keyboard (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Mga Setting ng Android Keyboard (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Spell Checker ng Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Mga Setting ng Spell Checker ng Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Mga pagpipilian sa input"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Cmmnd sa Log ng Pnnliksik"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Maghanap pangalan contact"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Palaging ipakita"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Ipakita sa portrait na mode"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Palaging itago"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Awtomatiko pagwasto"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Awto tinatama ng spacebar at bantas ang maling na-type"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Naka-off"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Sine-set up ang <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Paganahin ang <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Paki-check ang \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" sa mga setting mo ng Wika at input. Mapapahintulutan itong tumakbo sa device mo."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"I-enable sa Mga Setting"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Lumipat sa <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Susunod, piliin ang \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" bilang iyong aktibong pamamaraan ng pag-input ng teksto."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Pindutin upang suriin at i-download"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Dina-download: malapit nang maging handa ang mga suhestiyon para sa <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Bersyon <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 76024c9..58e54b0 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android klavye (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android Klavye Ayarları (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android Yazım Denetleyici (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android Yazım Denetleyici Ayarları (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Giriş seçenekleri"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Araştırma Günlüğü Komutları"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kişi adlarını denetle"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Her zaman göster"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Dikey modda göster"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Her zaman gizle"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Otomatik düzeltme"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Boşluk tuşu ve noktalama işaretleri yanlış yazılan kelimeleri otomatikman düzeltir"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Kapalı"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> uygulamasını kurma"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> uygulamasını etkinleştirin"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Lütfen \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" uygulamasını kendi Dil ve giriş ayarlarınızda işaretleyin. Bu işlem, uygulamaya cihazınızda çalışma yetkisi verecektir."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Ayarlarda etkinleştir"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> uygulamasına geçin"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Sonra, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" uygulamasını etkin metin giriş yönteminiz olarak seçin."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"İncelemek ve indirmek için basın"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"<xliff:g id="LANGUAGE">%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>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index ba9cd4f..935291c 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Клавіатура Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Налаштування клавіатури Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Перевірка орфографії Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Налаштування перевірки орфографії Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Парам. введення"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Команди журналу дослідж."</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Шукати імена контактів"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Завжди показувати"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Показувати в книжковій орієнтації"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Завжди ховати"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Автовиправлення"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Пробіл і пунктуація автоматично виправляють слова з помилками"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Вимк."</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Налаштування програми <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Увімкніть програму <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Виберіть \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" у налаштуваннях \"Мова та введення\", щоб дозволити запуск цієї програми на пристрої."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Увімкнути в налаштуваннях"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Перейдіть до програми <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Далі виберіть \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" як поточний метод введення тексту."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Натисніть, щоб переглянути та завантажити"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Скоро почнеться завантаження пропозицій для такої мови: <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
<string name="version_text" msgid="2715354215568469385">"Версія <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 212038f..54cc91b 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Bàn phím Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Cài đặt bàn phím Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Trình kiểm tra chính tả Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Cài đặt trình kiểm tra chính tả Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Tùy chọn nhập"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Lệnh ghi nhật ký cho nghiên cứu"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Tra cứu tên liên hệ"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Luôn hiển thị"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Hiển thị ở chế độ dọc"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Luôn ẩn"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Tự động sửa"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Phím cách và dấu câu tự động sửa từ nhập sai"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Tắt"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Thiết lập <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Bật <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Vui lòng kiểm tra \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" trong cài đặt ngôn ngữ và phương thức nhập của bạn. Điều này sẽ ủy quyền cho ứng dụng chạy trên thiết bị của bạn."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Bật trong Cài đặt"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Chuyển sang <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Tiếp theo, chọn \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" làm phương thức nhập văn bản hoạt động của bạn."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Nhấn để xem lại và tải xuống"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Tải xuống: đề xuất đối với <xliff:g id="LANGUAGE">%1$s</xliff:g> sẽ sớm sẵn sàng."</string>
<string name="version_text" msgid="2715354215568469385">"Phiên bản <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index 2b8b961..922d212 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android 键盘 (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android 键盘设置 (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android 拼写检查工具 (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android 拼写检查工具设置 (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"输入选项"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"研究记录命令"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"查找联系人姓名"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"始终显示"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"在纵向模式中显示"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"始终隐藏"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"自动更正"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"按空格键和标点可自动更正错别字"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"关闭"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"设置 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"启用 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"请在“语言和输入法”设置中选中“<xliff:g id="APPLICATION_NAME">%s</xliff:g>”,授权这项应用在您的设备上运行。"</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"在设置中启用"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"切换到 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"接下来,请选择“<xliff:g id="APPLICATION_NAME">%s</xliff:g>”作为您要使用的文字输入法。"</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"按此通知即可查看和下载"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"下载中:很快就能启用<xliff:g id="LANGUAGE">%1$s</xliff:g>的词典建议服务了!"</string>
<string name="version_text" msgid="2715354215568469385">"版本<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index e7a6268..eaed901 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Android 鍵盤 (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Android 鍵盤設定 (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Android 拼字檢查 (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Android 拼字檢查設定 (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"輸入選項"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"研究紀錄指令"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"查詢聯絡人姓名"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"一律顯示"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"在垂直模式中顯示"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"永遠隱藏"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"自動修正"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"按空白鍵或標點符號時,自動修正前面的錯字"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"關閉"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"正在設定「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"啟用「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"請在語言與輸入設定中勾選「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」,授權這項應用程式在您的裝置上執行。"</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"在設定中啟用"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"切換至「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」"</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"接著,請選取「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」做為目前使用的文字輸入法。"</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"按下即可查看並下載"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"下載中:即將啟用<xliff:g id="LANGUAGE">%1$s</xliff:g>字詞建議服務。"</string>
<string name="version_text" msgid="2715354215568469385">"版本 <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index 886a799..087b558 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -20,10 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="aosp_android_keyboard_ime_name" msgid="8250992613616792321">"Ikhibhodi ye-Android (AOSP)"</string>
- <string name="aosp_android_keyboard_ime_settings" msgid="423615877174850267">"Izilungiselelo zekhibhodi ye-Android (AOSP)"</string>
- <string name="aosp_spell_checker_service_name" msgid="511950477199948048">"Isihloli sokupela se-Android (AOSP)"</string>
- <string name="aosp_android_spell_checker_service_settings" msgid="2970535894327288421">"Izilungiselelo zesihloli sokupela se-Android (AOSP)"</string>
<string name="english_ime_input_options" msgid="3909945612939668554">"Okukhethwa kukho kokungenayo"</string>
<string name="english_ime_research_log" msgid="8492602295696577851">"Imiyalo yefayela lokungena lokucwaninga"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Bheka amagama woxhumana nabo"</string>
@@ -61,6 +57,10 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Bonisa njalo"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Bonisa ngomumo oqondile"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Fihla njalo"</string>
+ <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+ <skip />
+ <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+ <skip />
<string name="auto_correction" msgid="7630720885194996950">"Ukulungisa okuzenzakalelayo"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Ibha yesikhala nokubhala ngamagama amakhulu kulungisa amaphutha amagama athayiphwe kabi"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Valiwe"</string>
@@ -179,6 +179,8 @@
<string name="setup_steps_title" msgid="6400373034871816182">"Kusethwa i-<xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_title" msgid="3147967630253462315">"Nika amandla i-<xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_step1_instruction" msgid="2578631936624637241">"Sicela uhlole i-\"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ngolimi lwakho nezilungiselelo zokokufaka. Lokhu kuzoyigunyaza ukuthi isebenze kudivayisi yakho."</string>
+ <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+ <skip />
<string name="setup_step1_action" msgid="4366513534999901728">"Nika amandla kuzilungiselelo"</string>
<string name="setup_step2_title" msgid="6860725447906690594">"Shintshela ku-<xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
<string name="setup_step2_instruction" msgid="9141481964870023336">"Okulandelayo, khetha i-\"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" njengendlela yakho yokufaka umbhalo osebenzayo."</string>
@@ -220,4 +222,48 @@
<string name="dict_available_notification_description" msgid="1075194169443163487">"Cindezela ukuze ubuyekeze uphinde ulande"</string>
<string name="toast_downloading_suggestions" msgid="1313027353588566660">"Ukulanda: iziphakamiso ze-<xliff:g id="LANGUAGE">%1$s</xliff:g> zizolunga maduze."</string>
<string name="version_text" msgid="2715354215568469385">"Inguqulo engu-<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for user_dict_settings_titlebar (2376327578038036679) -->
+ <skip />
+ <!-- no translation found for user_dict_single_settings_title (751932921010596184) -->
+ <skip />
+ <!-- no translation found for user_dict_multiple_settings_title (7046977511772051284) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+ <skip />
+ <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+ <skip />
+ <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+ <skip />
</resources>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 4e2936c..5b11e07 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -75,6 +75,7 @@
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
false -->
<bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
+ <bool name="config_block_potentially_offensive">true</bool>
<integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
<integer name="config_gesture_preview_trail_fadeout_start_delay">100</integer>
<integer name="config_gesture_preview_trail_fadeout_duration">800</integer>
@@ -111,8 +112,9 @@
<!-- Aggressive -->
<item>0.067</item>
<!-- Very Aggressive : Suggestion whose normalized score is greater than this value
- will be subject to auto-correction. -->
- <item>0</item>
+ will be subject to auto-correction. "floatNegativeInfinity" is a special marker
+ string for Float.NEGATIVE_INFINITY -->
+ <item>floatNegativeInfinity</item>
</string-array>
<!-- Threshold of the normalized score of the best suggestion for the spell checker to declare
a word to be "recommended" -->
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index e9b34aa..da735cf 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -117,4 +117,6 @@
<!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. -->
<dimen name="accessibility_edge_slop">8dp</dimen>
+
+ <integer name="user_dictionary_max_word_length" translatable="false">48</integer>
</resources>
diff --git a/java/res/values/setup-styles-common.xml b/java/res/values/setup-styles-common.xml
index f5f59dd..686decf 100644
--- a/java/res/values/setup-styles-common.xml
+++ b/java/res/values/setup-styles-common.xml
@@ -26,7 +26,7 @@
</style>
<style name="setupStepIndicatorStyle">
<item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">@dimen/setup_step_indicator_height</item>
+ <item name="android:layout_height">@dimen/setup_step_triangle_indicator_height</item>
</style>
<style name="setupStepBulletStyle">
<item name="android:textColor">@color/setup_text_dark</item>
@@ -51,7 +51,8 @@
<item name="android:textSize">@dimen/setup_step_instruction_text_size</item>
</style>
<style name="setupStepStartIndicatorStyle">
- <item name="android:layout_width">24dp</item>
+ <!-- The triangle indicator here is placed sideways. -->
+ <item name="android:layout_width">@dimen/setup_step_triangle_indicator_height</item>
<item name="android:layout_height">@dimen/setup_step_action_height</item>
</style>
<style name="setupStepActionLabelStyleCommon" parent="setupStepBaseStyle">
diff --git a/java/res/values/strings-appname.xml b/java/res/values/strings-appname.xml
new file mode 100644
index 0000000..46d8c44
--- /dev/null
+++ b/java/res/values/strings-appname.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<resources>
+ <!-- Application name for opensource Android keyboard. AOSP(Android Open Source Project) should not be translated.
+ This resource should be copied from msgid="8250992613616792321" -->
+ <string name="english_ime_name">Android Keyboard (AOSP)</string>
+
+ <!-- Name of Android spell checker service. AOSP(Android Open Source Project) should not be translated.
+ This resource should be copied from msgid="511950477199948048" -->
+ <string name="spell_checker_service_name">Android Spell Checker (AOSP)</string>
+
+ <!-- Title for Android Keyboard settings screen. AOSP(Android Open Source Project) should not be translated.
+ This resource should be copied from msgid="423615877174850267" -->
+ <string name="english_ime_settings">Android Keyboard Settings (AOSP)</string>
+
+ <!-- Title for the spell checking service settings screen. AOSP(Android Open Source Project) should not be translated.
+ This resource should be copied from msgid="2970535894327288421" -->
+ <string name="android_spell_checker_settings">Android Spell Checker Settings (AOSP)</string>
+</resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index d8a88a8..85abb08 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -18,18 +18,6 @@
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Application name for opensource Android keyboard. AOSP(Android Open Source Project) should not be translated. -->
- <string name="aosp_android_keyboard_ime_name">Android Keyboard (AOSP)</string>
-
- <!-- Title for Android Keyboard settings screen. AOSP(Android Open Source Project) should not be translated. -->
- <string name="aosp_android_keyboard_ime_settings">Android Keyboard Settings (AOSP)</string>
-
- <!-- Name of Android spell checker service. AOSP(Android Open Source Project) should not be translated. -->
- <string name="aosp_spell_checker_service_name">Android Spell Checker (AOSP)</string>
-
- <!-- Title for the spell checking service settings screen. AOSP(Android Open Source Project) should not be translated. -->
- <string name="aosp_android_spell_checker_service_settings">Android Spell Checker Settings (AOSP)</string>
-
<!-- Title for Latin keyboard input options dialog [CHAR LIMIT=25] -->
<string name="english_ime_input_options">Input options</string>
@@ -123,6 +111,11 @@
<string name="prefs_suggestion_visibility_show_only_portrait_name">Show in portrait mode</string>
<string name="prefs_suggestion_visibility_hide_name">Always hide</string>
+ <!-- Option to block potentially offensive words to be shown [CHAR_LIMIT=30] -->
+ <string name="prefs_block_potentially_offensive_title">Block offensive words</string>
+ <!-- Summary for option to block potentially offensive words to be shown [CHAR_LIMIT=80 (two lines) or 40 (fits on one line, preferable)] -->
+ <string name="prefs_block_potentially_offensive_summary">Do not suggest potentially offensive words</string>
+
<!-- Option to decide the auto correction threshold score -->
<!-- Option to enable auto correction [CHAR LIMIT=20]-->
<string name="auto_correction">Auto-correction</string>
@@ -461,6 +454,8 @@
<string name="setup_step1_title">"Enable <xliff:g id="application_name">%s</xliff:g>"</string>
<!-- Detailed instruction of the 1st step in the setup wizard. [CHAR LIMIT=120] -->
<string name="setup_step1_instruction">"Please check \"<xliff:g id="application_name">%s</xliff:g>\" in your Language & input settings. This will authorize it to run on your device."</string>
+ <!-- Detailed instruction of the already finished 1st step in the setup wizard. [CHAR LIMIT=120] -->
+ <string name="setup_step1_finished_instruction">"<xliff:g id="application_name">%s</xliff:g> is already enabled in your Language & input settings, so this step is done. On to the next one!"</string>
<!-- The label of the button that triggers the Language & input settings in order to enable the keyboard. [CHAR_LIMIT=64] -->
<string name="setup_step1_action">Enable in Settings</string>
<!-- Ordinal number of the 2nd step in the setup wizard. [CHAR LIMIT=5] -->
@@ -562,4 +557,67 @@
<!-- Version text [CHAR LIMIT=30]-->
<string name="version_text">Version <xliff:g id="version_number" example="1.0.1864.643521">%1$s</xliff:g></string>
+
+ <!-- User dictionary settings -->
+ <!-- User dictionary settings. The summary of the listem item to go into the User dictionary settings screen. -->
+ <string name="user_dict_settings_summary" translatable="false">""</string>
+ <!-- User dictionary settings. The title of the menu item to add a new word to the user dictionary. -->
+ <!-- This resource is corresponding to msgid="4056762757149923551" -->
+ <string name="user_dict_settings_add_menu_title">Add</string>
+ <!-- User dictionary settings. The title of the dialog to add a new word to the user dictionary. [CHAR LIMIT=25] -->
+ <!-- This resource is corresponding to msgid="4702613990174126482" -->
+ <string name="user_dict_settings_add_dialog_title">Add to dictionary</string>
+ <!-- User dictionary settings. The title of the screen to add/edit a new word to the user dictionary; it describes the phrase that will be added to the user dictionary. [CHAR LIMIT=25] -->
+ <!-- This resource is corresponding to msgid="742580720124344291" -->
+ <string name="user_dict_settings_add_screen_title">Phrase</string>
+ <!-- User dictionary settings. Text on the dialog button to pop more options for adding a word. [CHAR LIMIT=16] -->
+ <!-- This resource is corresponding to msgid="8848798370746019825" -->
+ <string name="user_dict_settings_add_dialog_more_options">More options</string>
+ <!-- User dictionary settings. Text on the dialog button mask advanced options. [CHAR LIMIT=15] -->
+ <!-- This resource is corresponding to msgid="2441785268726036101" -->
+ <string name="user_dict_settings_add_dialog_less_options">Less options</string>
+ <!-- User dictionary settings. Text on the dialog button to confirm adding a word. [CHAR LIMIT=15] -->
+ <!-- This resource is corresponding to msgid="6225823625332416144" -->
+ <string name="user_dict_settings_add_dialog_confirm">OK</string>
+ <!-- User dictionary settings. Label to put before the word field (that's the word that will actually be added to the user dictionary when OK is pressed). [CHAR LIMIT=20] -->
+ <!-- This resource is corresponding to msgid="7868879174905963135" -->
+ <string name="user_dict_settings_add_word_option_name">Word:</string>
+ <!-- User dictionary settings. Label to put before the shortcut field (once a shortcut is registered, the user can type the shortcut and get the word it points to in the suggestions). [CHAR LIMIT=20] -->
+ <!-- This resource is corresponding to msgid="660089258866063925" -->
+ <string name="user_dict_settings_add_shortcut_option_name">Shortcut:</string>
+ <!-- User dictionary settings. Label to put before the language field. [CHAR LIMIT=20] -->
+ <!-- This resource is corresponding to msgid="5696358317061318532" -->
+ <string name="user_dict_settings_add_locale_option_name">Language:</string>
+ <!-- User dictionary settings. Hint for the text field to type the word to add to the user dictionary. [CHAR LIMIT=35] -->
+ <!-- This resource is corresponding to msgid="5725254076556821247" -->
+ <string name="user_dict_settings_add_word_hint">Type a word</string>
+ <!-- User dictionary settings. Hint for the text field to type the optional shortcut to add to the user dictionary. [CHAR LIMIT=35] -->
+ <!-- This resource is corresponding to msgid="7333763456561873445" -->
+ <string name="user_dict_settings_add_shortcut_hint">Optional shortcut</string>
+ <!-- User dictionary settings. The title of the dialog to edit an existing word in the user dictionary. -->
+ <!-- This resource is corresponding to msgid="8967476444840548674" -->
+ <string name="user_dict_settings_edit_dialog_title">Edit word</string>
+ <!-- User dictionary settings. The title of the context menu item to edit the current word -->
+ <!-- This resource is corresponding to msgid="2210564879320004837" -->
+ <string name="user_dict_settings_context_menu_edit_title">Edit</string>
+ <!-- User dictionary settings. The title of the context menu item to delete the current word -->
+ <!-- This resource is corresponding to msgid="9140703913776549054" -->
+ <string name="user_dict_settings_context_menu_delete_title">Delete</string>
+ <!-- User dictionary settings. The text to show when there are no user-defined words in the dictionary [CHAR LIMIT=200] -->
+ <!-- This resource is corresponding to msgid="8165273379942105271" -->
+ <string name="user_dict_settings_empty_text">You don\'t have any words in the user dictionary. Add a word by touching the Add (+) button.</string>
+ <!-- User dictionary settings. The list item to choose to insert a word into the user dictionary for all languages -->
+ <!-- This resource is corresponding to msgid="6742000040975959247" -->
+ <string name="user_dict_settings_all_languages">For all languages</string>
+ <!-- User dictionary settings. The text to show for the option that shows the entire list of supported locales to choose one [CHAR LIMIT=30] -->
+ <!-- This resource is corresponding to msgid="7316375944684977910" -->
+ <string name="user_dict_settings_more_languages">More languages…</string>
+ <!-- User dictionary settings. Label to delete an entry in the user dictionary [CHAR LIMIT=30]
+ This resource is copied from packages/apps/Settings/res/values/strings.xml -->
+ <!-- This resource is corresponding to msgid="4219243412325163003" -->
+ <string name="user_dict_settings_delete">Delete</string>
+ <!-- User dictionary settings. Index of the user dictionary [CHAR LIMIT=30]
+ This resource is copied from packages/apps/Settings/res/values/strings.xml -->
+ <!-- This resource is corresponding to msgid="5433275485499039199" -->
+ <string name="user_dict_fast_scroll_alphabet">\u0020ABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
</resources>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 436e080..dad7e20 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -94,8 +94,10 @@
<item name="showMoreKeysKeyboardAtTouchedPoint">@bool/config_show_more_keys_keyboard_at_touched_point</item>
<item name="languageOnSpacebarFinalAlpha">@integer/config_language_on_spacebar_final_alpha</item>
<item name="languageOnSpacebarFadeoutAnimator">@anim/language_on_spacebar_fadeout</item>
+ <!-- Remove animations for now because it could drain a non-negligible amount of battery while typing.
<item name="altCodeKeyWhileTypingFadeoutAnimator">@anim/alt_code_key_while_typing_fadeout</item>
<item name="altCodeKeyWhileTypingFadeinAnimator">@anim/alt_code_key_while_typing_fadein</item>
+ -->
<!-- Common attributes of MainKeyboardView for gesture typing detection and recognition -->
<item name="gestureFloatingPreviewTextLingerTimeout">@integer/config_gesture_floating_preview_text_linger_timeout</item>
<item name="gestureStaticTimeThresholdAfterFastTyping">@integer/config_gesture_static_time_threshold_after_fast_typing</item>
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index eea90f9..51e3420 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -69,6 +69,12 @@
android:value="@string/dictionary_pack_client_id" />
</intent>
</PreferenceScreen>
+ <CheckBoxPreference
+ android:key="pref_key_block_potentially_offensive"
+ android:title="@string/prefs_block_potentially_offensive_title"
+ android:summary="@string/prefs_block_potentially_offensive_summary"
+ android:persistent="true"
+ android:defaultValue="@bool/config_block_potentially_offensive" />
<ListPreference
android:key="auto_correction_threshold"
android:title="@string/auto_correction"
diff --git a/java/res/xml/spellchecker.xml b/java/res/xml/spellchecker.xml
index 813319c..13e6132 100644
--- a/java/res/xml/spellchecker.xml
+++ b/java/res/xml/spellchecker.xml
@@ -21,7 +21,7 @@
for the spell checker -->
<spell-checker xmlns:android="http://schemas.android.com/apk/res/android"
- android:label="@string/aosp_spell_checker_service_name"
+ android:label="@string/spell_checker_service_name"
android:settingsActivity="com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsActivity">
<subtype
android:label="@string/subtype_generic"
diff --git a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
index ff6561c..a0d7641 100644
--- a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
@@ -28,6 +28,7 @@
private static final Method METHOD_addWord = CompatUtils.getMethod(Words.class, "addWord",
Context.class, String.class, Integer.TYPE, String.class, Locale.class);
+ @SuppressWarnings("deprecation")
public static void addWord(final Context context, final String word, final int freq,
final String shortcut, final Locale locale) {
if (hasNewerAddWord()) {
@@ -39,13 +40,18 @@
if (null == locale) {
localeType = Words.LOCALE_TYPE_ALL;
} else {
- localeType = Words.LOCALE_TYPE_CURRENT;
+ final Locale currentLocale = context.getResources().getConfiguration().locale;
+ if (locale.equals(currentLocale)) {
+ localeType = Words.LOCALE_TYPE_CURRENT;
+ } else {
+ localeType = Words.LOCALE_TYPE_ALL;
+ }
}
Words.addWord(context, word, freq, localeType);
}
}
- private static final boolean hasNewerAddWord() {
+ public static final boolean hasNewerAddWord() {
return null != METHOD_addWord;
}
}
diff --git a/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java b/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java
index faf5d3c..bf22305 100644
--- a/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java
+++ b/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java
@@ -138,7 +138,12 @@
if (null == manager) return;
// This is an upgraded word list: we should download it.
- final Uri uri = Uri.parse(mWordList.mRemoteFilename);
+ // Adding a disambiguator to circumvent a bug in older versions of DownloadManager.
+ // DownloadManager also stupidly cuts the extension to replace with its own that it
+ // gets from the content-type. We need to circumvent this.
+ final String disambiguator = "#" + System.currentTimeMillis()
+ + com.android.inputmethod.latin.Utils.getVersionName(context) + ".dict";
+ final Uri uri = Uri.parse(mWordList.mRemoteFilename + disambiguator);
final Request request = new Request(uri);
final Resources res = context.getResources();
@@ -478,13 +483,14 @@
if (MetadataDbHelper.STATUS_INSTALLED == status
|| MetadataDbHelper.STATUS_DISABLED == status
|| MetadataDbHelper.STATUS_DELETING == status) {
- // If it is installed or disabled, then we cannot remove the entry lest the user
- // lose the ability to delete the file or otherwise administrate it. We will thus
- // leave it as is, but remove the URI from the database since it is not supposed to
- // be accessible any more.
+ // If it is installed or disabled, we need to mark it as deleted so that LatinIME
+ // will remove it next time it enquires for dictionaries.
// If it is deleting and we don't have a new version, then we have to wait until
- // Android Keyboard actually has deleted it before we can remove its metadata.
+ // LatinIME actually has deleted it before we can remove its metadata.
+ // In both cases, remove the URI from the database since it is not supposed to
+ // be accessible any more.
values.put(MetadataDbHelper.REMOTE_FILENAME_COLUMN, "");
+ values.put(MetadataDbHelper.STATUS_COLUMN, MetadataDbHelper.STATUS_DELETING);
db.update(MetadataDbHelper.METADATA_TABLE_NAME, values,
MetadataDbHelper.WORDLISTID_COLUMN + " = ? AND "
+ MetadataDbHelper.VERSION_COLUMN + " = ?",
diff --git a/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java b/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
new file mode 100644
index 0000000..5ab94a4
--- /dev/null
+++ b/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
@@ -0,0 +1,155 @@
+/**
+ * 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.
+ */
+
+package com.android.inputmethod.dictionarypack;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewPropertyAnimator;
+import android.widget.Button;
+import android.widget.FrameLayout;
+
+import com.android.inputmethod.latin.R;
+
+/**
+ * A view that handles buttons inside it according to a status.
+ */
+public class ButtonSwitcher extends FrameLayout {
+ public static final int NOT_INITIALIZED = -1;
+ public static final int STATUS_NO_BUTTON = 0;
+ public static final int STATUS_INSTALL = 1;
+ public static final int STATUS_CANCEL = 2;
+ public static final int STATUS_DELETE = 3;
+ // One of the above
+ private int mStatus = NOT_INITIALIZED;
+ private int mAnimateToStatus = NOT_INITIALIZED;
+
+ // Animation directions
+ public static final int ANIMATION_IN = 1;
+ public static final int ANIMATION_OUT = 2;
+
+ private Button mInstallButton;
+ private Button mCancelButton;
+ private Button mDeleteButton;
+ private OnClickListener mOnClickListener;
+
+ public ButtonSwitcher(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public ButtonSwitcher(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void onLayout(final boolean changed, final int left, final int top, final int right,
+ final int bottom) {
+ super.onLayout(changed, left, top, right, bottom);
+ mInstallButton = (Button)findViewById(R.id.dict_install_button);
+ mCancelButton = (Button)findViewById(R.id.dict_cancel_button);
+ mDeleteButton = (Button)findViewById(R.id.dict_delete_button);
+ mInstallButton.setOnClickListener(mOnClickListener);
+ mCancelButton.setOnClickListener(mOnClickListener);
+ mDeleteButton.setOnClickListener(mOnClickListener);
+ setButtonPositionWithoutAnimation(mStatus);
+ if (mAnimateToStatus != NOT_INITIALIZED) {
+ // We have been asked to animate before we were ready, so we took a note of it.
+ // We are now ready: launch the animation.
+ animateButtonPosition(mStatus, mAnimateToStatus);
+ mStatus = mAnimateToStatus;
+ mAnimateToStatus = NOT_INITIALIZED;
+ }
+ }
+
+ private Button getButton(final int status) {
+ switch(status) {
+ case STATUS_INSTALL:
+ return mInstallButton;
+ case STATUS_CANCEL:
+ return mCancelButton;
+ case STATUS_DELETE:
+ return mDeleteButton;
+ default:
+ return null;
+ }
+ }
+
+ public void setStatusAndUpdateVisuals(final int status) {
+ if (mStatus == NOT_INITIALIZED) {
+ setButtonPositionWithoutAnimation(status);
+ mStatus = status;
+ } else {
+ if (null == mInstallButton) {
+ // We may come here before we have been layout. In this case we don't know our
+ // size yet so we can't start animations so we need to remember what animation to
+ // start once layout has gone through.
+ mAnimateToStatus = status;
+ } else {
+ animateButtonPosition(mStatus, status);
+ mStatus = status;
+ }
+ }
+ }
+
+ private void setButtonPositionWithoutAnimation(final int status) {
+ // This may be called by setStatus() before the layout has come yet.
+ if (null == mInstallButton) return;
+ final int width = getWidth();
+ // Set to out of the screen if that's not the currently displayed status
+ mInstallButton.setTranslationX(STATUS_INSTALL == status ? 0 : width);
+ mCancelButton.setTranslationX(STATUS_CANCEL == status ? 0 : width);
+ mDeleteButton.setTranslationX(STATUS_DELETE == status ? 0 : width);
+ }
+
+ private void animateButtonPosition(final int oldStatus, final int newStatus) {
+ final View oldButton = getButton(oldStatus);
+ final View newButton = getButton(newStatus);
+ if (null != oldButton && null != newButton) {
+ // Transition between two buttons : animate out, then in
+ animateButton(oldButton, ANIMATION_OUT).setListener(
+ new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(final Animator animation) {
+ if (newStatus != mStatus) return;
+ animateButton(newButton, ANIMATION_IN);
+ }
+ });
+ } else if (null != oldButton) {
+ animateButton(oldButton, ANIMATION_OUT);
+ } else if (null != newButton) {
+ animateButton(newButton, ANIMATION_IN);
+ }
+ }
+
+ public void setInternalOnClickListener(final OnClickListener listener) {
+ mOnClickListener = listener;
+ }
+
+ private ViewPropertyAnimator animateButton(final View button, final int direction) {
+ final float outerX = getWidth();
+ final float innerX = button.getX() - button.getTranslationX();
+ if (ANIMATION_IN == direction) {
+ button.setClickable(true);
+ return button.animate().translationX(0);
+ } else {
+ button.setClickable(false);
+ return button.animate().translationX(outerX - innerX);
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
new file mode 100644
index 0000000..88b5032
--- /dev/null
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
@@ -0,0 +1,178 @@
+/**
+ * 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.
+ */
+
+package com.android.inputmethod.dictionarypack;
+
+import android.app.DownloadManager;
+import android.app.DownloadManager.Query;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.ProgressBar;
+
+public class DictionaryDownloadProgressBar extends ProgressBar {
+ @SuppressWarnings("unused")
+ private static final String TAG = DictionaryDownloadProgressBar.class.getSimpleName();
+ private static final int NOT_A_DOWNLOADMANAGER_PENDING_ID = 0;
+
+ private String mClientId;
+ private String mWordlistId;
+ private boolean mIsCurrentlyAttachedToWindow = false;
+ private Thread mReporterThread = null;
+
+ public DictionaryDownloadProgressBar(final Context context) {
+ super(context);
+ }
+
+ public DictionaryDownloadProgressBar(final Context context, final AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public void setIds(final String clientId, final String wordlistId) {
+ mClientId = clientId;
+ mWordlistId = wordlistId;
+ }
+
+ static private int getDownloadManagerPendingIdFromWordlistId(final Context context,
+ final String clientId, final String wordlistId) {
+ final SQLiteDatabase db = MetadataDbHelper.getDb(context, clientId);
+ final ContentValues wordlistValues =
+ MetadataDbHelper.getContentValuesOfLatestAvailableWordlistById(db, wordlistId);
+ if (null == wordlistValues) {
+ // We don't know anything about a word list with this id. Bug? This should never
+ // happen, but still return to prevent a crash.
+ Log.e(TAG, "Unexpected word list ID: " + wordlistId);
+ return NOT_A_DOWNLOADMANAGER_PENDING_ID;
+ }
+ return wordlistValues.getAsInteger(MetadataDbHelper.PENDINGID_COLUMN);
+ }
+
+ /*
+ * This method will stop any running updater thread for this progress bar and create and run
+ * a new one only if the progress bar is visible.
+ * Hence, as a result of calling this method, the progress bar will have an updater thread
+ * running if and only if the progress bar is visible.
+ */
+ private void updateReporterThreadRunningStatusAccordingToVisibility() {
+ if (null != mReporterThread) mReporterThread.interrupt();
+ if (mIsCurrentlyAttachedToWindow && View.VISIBLE == getVisibility()) {
+ final int downloadManagerPendingId =
+ getDownloadManagerPendingIdFromWordlistId(getContext(), mClientId, mWordlistId);
+ if (NOT_A_DOWNLOADMANAGER_PENDING_ID == downloadManagerPendingId) {
+ // Can't get the ID. This is never supposed to happen, but still clear the updater
+ // thread and return to avoid a crash.
+ mReporterThread = null;
+ return;
+ }
+ final UpdaterThread updaterThread =
+ new UpdaterThread(getContext(), downloadManagerPendingId);
+ updaterThread.start();
+ mReporterThread = updaterThread;
+ } else {
+ // We're not going to restart the thread anyway, so we may as well garbage collect it.
+ mReporterThread = null;
+ }
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ mIsCurrentlyAttachedToWindow = true;
+ updateReporterThreadRunningStatusAccordingToVisibility();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ mIsCurrentlyAttachedToWindow = false;
+ updateReporterThreadRunningStatusAccordingToVisibility();
+ }
+
+ private class UpdaterThread extends Thread {
+ private final static int REPORT_PERIOD = 150; // how often to report progress, in ms
+ final DownloadManager mDownloadManager;
+ final int mId;
+ public UpdaterThread(final Context context, final int id) {
+ super();
+ mDownloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
+ mId = id;
+ }
+ @Override
+ public void run() {
+ try {
+ // It's almost impossible that mDownloadManager is null (it would mean it has been
+ // disabled between pressing the 'install' button and displaying the progress
+ // bar), but just in case.
+ if (null == mDownloadManager) return;
+ final UpdateHelper updateHelper = new UpdateHelper();
+ final Query query = new Query().setFilterById(mId);
+ int lastProgress = 0;
+ setIndeterminate(true);
+ while (!isInterrupted()) {
+ final Cursor cursor = mDownloadManager.query(query);
+ if (null == cursor) {
+ // Can't contact DownloadManager: this should never happen.
+ return;
+ }
+ try {
+ if (cursor.moveToNext()) {
+ final int columnBytesDownloadedSoFar = cursor.getColumnIndex(
+ DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);
+ final int bytesDownloadedSoFar =
+ cursor.getInt(columnBytesDownloadedSoFar);
+ updateHelper.setProgressFromAnotherThread(bytesDownloadedSoFar);
+ } else {
+ // Download has finished and DownloadManager has already been asked to
+ // clean up the db entry.
+ updateHelper.setProgressFromAnotherThread(getMax());
+ return;
+ }
+ } finally {
+ cursor.close();
+ }
+ Thread.sleep(REPORT_PERIOD);
+ }
+ } catch (InterruptedException e) {
+ // Do nothing and terminate normally.
+ }
+ }
+
+ private class UpdateHelper implements Runnable {
+ private int mProgress;
+ @Override
+ public void run() {
+ setIndeterminate(false);
+ setProgress(mProgress);
+ }
+ public void setProgressFromAnotherThread(final int progress) {
+ if (mProgress != progress) {
+ mProgress = progress;
+ // For some unknown reason, setProgress just does not work from a separate
+ // thread, although the code in ProgressBar looks like it should. Thus, we
+ // resort to a runnable posted to the handler of the view.
+ final Handler handler = getHandler();
+ // It's possible to come here before this view has been laid out. If so,
+ // just ignore the call - it will be updated again later.
+ if (null == handler) return;
+ handler.post(this);
+ }
+ }
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
new file mode 100644
index 0000000..de3711c
--- /dev/null
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+
+package com.android.inputmethod.dictionarypack;
+
+import com.android.inputmethod.latin.CollectionUtils;
+
+import java.util.HashMap;
+
+/**
+ * Helper class to maintain the interface state of word list preferences.
+ *
+ * This is necessary because the views are created on-demand by calling code. There are many
+ * situations where views are renewed with little relation with user interaction. For example,
+ * when scrolling, the view is reused so it doesn't keep its state, which means we need to keep
+ * it separately. Also whenever the underlying dictionary list undergoes a change (for example,
+ * update the metadata, or finish downloading) the whole list has to be thrown out and recreated
+ * in case some dictionaries appeared, disappeared, changed states etc.
+ */
+public class DictionaryListInterfaceState {
+ private static class State {
+ public boolean mOpen = false;
+ public int mStatus = MetadataDbHelper.STATUS_UNKNOWN;
+ }
+
+ private HashMap<String, State> mWordlistToState = CollectionUtils.newHashMap();
+
+ public boolean isOpen(final String wordlistId) {
+ final State state = mWordlistToState.get(wordlistId);
+ if (null == state) return false;
+ return state.mOpen;
+ }
+
+ public int getStatus(final String wordlistId) {
+ final State state = mWordlistToState.get(wordlistId);
+ if (null == state) return MetadataDbHelper.STATUS_UNKNOWN;
+ return state.mStatus;
+ }
+
+ public void setOpen(final String wordlistId, final int status) {
+ final State newState;
+ final State state = mWordlistToState.get(wordlistId);
+ newState = null == state ? new State() : state;
+ newState.mOpen = true;
+ newState.mStatus = status;
+ mWordlistToState.put(wordlistId, newState);
+ }
+
+ public void closeAll() {
+ for (final State state : mWordlistToState.values()) {
+ state.mOpen = false;
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
index 9e27c1f..fb75d6d 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
@@ -64,6 +64,8 @@
private ConnectivityManager mConnectivityManager;
private MenuItem mUpdateNowMenu;
private boolean mChangedSettings;
+ private DictionaryListInterfaceState mDictionaryListInterfaceState =
+ new DictionaryListInterfaceState();
private final BroadcastReceiver mConnectivityChangedReceiver = new BroadcastReceiver() {
@Override
@@ -283,6 +285,7 @@
final int localeIndex = cursor.getColumnIndex(MetadataDbHelper.LOCALE_COLUMN);
final int descriptionIndex = cursor.getColumnIndex(MetadataDbHelper.DESCRIPTION_COLUMN);
final int statusIndex = cursor.getColumnIndex(MetadataDbHelper.STATUS_COLUMN);
+ final int filesizeIndex = cursor.getColumnIndex(MetadataDbHelper.FILESIZE_COLUMN);
do {
final String wordlistId = cursor.getString(idIndex);
final int version = cursor.getInt(versionIndex);
@@ -292,13 +295,15 @@
final int status = cursor.getInt(statusIndex);
final int matchLevel = LocaleUtils.getMatchLevel(systemLocaleString, localeString);
final String matchLevelString = LocaleUtils.getMatchLevelSortedString(matchLevel);
+ final int filesize = cursor.getInt(filesizeIndex);
// The key is sorted in lexicographic order, according to the match level, then
// the description.
final String key = matchLevelString + "." + description + "." + wordlistId;
final WordListPreference existingPref = prefList.get(key);
if (null == existingPref || hasPriority(status, existingPref.mStatus)) {
- final WordListPreference pref = new WordListPreference(activity, mClientId,
- wordlistId, version, locale, description, status);
+ final WordListPreference pref = new WordListPreference(activity,
+ mDictionaryListInterfaceState, mClientId, wordlistId, version, locale,
+ description, status, filesize);
prefList.put(key, pref);
}
} while (cursor.moveToNext());
diff --git a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
index a596609..3f917f1 100644
--- a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
+++ b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
@@ -212,7 +212,12 @@
private static void updateClientsWithMetadataUri(final Context context,
final boolean updateNow, final String metadataUri) {
PrivateLog.log("Update for metadata URI " + Utils.s(metadataUri));
- final Request metadataRequest = new Request(Uri.parse(metadataUri));
+ // Adding a disambiguator to circumvent a bug in older versions of DownloadManager.
+ // DownloadManager also stupidly cuts the extension to replace with its own that it
+ // gets from the content-type. We need to circumvent this.
+ final String disambiguator = "#" + System.currentTimeMillis()
+ + com.android.inputmethod.latin.Utils.getVersionName(context) + ".json";
+ final Request metadataRequest = new Request(Uri.parse(metadataUri + disambiguator));
Utils.l("Request =", metadataRequest);
final Resources res = context.getResources();
@@ -351,7 +356,13 @@
final int columnUri = cursor.getColumnIndex(DownloadManager.COLUMN_URI);
final int error = cursor.getInt(columnError);
status = cursor.getInt(columnStatus);
- uri = cursor.getString(columnUri);
+ final String uriWithAnchor = cursor.getString(columnUri);
+ int anchorIndex = uriWithAnchor.indexOf('#');
+ if (anchorIndex != -1) {
+ uri = uriWithAnchor.substring(0, anchorIndex);
+ } else {
+ uri = uriWithAnchor;
+ }
if (DownloadManager.STATUS_SUCCESSFUL != status) {
Log.e(TAG, "Permanent failure of download " + downloadId
+ " with error code: " + error);
diff --git a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
index 93f12d5..29015d6 100644
--- a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
+++ b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
@@ -16,16 +16,15 @@
package com.android.inputmethod.dictionarypack;
-import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.DialogPreference;
+import android.preference.Preference;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
-import android.widget.Button;
import android.widget.ListView;
+import android.widget.TextView;
import com.android.inputmethod.latin.R;
@@ -38,13 +37,12 @@
* pack. Upon being pressed, it displays a menu to allow the user to install, disable,
* enable or delete it as appropriate for the current state of the word list.
*/
-public final class WordListPreference extends DialogPreference {
+public final class WordListPreference extends Preference {
static final private String TAG = WordListPreference.class.getSimpleName();
// What to display in the "status" field when we receive unknown data as a status from
// the content provider. Empty string sounds sensible.
static final private String NO_STATUS_MESSAGE = "";
- static final private int NOT_AN_INDEX = -1;
/// Actions
static final private int ACTION_UNKNOWN = 0;
@@ -62,25 +60,26 @@
public final int mVersion;
// The status
public int mStatus;
+ // The size of the dictionary file
+ private final int mFilesize;
- // Animation directions
- static final private int ANIMATION_IN = 1;
- static final private int ANIMATION_OUT = 2;
-
- private static int sLastClickedIndex = NOT_AN_INDEX;
- private static String sLastClickedWordlistId = null;
+ private final DictionaryListInterfaceState mInterfaceState;
private final OnWordListPreferenceClick mPreferenceClickHandler =
new OnWordListPreferenceClick();
private final OnActionButtonClick mActionButtonClickHandler =
new OnActionButtonClick();
- public WordListPreference(final Context context, final String clientId, final String wordlistId,
- final int version, final Locale locale, final String description, final int status) {
+ public WordListPreference(final Context context,
+ final DictionaryListInterfaceState dictionaryListInterfaceState, final String clientId,
+ final String wordlistId, final int version, final Locale locale,
+ final String description, final int status, final int filesize) {
super(context, null);
mContext = context;
+ mInterfaceState = dictionaryListInterfaceState;
mClientId = clientId;
mVersion = version;
mWordlistId = wordlistId;
+ mFilesize = filesize;
setLayoutResource(R.layout.dictionary_line);
@@ -93,12 +92,6 @@
if (status == mStatus) return;
mStatus = status;
setSummary(getSummary(status));
- // If we are currently displaying the dialog, we should update it, or at least
- // dismiss it.
- final Dialog dialog = getDialog();
- if (null != dialog) {
- dialog.dismiss();
- }
}
private String getSummary(final int status) {
@@ -121,29 +114,31 @@
}
}
+ // The table below needs to be kept in sync with MetadataDbHelper.STATUS_* since it uses
+ // the values as indices.
private static final int sStatusActionList[][] = {
// MetadataDbHelper.STATUS_UNKNOWN
{},
// MetadataDbHelper.STATUS_AVAILABLE
- { R.string.install_dict, ACTION_ENABLE_DICT },
+ { ButtonSwitcher.STATUS_INSTALL, ACTION_ENABLE_DICT },
// MetadataDbHelper.STATUS_DOWNLOADING
- { R.string.cancel_download_dict, ACTION_DISABLE_DICT },
+ { ButtonSwitcher.STATUS_CANCEL, ACTION_DISABLE_DICT },
// MetadataDbHelper.STATUS_INSTALLED
- { R.string.delete_dict, ACTION_DELETE_DICT },
+ { ButtonSwitcher.STATUS_DELETE, ACTION_DELETE_DICT },
// MetadataDbHelper.STATUS_DISABLED
- { R.string.delete_dict, ACTION_DELETE_DICT },
+ { ButtonSwitcher.STATUS_DELETE, ACTION_DELETE_DICT },
// MetadataDbHelper.STATUS_DELETING
// We show 'install' because the file is supposed to be deleted.
// The user may reinstall it.
- { R.string.install_dict, ACTION_ENABLE_DICT }
+ { ButtonSwitcher.STATUS_INSTALL, ACTION_ENABLE_DICT }
};
- private CharSequence getButtonLabel(final int status) {
+ private int getButtonSwitcherStatus(final int status) {
if (status >= sStatusActionList.length) {
Log.e(TAG, "Unknown status " + status);
- return "";
+ return ButtonSwitcher.STATUS_NO_BUTTON;
}
- return mContext.getString(sStatusActionList[status][0]);
+ return sStatusActionList[status][0];
}
private static int getActionIdFromStatusAndMenuEntry(final int status) {
@@ -198,53 +193,70 @@
protected void onBindView(final View view) {
super.onBindView(view);
((ViewGroup)view).setLayoutTransition(null);
- final Button button = (Button)view.findViewById(R.id.wordlist_button);
- button.setText(getButtonLabel(mStatus));
- // String identity match. This is an ==, not an .equals, on purpose.
- button.setVisibility(mWordlistId == sLastClickedWordlistId ? View.VISIBLE : View.INVISIBLE);
- button.setOnClickListener(mActionButtonClickHandler);
+
+ final DictionaryDownloadProgressBar progressBar =
+ (DictionaryDownloadProgressBar)view.findViewById(R.id.dictionary_line_progress_bar);
+ final TextView status = (TextView)view.findViewById(android.R.id.summary);
+ progressBar.setIds(mClientId, mWordlistId);
+ progressBar.setMax(mFilesize);
+ final boolean showProgressBar = (MetadataDbHelper.STATUS_DOWNLOADING == mStatus);
+ status.setVisibility(showProgressBar ? View.INVISIBLE : View.VISIBLE);
+ progressBar.setVisibility(showProgressBar ? View.VISIBLE : View.INVISIBLE);
+
+ final ButtonSwitcher buttonSwitcher =
+ (ButtonSwitcher)view.findViewById(R.id.wordlist_button_switcher);
+ if (mInterfaceState.isOpen(mWordlistId)) {
+ // The button is open.
+ final int previousStatus = mInterfaceState.getStatus(mWordlistId);
+ buttonSwitcher.setStatusAndUpdateVisuals(getButtonSwitcherStatus(previousStatus));
+ if (previousStatus != mStatus) {
+ // We come here if the status has changed since last time. We need to animate
+ // the transition.
+ buttonSwitcher.setStatusAndUpdateVisuals(getButtonSwitcherStatus(mStatus));
+ mInterfaceState.setOpen(mWordlistId, mStatus);
+ }
+ } else {
+ // The button is closed.
+ buttonSwitcher.setStatusAndUpdateVisuals(ButtonSwitcher.STATUS_NO_BUTTON);
+ }
+ buttonSwitcher.setInternalOnClickListener(mActionButtonClickHandler);
view.setOnClickListener(mPreferenceClickHandler);
}
private class OnWordListPreferenceClick implements View.OnClickListener {
@Override
public void onClick(final View v) {
- final Button button = (Button)v.findViewById(R.id.wordlist_button);
- animateButton(button, ANIMATION_IN);
+ // Note : v is the preference view
final ViewParent parent = v.getParent();
// Just in case something changed in the framework, test for the concrete class
if (!(parent instanceof ListView)) return;
final ListView listView = (ListView)parent;
- final int myIndex = listView.indexOfChild(v) + listView.getFirstVisiblePosition();
- if (NOT_AN_INDEX != sLastClickedIndex) {
- animateButton(getButtonForIndex(listView, sLastClickedIndex), ANIMATION_OUT);
+ final int indexToOpen;
+ // Close all first, we'll open back any item that needs to be open.
+ final boolean wasOpen = mInterfaceState.isOpen(mWordlistId);
+ mInterfaceState.closeAll();
+ if (wasOpen) {
+ // This button being shown. Take note that we don't want to open any button in the
+ // loop below.
+ indexToOpen = -1;
+ } else {
+ // This button was not being shown. Open it, and remember the index of this
+ // child as the one to open in the following loop.
+ mInterfaceState.setOpen(mWordlistId, mStatus);
+ indexToOpen = listView.indexOfChild(v);
}
- sLastClickedIndex = myIndex;
- sLastClickedWordlistId = mWordlistId;
- }
- }
-
- private Button getButtonForIndex(final ListView listView, final int index) {
- final int indexInChildren = index - listView.getFirstVisiblePosition();
- if (indexInChildren < 0 || index > listView.getLastVisiblePosition()) {
- // The view is offscreen.
- return null;
- }
- return (Button)listView.getChildAt(indexInChildren).findViewById(R.id.wordlist_button);
- }
-
- private void animateButton(final Button button, final int direction) {
- if (null == button) return;
- final float outerX = ((View)button.getParent()).getWidth();
- final float innerX = button.getX() - button.getTranslationX();
- if (View.INVISIBLE == button.getVisibility()) {
- button.setTranslationX(outerX - innerX);
- button.setVisibility(View.VISIBLE);
- }
- if (ANIMATION_IN == direction) {
- button.animate().translationX(0);
- } else {
- button.animate().translationX(outerX - innerX);
+ final int lastDisplayedIndex =
+ listView.getLastVisiblePosition() - listView.getFirstVisiblePosition();
+ // The "lastDisplayedIndex" is actually displayed, hence the <=
+ for (int i = 0; i <= lastDisplayedIndex; ++i) {
+ final ButtonSwitcher buttonSwitcher = (ButtonSwitcher)listView.getChildAt(i)
+ .findViewById(R.id.wordlist_button_switcher);
+ if (i == indexToOpen) {
+ buttonSwitcher.setStatusAndUpdateVisuals(getButtonSwitcherStatus(mStatus));
+ } else {
+ buttonSwitcher.setStatusAndUpdateVisuals(ButtonSwitcher.STATUS_NO_BUTTON);
+ }
+ }
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index d74644d..a0ac475 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -333,6 +333,10 @@
private static void cancelAndStartAnimators(final ObjectAnimator animatorToCancel,
final ObjectAnimator animatorToStart) {
+ if (animatorToCancel == null || animatorToStart == null) {
+ // TODO: Stop using null as a no-operation animator.
+ return;
+ }
float startFraction = 0.0f;
if (animatorToCancel.isStarted()) {
animatorToCancel.cancel();
@@ -366,7 +370,9 @@
// When user hits the space or the enter key, just cancel the while-typing timer.
final int typedCode = typedKey.mCode;
if (typedCode == Constants.CODE_SPACE || typedCode == Constants.CODE_ENTER) {
- startWhileTypingFadeinAnimation(keyboardView);
+ if (isTyping) {
+ startWhileTypingFadeinAnimation(keyboardView);
+ }
return;
}
@@ -581,6 +587,7 @@
private ObjectAnimator loadObjectAnimator(final int resId, final Object target) {
if (resId == 0) {
+ // TODO: Stop returning null.
return null;
}
final ObjectAnimator animator = (ObjectAnimator)AnimatorInflater.loadAnimator(
@@ -609,8 +616,18 @@
@ExternallyReferenced
public void setAltCodeKeyWhileTypingAnimAlpha(final int alpha) {
+ if (mAltCodeKeyWhileTypingAnimAlpha == alpha) {
+ return;
+ }
+ // Update the visual of alt-code-key-while-typing.
mAltCodeKeyWhileTypingAnimAlpha = alpha;
- updateAltCodeKeyWhileTyping();
+ final Keyboard keyboard = getKeyboard();
+ if (keyboard == null) {
+ return;
+ }
+ for (final Key key : keyboard.mAltCodeKeysWhileTyping) {
+ invalidateKey(key);
+ }
}
public void setKeyboardActionListener(final KeyboardActionListener listener) {
@@ -1054,6 +1071,7 @@
@Override
public void onShowMoreKeysPanel(final MoreKeysPanel panel) {
+ locatePreviewPlacerView();
if (isShowingMoreKeysPanel()) {
onDismissMoreKeysPanel();
}
@@ -1276,16 +1294,6 @@
invalidateKey(shortcutKey);
}
- private void updateAltCodeKeyWhileTyping() {
- final Keyboard keyboard = getKeyboard();
- if (keyboard == null) {
- return;
- }
- for (final Key key : keyboard.mAltCodeKeysWhileTyping) {
- invalidateKey(key);
- }
- }
-
public void startDisplayLanguageOnSpacebar(final boolean subtypeChanged,
final boolean needsToDisplayLanguage, final boolean hasMultipleEnabledIMEsOrSubtypes) {
mNeedsToDisplayLanguage = needsToDisplayLanguage;
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index dbc2b90..c8c7bb4 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -139,6 +139,8 @@
inputSize, 0 /* commitPoint */, isGesture, prevWordCodePointArray,
mUseFullEditDistance, mOutputCodePoints, mOutputScores, mSpaceIndices,
mOutputTypes);
+ final boolean blockPotentiallyOffensive =
+ Settings.getInstance().getBlockPotentiallyOffensive();
final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList();
for (int j = 0; j < count; ++j) {
final int start = j * MAX_WORD_LENGTH;
@@ -147,10 +149,21 @@
++len;
}
if (len > 0) {
- final int score = SuggestedWordInfo.KIND_WHITELIST == mOutputTypes[j]
+ final int flags = mOutputTypes[j] & SuggestedWordInfo.KIND_MASK_FLAGS;
+ if (blockPotentiallyOffensive
+ && 0 != (flags & SuggestedWordInfo.KIND_FLAG_POSSIBLY_OFFENSIVE)
+ && 0 == (flags & SuggestedWordInfo.KIND_FLAG_EXACT_MATCH)) {
+ // If we block potentially offensive words, and if the word is possibly
+ // offensive, then we don't output it unless it's also an exact match.
+ continue;
+ }
+ final int kind = mOutputTypes[j] & SuggestedWordInfo.KIND_MASK_KIND;
+ final int score = SuggestedWordInfo.KIND_WHITELIST == kind
? SuggestedWordInfo.MAX_SCORE : mOutputScores[j];
+ // TODO: check that all users of the `kind' parameter are ready to accept
+ // flags too and pass mOutputTypes[j] instead of kind
suggestions.add(new SuggestedWordInfo(new String(mOutputCodePoints, start, len),
- score, mOutputTypes[j], mDictType));
+ score, kind, mDictType));
}
}
return suggestions;
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 4a2c3bb..a9b58de 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -210,7 +210,7 @@
* to the cache file name designated by its id and locale, overwriting it if already present
* and creating it (and its containing directory) if necessary.
*/
- private static AssetFileAddress cacheWordList(final String wordlistId, final String locale,
+ private static void cacheWordList(final String wordlistId, final String locale,
final ContentProviderClient providerClient, final Context context) {
final int COMPRESSED_CRYPTED_COMPRESSED = 0;
final int CRYPTED_COMPRESSED = 1;
@@ -228,7 +228,7 @@
providerClient, QUERY_PATH_DATAFILE, wordlistId /* extraPath */);
} catch (RemoteException e) {
Log.e(TAG, "Can't communicate with the dictionary pack", e);
- return null;
+ return;
}
final String finalFileName =
DictionaryInfoUtils.getCacheFileName(wordlistId, locale, context);
@@ -237,11 +237,11 @@
tempFileName = BinaryDictionaryGetter.getTempFileName(wordlistId, context);
} catch (IOException e) {
Log.e(TAG, "Can't open the temporary file", e);
- return null;
+ return;
}
for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
- InputStream originalSourceStream = null;
+ final InputStream originalSourceStream;
InputStream inputStream = null;
InputStream uncompressedStream = null;
InputStream decryptedStream = null;
@@ -254,7 +254,7 @@
// Open input.
afd = openAssetFileDescriptor(providerClient, wordListUri);
// If we can't open it at all, don't even try a number of times.
- if (null == afd) return null;
+ if (null == afd) return;
originalSourceStream = afd.createInputStream();
// Open output.
outputFile = new File(tempFileName);
@@ -305,7 +305,7 @@
}
BinaryDictionaryGetter.removeFilesWithIdExcept(context, wordlistId, finalFile);
// Success! Close files (through the finally{} clause) and return.
- return AssetFileAddress.makeFromFileName(finalFileName);
+ return;
} catch (Exception e) {
if (DEBUG) {
Log.i(TAG, "Can't open word list in mode " + mode, e);
@@ -320,7 +320,7 @@
} finally {
// Ignore exceptions while closing files.
try {
- // inputStream.close() will close afd, we should not call afd.close().
+ if (null != afd) afd.close();
if (null != inputStream) inputStream.close();
if (null != uncompressedStream) uncompressedStream.close();
if (null != decryptedStream) decryptedStream.close();
@@ -350,7 +350,6 @@
} catch (RemoteException e) {
Log.e(TAG, "In addition, communication with the dictionary provider was cut", e);
}
- return null;
}
/**
@@ -359,30 +358,23 @@
* This will query a content provider for word list data for a given locale, and copy the
* files locally so that they can be mmap'ed. This may overwrite previously cached word lists
* with newer versions if a newer version is made available by the content provider.
- * @returns the addresses of the word list files, or null if no data could be obtained.
* @throw FileNotFoundException if the provider returns non-existent data.
* @throw IOException if the provider-returned data could not be read.
*/
- public static List<AssetFileAddress> cacheWordListsFromContentProvider(final Locale locale,
+ public static void cacheWordListsFromContentProvider(final Locale locale,
final Context context, final boolean hasDefaultWordList) {
final ContentProviderClient providerClient = context.getContentResolver().
acquireContentProviderClient(getProviderUriBuilder("").build());
if (null == providerClient) {
Log.e(TAG, "Can't establish communication with the dictionary provider");
- return CollectionUtils.newArrayList();
+ return;
}
try {
final List<WordListInfo> idList = getWordListWordListInfos(locale, context,
hasDefaultWordList);
- final ArrayList<AssetFileAddress> fileAddressList = CollectionUtils.newArrayList();
for (WordListInfo id : idList) {
- final AssetFileAddress afd =
- cacheWordList(id.mId, id.mLocale, providerClient, context);
- if (null != afd) {
- fileAddressList.add(afd);
- }
+ cacheWordList(id.mId, id.mLocale, providerClient, context);
}
- return fileAddressList;
} finally {
providerClient.release();
}
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 2943128..98eadca 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -72,10 +72,16 @@
public static String getTempFileName(final String id, final Context context)
throws IOException {
final String safeId = DictionaryInfoUtils.replaceFileNameDangerousCharacters(id);
+ final File directory = new File(DictionaryInfoUtils.getWordListTempDirectory(context));
+ if (!directory.exists()) {
+ if (!directory.mkdirs()) {
+ Log.e(TAG, "Could not create the temporary directory");
+ }
+ }
// If the first argument is less than three chars, createTempFile throws a
// RuntimeException. We don't really care about what name we get, so just
// put a three-chars prefix makes us safe.
- return File.createTempFile("xxx" + safeId, null).getAbsolutePath();
+ return File.createTempFile("xxx" + safeId, null, directory).getAbsolutePath();
}
/**
@@ -89,8 +95,16 @@
+ fallbackResId);
return null;
}
- return AssetFileAddress.makeFromFileNameAndOffset(
- context.getApplicationInfo().sourceDir, afd.getStartOffset(), afd.getLength());
+ try {
+ return AssetFileAddress.makeFromFileNameAndOffset(
+ context.getApplicationInfo().sourceDir, afd.getStartOffset(), afd.getLength());
+ } finally {
+ try {
+ afd.close();
+ } catch (IOException e) {
+ // Ignored
+ }
+ }
}
private static final class DictPackSettings {
@@ -276,9 +290,6 @@
final Context context) {
final boolean hasDefaultWordList = DictionaryFactory.isDictionaryAvailable(context, locale);
- // cacheWordListsFromContentProvider returns the list of files it copied to local
- // storage, but we don't really care about what was copied NOW: what we want is the
- // list of everything we ever cached, so we ignore the return value.
// TODO: The development-only-diagnostic version is not supported by the Dictionary Pack
// Service yet
if (!ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
diff --git a/java/src/com/android/inputmethod/latin/DebugSettings.java b/java/src/com/android/inputmethod/latin/DebugSettings.java
index 9d47941..5969a63 100644
--- a/java/src/com/android/inputmethod/latin/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/DebugSettings.java
@@ -122,7 +122,7 @@
}
boolean isDebugMode = mDebugMode.isChecked();
final String version = getResources().getString(
- R.string.version_text, Utils.getSdkVersion(getActivity()));
+ R.string.version_text, Utils.getVersionName(getActivity()));
if (!isDebugMode) {
mDebugMode.setTitle(version);
mDebugMode.setSummary("");
diff --git a/java/src/com/android/inputmethod/latin/DictionaryInfoUtils.java b/java/src/com/android/inputmethod/latin/DictionaryInfoUtils.java
index dcfa483..df7bad8 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryInfoUtils.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryInfoUtils.java
@@ -129,6 +129,13 @@
}
/**
+ * Helper method to get the top level temp directory.
+ */
+ public static String getWordListTempDirectory(final Context context) {
+ return context.getFilesDir() + File.separator + "tmp";
+ }
+
+ /**
* Reverse escaping done by replaceFileNameDangerousCharacters.
*/
public static String getWordListIdFromFileName(final String fname) {
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 22ec015..9fefb58 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -47,6 +47,8 @@
public static final String PREF_KEY_USE_CONTACTS_DICT = "pref_key_use_contacts_dict";
public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD =
"pref_key_use_double_space_period";
+ public static final String PREF_BLOCK_POTENTIALLY_OFFENSIVE =
+ "pref_key_block_potentially_offensive";
public static final String PREF_SHOW_LANGUAGE_SWITCH_KEY =
"pref_show_language_switch_key";
public static final String PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST =
@@ -144,6 +146,10 @@
return mCurrentLocale;
}
+ public boolean getBlockPotentiallyOffensive() {
+ return mSettingsValues.mBlockPotentiallyOffensive;
+ }
+
// Accessed from the settings interface, hence public
public static boolean readKeypressSoundEnabled(final SharedPreferences prefs,
final Resources res) {
@@ -165,6 +171,12 @@
return !currentAutoCorrectionSetting.equals(autoCorrectionOff);
}
+ public static boolean readBlockPotentiallyOffensive(final SharedPreferences prefs,
+ final Resources res) {
+ return prefs.getBoolean(Settings.PREF_BLOCK_POTENTIALLY_OFFENSIVE,
+ res.getBoolean(R.bool.config_block_potentially_offensive));
+ }
+
public static boolean readFromBuildConfigIfGestureInputEnabled(final Resources res) {
return res.getBoolean(R.bool.config_gesture_input_enabled_by_build_config);
}
diff --git a/java/src/com/android/inputmethod/latin/SettingsFragment.java b/java/src/com/android/inputmethod/latin/SettingsFragment.java
index 88a2714..835ef7b 100644
--- a/java/src/com/android/inputmethod/latin/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/SettingsFragment.java
@@ -16,6 +16,7 @@
package com.android.inputmethod.latin;
+import android.app.Activity;
import android.app.backup.BackupManager;
import android.content.Context;
import android.content.Intent;
@@ -31,17 +32,20 @@
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
-import android.util.Log;
import android.view.inputmethod.InputMethodSubtype;
+import java.util.TreeSet;
+
import com.android.inputmethod.dictionarypack.DictionarySettingsActivity;
import com.android.inputmethod.latin.define.ProductionFlag;
import com.android.inputmethod.latin.setup.LauncherIconVisibilityManager;
+import com.android.inputmethod.latin.userdictionary.UserDictionaryList;
+import com.android.inputmethod.latin.userdictionary.UserDictionarySettings;
import com.android.inputmethodcommon.InputMethodSettingsFragment;
public final class SettingsFragment extends InputMethodSettingsFragment
implements SharedPreferences.OnSharedPreferenceChangeListener {
- private static final String TAG = SettingsFragment.class.getSimpleName();
+ private static final boolean DBG_USE_INTERNAL_USER_DICTIONARY_SETTINGS = false;
private ListPreference mVoicePreference;
private ListPreference mShowCorrectionSuggestionsPreference;
@@ -197,9 +201,8 @@
final Intent editPersonalDictionaryIntent = editPersonalDictionary.getIntent();
final ResolveInfo ri = context.getPackageManager().resolveActivity(
editPersonalDictionaryIntent, PackageManager.MATCH_DEFAULT_ONLY);
- if (ri == null) {
- // TODO: Set a intent that invokes our own edit personal dictionary activity.
- Log.w(TAG, "No activity that responds to " + editPersonalDictionaryIntent.getAction());
+ if (DBG_USE_INTERNAL_USER_DICTIONARY_SETTINGS || ri == null) {
+ updateUserDictionaryPreference(editPersonalDictionary);
}
if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) {
@@ -408,4 +411,28 @@
}
});
}
+
+ private void updateUserDictionaryPreference(Preference userDictionaryPreference) {
+ final Activity activity = getActivity();
+ final TreeSet<String> localeList = UserDictionaryList.getUserDictionaryLocalesSet(activity);
+ if (null == localeList) {
+ // The locale list is null if and only if the user dictionary service is
+ // not present or disabled. In this case we need to remove the preference.
+ getPreferenceScreen().removePreference(userDictionaryPreference);
+ } else if (localeList.size() <= 1) {
+ userDictionaryPreference.setFragment(UserDictionarySettings.class.getName());
+ // If the size of localeList is 0, we don't set the locale parameter in the
+ // extras. This will be interpreted by the UserDictionarySettings class as
+ // meaning "the current locale".
+ // Note that with the current code for UserDictionaryList#getUserDictionaryLocalesSet()
+ // the locale list always has at least one element, since it always includes the current
+ // locale explicitly. @see UserDictionaryList.getUserDictionaryLocalesSet().
+ if (localeList.size() == 1) {
+ final String locale = (String)localeList.toArray()[0];
+ userDictionaryPreference.getExtras().putString("locale", locale);
+ }
+ } else {
+ userDictionaryPreference.setFragment(UserDictionaryList.class.getName());
+ }
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java
index f77a928..615b2df 100644
--- a/java/src/com/android/inputmethod/latin/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/SettingsValues.java
@@ -34,6 +34,9 @@
*/
public final class SettingsValues {
private static final String TAG = SettingsValues.class.getSimpleName();
+ // "floatNegativeInfinity" is a special marker string for Float.NEGATIVE_INFINITE
+ // currently used for auto-correction
+ private static final String FLOAT_NEGATIVE_INFINITY_MARKER_STRING = "floatNegativeInfinity";
// From resources:
public final int mDelayUpdateOldSuggestions;
@@ -54,6 +57,7 @@
public final boolean mShowsLanguageSwitchKey;
public final boolean mUseContactsDict;
public final boolean mUseDoubleSpacePeriod;
+ public final boolean mBlockPotentiallyOffensive;
// Use bigrams to predict the next word when there is no input for it yet
public final boolean mBigramPredictionEnabled;
public final boolean mGestureInputEnabled;
@@ -123,6 +127,7 @@
mShowsLanguageSwitchKey = Settings.readShowsLanguageSwitchKey(prefs);
mUseContactsDict = prefs.getBoolean(Settings.PREF_KEY_USE_CONTACTS_DICT, true);
mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true);
+ mBlockPotentiallyOffensive = Settings.readBlockPotentiallyOffensive(prefs, res);
mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res);
mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res);
@@ -266,8 +271,12 @@
try {
final int arrayIndex = Integer.valueOf(currentAutoCorrectionSetting);
if (arrayIndex >= 0 && arrayIndex < autoCorrectionThresholdValues.length) {
- autoCorrectionThreshold = Float.parseFloat(
- autoCorrectionThresholdValues[arrayIndex]);
+ final String val = autoCorrectionThresholdValues[arrayIndex];
+ if (FLOAT_NEGATIVE_INFINITY_MARKER_STRING.equals(val)) {
+ autoCorrectionThreshold = Float.NEGATIVE_INFINITY;
+ } else {
+ autoCorrectionThreshold = Float.parseFloat(val);
+ }
}
} catch (NumberFormatException e) {
// Whenever the threshold settings are correct, never come here.
@@ -275,7 +284,7 @@
Log.w(TAG, "Cannot load auto correction threshold setting."
+ " currentAutoCorrectionSetting: " + currentAutoCorrectionSetting
+ ", autoCorrectionThresholdValues: "
- + Arrays.toString(autoCorrectionThresholdValues));
+ + Arrays.toString(autoCorrectionThresholdValues), e);
}
return autoCorrectionThreshold;
}
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
index 616e191..dfddb0f 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -122,6 +122,7 @@
public static final class SuggestedWordInfo {
public static final int MAX_SCORE = Integer.MAX_VALUE;
+ public static final int KIND_MASK_KIND = 0xFF; // Mask to get only the kind
public static final int KIND_TYPED = 0; // What user typed
public static final int KIND_CORRECTION = 1; // Simple correction/suggestion
public static final int KIND_COMPLETION = 2; // Completion (suggestion with appended chars)
@@ -132,6 +133,11 @@
public static final int KIND_SHORTCUT = 7; // A shortcut
public static final int KIND_PREDICTION = 8; // A prediction (== a suggestion with no input)
public static final int KIND_RESUMED = 9; // A resumed suggestion (comes from a span)
+
+ public static final int KIND_MASK_FLAGS = 0xFFFFFF00; // Mask to get the flags
+ public static final int KIND_FLAG_POSSIBLY_OFFENSIVE = 0x80000000;
+ public static final int KIND_FLAG_EXACT_MATCH = 0x40000000;
+
public final String mWord;
public final int mScore;
public final int mKind; // one of the KIND_* constants above
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index fc32bd4..0f96c54 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -475,7 +475,7 @@
return 0;
}
- public static String getSdkVersion(Context context) {
+ public static String getVersionName(Context context) {
try {
if (context == null) {
return "";
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupActivity.java b/java/src/com/android/inputmethod/latin/setup/SetupActivity.java
index a7a4171..044180b 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupActivity.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupActivity.java
@@ -26,6 +26,7 @@
import android.os.Bundle;
import android.os.Message;
import android.provider.Settings;
+import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -40,18 +41,21 @@
import com.android.inputmethod.latin.SettingsActivity;
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
-import java.util.HashMap;
+import java.util.ArrayList;
// TODO: Use Fragment to implement welcome screen and setup steps.
public final class SetupActivity extends Activity implements View.OnClickListener {
+ private static final String TAG = SetupActivity.class.getSimpleName();
+
private View mWelcomeScreen;
private View mSetupScreen;
- private SetupStepIndicatorView mStepIndicatorView;
private Uri mWelcomeVideoUri;
private VideoView mWelcomeVideoView;
private View mActionStart;
+ private View mActionNext;
+ private TextView mStep1Bullet;
private TextView mActionFinish;
- private final SetupStepGroup mSetupStepGroup = new SetupStepGroup();
+ private SetupStepGroup mSetupStepGroup;
private static final String STATE_STEP = "step";
private int mStepNumber;
private static final int STEP_0 = 0;
@@ -129,12 +133,17 @@
final TextView stepsTitle = (TextView)findViewById(R.id.setup_title);
stepsTitle.setText(getString(R.string.setup_steps_title, applicationName));
- mStepIndicatorView = (SetupStepIndicatorView)findViewById(R.id.setup_step_indicator);
+ final SetupStepIndicatorView indicatorView =
+ (SetupStepIndicatorView)findViewById(R.id.setup_step_indicator);
+ mSetupStepGroup = new SetupStepGroup(indicatorView);
- final SetupStep step1 = new SetupStep(applicationName,
- (TextView)findViewById(R.id.setup_step1_bullet), findViewById(R.id.setup_step1),
+ mStep1Bullet = (TextView)findViewById(R.id.setup_step1_bullet);
+ mStep1Bullet.setOnClickListener(this);
+ final SetupStep step1 = new SetupStep(STEP_1, applicationName,
+ mStep1Bullet, findViewById(R.id.setup_step1),
R.string.setup_step1_title, R.string.setup_step1_instruction,
- R.drawable.ic_setup_step1, R.string.setup_step1_action);
+ R.string.setup_step1_finished_instruction, R.drawable.ic_setup_step1,
+ R.string.setup_step1_action);
step1.setAction(new Runnable() {
@Override
public void run() {
@@ -142,12 +151,13 @@
mHandler.startPollingImeSettings();
}
});
- mSetupStepGroup.addStep(STEP_1, step1);
+ mSetupStepGroup.addStep(step1);
- final SetupStep step2 = new SetupStep(applicationName,
+ final SetupStep step2 = new SetupStep(STEP_2, applicationName,
(TextView)findViewById(R.id.setup_step2_bullet), findViewById(R.id.setup_step2),
R.string.setup_step2_title, R.string.setup_step2_instruction,
- R.drawable.ic_setup_step2, R.string.setup_step2_action);
+ 0 /* finishedInstruction */, R.drawable.ic_setup_step2,
+ R.string.setup_step2_action);
step2.setAction(new Runnable() {
@Override
public void run() {
@@ -156,19 +166,20 @@
.showInputMethodPicker();
}
});
- mSetupStepGroup.addStep(STEP_2, step2);
+ mSetupStepGroup.addStep(step2);
- final SetupStep step3 = new SetupStep(applicationName,
+ final SetupStep step3 = new SetupStep(STEP_3, applicationName,
(TextView)findViewById(R.id.setup_step3_bullet), findViewById(R.id.setup_step3),
R.string.setup_step3_title, R.string.setup_step3_instruction,
- R.drawable.ic_setup_step3, R.string.setup_step3_action);
+ 0 /* finishedInstruction */, R.drawable.ic_setup_step3,
+ R.string.setup_step3_action);
step3.setAction(new Runnable() {
@Override
public void run() {
invokeSubtypeEnablerOfThisIme();
}
});
- mSetupStepGroup.addStep(STEP_3, step3);
+ mSetupStepGroup.addStep(step3);
mWelcomeVideoUri = new Uri.Builder()
.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
@@ -182,9 +193,27 @@
mp.start();
}
});
+ mWelcomeVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(final MediaPlayer mp) {
+ // Now VideoView has been laid-out and ready to play, remove background of it to
+ // reveal the video.
+ mWelcomeVideoView.setBackgroundResource(0);
+ }
+ });
+ mWelcomeVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+ @Override
+ public boolean onError(final MediaPlayer mp, final int what, final int extra) {
+ Log.e(TAG, "Playing welcome video causes error: what=" + what + " extra=" + extra);
+ mWelcomeVideoView.setVisibility(View.GONE);
+ return true;
+ }
+ });
mActionStart = findViewById(R.id.setup_start_label);
mActionStart.setOnClickListener(this);
+ mActionNext = findViewById(R.id.setup_next);
+ mActionNext.setOnClickListener(this);
mActionFinish = (TextView)findViewById(R.id.setup_finish);
TextViewCompatUtils.setCompoundDrawablesRelativeWithIntrinsicBounds(mActionFinish,
getResources().getDrawable(R.drawable.ic_setup_finish), null, null, null);
@@ -193,15 +222,25 @@
@Override
public void onClick(final View v) {
- if (v == mActionStart) {
- mStepNumber = STEP_1;
- updateSetupStepView();
- return;
- }
if (v == mActionFinish) {
finish();
return;
}
+ final int stepState = determineSetupState();
+ final int nextStep;
+ if (v == mActionStart) {
+ nextStep = STEP_1;
+ } else if (v == mActionNext) {
+ nextStep = mStepNumber + 1;
+ } else if (v == mStep1Bullet && stepState == STEP_2) {
+ nextStep = STEP_1;
+ } else {
+ nextStep = mStepNumber;
+ }
+ if (mStepNumber != nextStep) {
+ mStepNumber = nextStep;
+ updateSetupStepView();
+ }
}
private void invokeSetupWizardOfThisIme() {
@@ -216,8 +255,7 @@
final Intent intent = new Intent();
intent.setClass(this, SettingsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
- | Intent.FLAG_ACTIVITY_CLEAR_TOP
- | Intent.FLAG_ACTIVITY_NO_HISTORY);
+ | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
@@ -274,10 +312,10 @@
return myImi.getId().equals(currentImeId);
}
- private int determineSetupStepNumber() {
+ private int determineSetupState() {
mHandler.cancelPollingImeSettings();
if (!isThisImeEnabled(this)) {
- return mWasLanguageAndInputSettingsInvoked ? STEP_1 : STEP_0;
+ return STEP_1;
}
if (!isThisImeCurrent(this)) {
return STEP_2;
@@ -285,6 +323,14 @@
return STEP_3;
}
+ private int determineSetupStepNumber() {
+ final int stepState = determineSetupState();
+ if (stepState == STEP_1) {
+ return mWasLanguageAndInputSettingsInvoked ? STEP_1 : STEP_0;
+ }
+ return stepState;
+ }
+
@Override
protected void onSaveInstanceState(final Bundle outState) {
super.onSaveInstanceState(outState);
@@ -351,30 +397,27 @@
return;
}
mWelcomeVideoView.stopPlayback();
- final int layoutDirection = ViewCompatUtils.getLayoutDirection(mStepIndicatorView);
- mStepIndicatorView.setIndicatorPosition(
- getIndicatorPosition(mStepNumber, mSetupStepGroup.getTotalStep(), layoutDirection));
- mSetupStepGroup.enableStep(mStepNumber);
+ final boolean isStepActionAlreadyDone = mStepNumber < determineSetupState();
+ mSetupStepGroup.enableStep(mStepNumber, isStepActionAlreadyDone);
+ mActionNext.setVisibility(isStepActionAlreadyDone ? View.VISIBLE : View.GONE);
mActionFinish.setVisibility((mStepNumber == STEP_3) ? View.VISIBLE : View.GONE);
}
- private static float getIndicatorPosition(final int step, final int totalStep,
- final int layoutDirection) {
- final float pos = ((step - STEP_1) * 2 + 1) / (float)(totalStep * 2);
- return (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos;
- }
-
static final class SetupStep implements View.OnClickListener {
+ public final int mStepNo;
private final View mStepView;
private final TextView mBulletView;
private final int mActivatedColor;
private final int mDeactivatedColor;
+ private final String mInstruction;
+ private final String mFinishedInstruction;
private final TextView mActionLabel;
private Runnable mAction;
- public SetupStep(final String applicationName, final TextView bulletView,
- final View stepView, final int title, final int instruction, final int actionIcon,
- final int actionLabel) {
+ public SetupStep(final int stepNo, final String applicationName, final TextView bulletView,
+ final View stepView, final int title, final int instruction,
+ final int finishedInstruction,final int actionIcon, final int actionLabel) {
+ mStepNo = stepNo;
mStepView = stepView;
mBulletView = bulletView;
final Resources res = stepView.getResources();
@@ -383,14 +426,10 @@
final TextView titleView = (TextView)mStepView.findViewById(R.id.setup_step_title);
titleView.setText(res.getString(title, applicationName));
-
- final TextView instructionView = (TextView)mStepView.findViewById(
- R.id.setup_step_instruction);
- if (instruction == 0) {
- instructionView.setVisibility(View.GONE);
- } else {
- instructionView.setText(res.getString(instruction, applicationName));
- }
+ mInstruction = (instruction == 0) ? null
+ : res.getString(instruction, applicationName);
+ mFinishedInstruction = (finishedInstruction == 0) ? null
+ : res.getString(finishedInstruction, applicationName);
mActionLabel = (TextView)mStepView.findViewById(R.id.setup_step_action_label);
mActionLabel.setText(res.getString(actionLabel));
@@ -403,9 +442,13 @@
}
}
- public void setEnabled(final boolean enabled) {
+ public void setEnabled(final boolean enabled, final boolean isStepActionAlreadyDone) {
mStepView.setVisibility(enabled ? View.VISIBLE : View.GONE);
mBulletView.setTextColor(enabled ? mActivatedColor : mDeactivatedColor);
+ final TextView instructionView = (TextView)mStepView.findViewById(
+ R.id.setup_step_instruction);
+ instructionView.setText(isStepActionAlreadyDone ? mFinishedInstruction : mInstruction);
+ mActionLabel.setVisibility(isStepActionAlreadyDone ? View.GONE : View.VISIBLE);
}
public void setAction(final Runnable action) {
@@ -423,21 +466,22 @@
}
static final class SetupStepGroup {
- private final HashMap<Integer, SetupStep> mGroup = CollectionUtils.newHashMap();
+ private final SetupStepIndicatorView mIndicatorView;
+ private final ArrayList<SetupStep> mGroup = CollectionUtils.newArrayList();
- public void addStep(final int stepNo, final SetupStep step) {
- mGroup.put(stepNo, step);
+ public SetupStepGroup(final SetupStepIndicatorView indicatorView) {
+ mIndicatorView = indicatorView;
}
- public void enableStep(final int enableStepNo) {
- for (final Integer stepNo : mGroup.keySet()) {
- final SetupStep step = mGroup.get(stepNo);
- step.setEnabled(stepNo == enableStepNo);
+ public void addStep(final SetupStep step) {
+ mGroup.add(step);
+ }
+
+ public void enableStep(final int enableStepNo, final boolean isStepActionAlreadyDone) {
+ for (final SetupStep step : mGroup) {
+ step.setEnabled(step.mStepNo == enableStepNo, isStepActionAlreadyDone);
}
- }
-
- public int getTotalStep() {
- return mGroup.size();
+ mIndicatorView.setIndicatorPosition(enableStepNo - STEP_1, mGroup.size());
}
}
}
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java b/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java
index 077a217..c909507 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java
@@ -23,6 +23,7 @@
import android.util.AttributeSet;
import android.view.View;
+import com.android.inputmethod.compat.ViewCompatUtils;
import com.android.inputmethod.latin.R;
public final class SetupStepIndicatorView extends View {
@@ -36,8 +37,13 @@
mIndicatorPaint.setStyle(Paint.Style.FILL);
}
- public void setIndicatorPosition(final float xRatio) {
- mXRatio = xRatio;
+ public void setIndicatorPosition(final int stepPos, final int totalStepNum) {
+ final int layoutDirection = ViewCompatUtils.getLayoutDirection(this);
+ // The indicator position is the center of the partition that is equally divided into
+ // the total step number.
+ final float partionWidth = 1.0f / totalStepNum;
+ final float pos = stepPos * partionWidth + partionWidth / 2.0f;
+ mXRatio = (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos;
invalidate();
}
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java
new file mode 100644
index 0000000..2b6fda3
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java
@@ -0,0 +1,261 @@
+/*
+ * 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.
+ */
+
+package com.android.inputmethod.latin.userdictionary;
+
+import com.android.inputmethod.compat.UserDictionaryCompatUtils;
+import com.android.inputmethod.latin.LocaleUtils;
+import com.android.inputmethod.latin.R;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.provider.UserDictionary;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.EditText;
+
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.TreeSet;
+
+// Caveat: This class is basically taken from
+// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
+// in order to deal with some devices that have issues with the user dictionary handling
+
+/**
+ * A container class to factor common code to UserDictionaryAddWordFragment
+ * and UserDictionaryAddWordActivity.
+ */
+public class UserDictionaryAddWordContents {
+ public static final String EXTRA_MODE = "mode";
+ public static final String EXTRA_WORD = "word";
+ public static final String EXTRA_SHORTCUT = "shortcut";
+ public static final String EXTRA_LOCALE = "locale";
+ public static final String EXTRA_ORIGINAL_WORD = "originalWord";
+ public static final String EXTRA_ORIGINAL_SHORTCUT = "originalShortcut";
+
+ public static final int MODE_EDIT = 0;
+ public static final int MODE_INSERT = 1;
+
+ /* package */ static final int CODE_WORD_ADDED = 0;
+ /* package */ static final int CODE_CANCEL = 1;
+ /* package */ static final int CODE_ALREADY_PRESENT = 2;
+
+ private static final int FREQUENCY_FOR_USER_DICTIONARY_ADDS = 250;
+
+ private final int mMode; // Either MODE_EDIT or MODE_INSERT
+ private final EditText mWordEditText;
+ private final EditText mShortcutEditText;
+ private String mLocale;
+ private final String mOldWord;
+ private final String mOldShortcut;
+
+ /* package */ UserDictionaryAddWordContents(final View view, final Bundle args) {
+ mWordEditText = (EditText)view.findViewById(R.id.user_dictionary_add_word_text);
+ mShortcutEditText = (EditText)view.findViewById(R.id.user_dictionary_add_shortcut);
+ if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) {
+ mShortcutEditText.setVisibility(View.GONE);
+ view.findViewById(R.id.user_dictionary_add_shortcut_label).setVisibility(View.GONE);
+ }
+ final String word = args.getString(EXTRA_WORD);
+ if (null != word) {
+ mWordEditText.setText(word);
+ mWordEditText.setSelection(word.length());
+ }
+ final String shortcut;
+ if (UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) {
+ shortcut = args.getString(EXTRA_SHORTCUT);
+ if (null != shortcut && null != mShortcutEditText) {
+ mShortcutEditText.setText(shortcut);
+ }
+ mOldShortcut = args.getString(EXTRA_SHORTCUT);
+ } else {
+ shortcut = null;
+ mOldShortcut = null;
+ }
+ mMode = args.getInt(EXTRA_MODE); // default return value for #getInt() is 0 = MODE_EDIT
+ mOldWord = args.getString(EXTRA_WORD);
+ updateLocale(args.getString(EXTRA_LOCALE));
+ }
+
+ // locale may be null, this means default locale
+ // It may also be the empty string, which means "all locales"
+ /* package */ void updateLocale(final String locale) {
+ mLocale = null == locale ? Locale.getDefault().toString() : locale;
+ }
+
+ /* package */ void saveStateIntoBundle(final Bundle outState) {
+ outState.putString(EXTRA_WORD, mWordEditText.getText().toString());
+ outState.putString(EXTRA_ORIGINAL_WORD, mOldWord);
+ if (null != mShortcutEditText) {
+ outState.putString(EXTRA_SHORTCUT, mShortcutEditText.getText().toString());
+ }
+ if (null != mOldShortcut) {
+ outState.putString(EXTRA_ORIGINAL_SHORTCUT, mOldShortcut);
+ }
+ outState.putString(EXTRA_LOCALE, mLocale);
+ }
+
+ /* package */ void delete(final Context context) {
+ if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
+ // Mode edit: remove the old entry.
+ final ContentResolver resolver = context.getContentResolver();
+ UserDictionarySettings.deleteWord(mOldWord, mOldShortcut, resolver);
+ }
+ // If we are in add mode, nothing was added, so we don't need to do anything.
+ }
+
+ /* package */
+ int apply(final Context context, final Bundle outParameters) {
+ if (null != outParameters) saveStateIntoBundle(outParameters);
+ final ContentResolver resolver = context.getContentResolver();
+ if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
+ // Mode edit: remove the old entry.
+ UserDictionarySettings.deleteWord(mOldWord, mOldShortcut, resolver);
+ }
+ final String newWord = mWordEditText.getText().toString();
+ final String newShortcut;
+ if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) {
+ newShortcut = null;
+ } else if (null == mShortcutEditText) {
+ newShortcut = null;
+ } else {
+ final String tmpShortcut = mShortcutEditText.getText().toString();
+ if (TextUtils.isEmpty(tmpShortcut)) {
+ newShortcut = null;
+ } else {
+ newShortcut = tmpShortcut;
+ }
+ }
+ if (TextUtils.isEmpty(newWord)) {
+ // If the word is somehow empty, don't insert it.
+ return CODE_CANCEL;
+ }
+ // If there is no shortcut, and the word already exists in the database, then we
+ // should not insert, because either A. the word exists with no shortcut, in which
+ // case the exact same thing we want to insert is already there, or B. the word
+ // exists with at least one shortcut, in which case it has priority on our word.
+ if (hasWord(newWord, context)) return CODE_ALREADY_PRESENT;
+
+ // Disallow duplicates. If the same word with no shortcut is defined, remove it; if
+ // the same word with the same shortcut is defined, remove it; but we don't mind if
+ // there is the same word with a different, non-empty shortcut.
+ UserDictionarySettings.deleteWord(newWord, null, resolver);
+ if (!TextUtils.isEmpty(newShortcut)) {
+ // If newShortcut is empty we just deleted this, no need to do it again
+ UserDictionarySettings.deleteWord(newWord, newShortcut, resolver);
+ }
+
+ // In this class we use the empty string to represent 'all locales' and mLocale cannot
+ // be null. However the addWord method takes null to mean 'all locales'.
+ UserDictionaryCompatUtils.addWord(context, newWord.toString(),
+ FREQUENCY_FOR_USER_DICTIONARY_ADDS, newShortcut, TextUtils.isEmpty(mLocale) ?
+ null : LocaleUtils.constructLocaleFromString(mLocale));
+
+ return CODE_WORD_ADDED;
+ }
+
+ private static final String[] HAS_WORD_PROJECTION = { UserDictionary.Words.WORD };
+ private static final String HAS_WORD_SELECTION_ONE_LOCALE = UserDictionary.Words.WORD
+ + "=? AND " + UserDictionary.Words.LOCALE + "=?";
+ private static final String HAS_WORD_SELECTION_ALL_LOCALES = UserDictionary.Words.WORD
+ + "=? AND " + UserDictionary.Words.LOCALE + " is null";
+ private boolean hasWord(final String word, final Context context) {
+ final Cursor cursor;
+ // mLocale == "" indicates this is an entry for all languages. Here, mLocale can't
+ // be null at all (it's ensured by the updateLocale method).
+ if ("".equals(mLocale)) {
+ cursor = context.getContentResolver().query(UserDictionary.Words.CONTENT_URI,
+ HAS_WORD_PROJECTION, HAS_WORD_SELECTION_ALL_LOCALES,
+ new String[] { word }, null /* sort order */);
+ } else {
+ cursor = context.getContentResolver().query(UserDictionary.Words.CONTENT_URI,
+ HAS_WORD_PROJECTION, HAS_WORD_SELECTION_ONE_LOCALE,
+ new String[] { word, mLocale }, null /* sort order */);
+ }
+ try {
+ if (null == cursor) return false;
+ return cursor.getCount() > 0;
+ } finally {
+ if (null != cursor) cursor.close();
+ }
+ }
+
+ public static class LocaleRenderer {
+ private final String mLocaleString;
+ private final String mDescription;
+ // LocaleString may NOT be null.
+ public LocaleRenderer(final Context context, final String localeString) {
+ mLocaleString = localeString;
+ if (null == localeString) {
+ mDescription = context.getString(R.string.user_dict_settings_more_languages);
+ } else if ("".equals(localeString)) {
+ mDescription = context.getString(R.string.user_dict_settings_all_languages);
+ } else {
+ mDescription = LocaleUtils.constructLocaleFromString(localeString).getDisplayName();
+ }
+ }
+ @Override
+ public String toString() {
+ return mDescription;
+ }
+ public String getLocaleString() {
+ return mLocaleString;
+ }
+ // "More languages..." is null ; "All languages" is the empty string.
+ public boolean isMoreLanguages() {
+ return null == mLocaleString;
+ }
+ }
+
+ private static void addLocaleDisplayNameToList(final Context context,
+ final ArrayList<LocaleRenderer> list, final String locale) {
+ if (null != locale) {
+ list.add(new LocaleRenderer(context, locale));
+ }
+ }
+
+ // Helper method to get the list of locales to display for this word
+ public ArrayList<LocaleRenderer> getLocalesList(final Activity activity) {
+ final TreeSet<String> locales = UserDictionaryList.getUserDictionaryLocalesSet(activity);
+ // Remove our locale if it's in, because we're always gonna put it at the top
+ locales.remove(mLocale); // mLocale may not be null
+ final String systemLocale = Locale.getDefault().toString();
+ // The system locale should be inside. We want it at the 2nd spot.
+ locales.remove(systemLocale); // system locale may not be null
+ locales.remove(""); // Remove the empty string if it's there
+ final ArrayList<LocaleRenderer> localesList = new ArrayList<LocaleRenderer>();
+ // Add the passed locale, then the system locale at the top of the list. Add an
+ // "all languages" entry at the bottom of the list.
+ addLocaleDisplayNameToList(activity, localesList, mLocale);
+ if (!systemLocale.equals(mLocale)) {
+ addLocaleDisplayNameToList(activity, localesList, systemLocale);
+ }
+ for (final String l : locales) {
+ // TODO: sort in unicode order
+ addLocaleDisplayNameToList(activity, localesList, l);
+ }
+ if (!"".equals(mLocale)) {
+ // If mLocale is "", then we already inserted the "all languages" item, so don't do it
+ addLocaleDisplayNameToList(activity, localesList, ""); // meaning: all languages
+ }
+ localesList.add(new LocaleRenderer(activity, null)); // meaning: select another locale
+ return localesList;
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java
new file mode 100644
index 0000000..5f4c446
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java
@@ -0,0 +1,162 @@
+/*
+ * 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.
+ */
+
+package com.android.inputmethod.latin.userdictionary;
+
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.userdictionary.UserDictionaryAddWordContents.LocaleRenderer;
+import com.android.inputmethod.latin.userdictionary.UserDictionaryLocalePicker.LocationChangedListener;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+// Caveat: This class is basically taken from
+// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
+// in order to deal with some devices that have issues with the user dictionary handling
+
+/**
+ * Fragment to add a word/shortcut to the user dictionary.
+ *
+ * As opposed to the UserDictionaryActivity, this is only invoked within Settings
+ * from the UserDictionarySettings.
+ */
+public class UserDictionaryAddWordFragment extends Fragment
+ implements AdapterView.OnItemSelectedListener, LocationChangedListener {
+
+ private static final int OPTIONS_MENU_ADD = Menu.FIRST;
+ private static final int OPTIONS_MENU_DELETE = Menu.FIRST + 1;
+
+ private UserDictionaryAddWordContents mContents;
+ private View mRootView;
+ private boolean mIsDeleting = false;
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+ mRootView = inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null);
+ mIsDeleting = false;
+ if (null == mContents) {
+ mContents = new UserDictionaryAddWordContents(mRootView, getArguments());
+ }
+ return mRootView;
+ }
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ final MenuItem actionItemDelete = menu.add(0, OPTIONS_MENU_DELETE, 0,
+ R.string.user_dict_settings_delete).setIcon(android.R.drawable.ic_menu_delete);
+ actionItemDelete.setShowAsAction(
+ MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+ final MenuItem actionItemAdd = menu.add(0, OPTIONS_MENU_ADD, 0,
+ R.string.user_dict_settings_delete).setIcon(R.drawable.ic_menu_add);
+ actionItemAdd.setShowAsAction(
+ MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+ }
+
+ /**
+ * Callback for the framework when a menu option is pressed.
+ *
+ * @param MenuItem the item that was pressed
+ * @return false to allow normal menu processing to proceed, true to consume it here
+ */
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == OPTIONS_MENU_ADD) {
+ // added the entry in "onPause"
+ getActivity().onBackPressed();
+ return true;
+ }
+ if (item.getItemId() == OPTIONS_MENU_DELETE) {
+ mContents.delete(getActivity());
+ mIsDeleting = true;
+ getActivity().onBackPressed();
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ // We are being shown: display the word
+ updateSpinner();
+ }
+
+ private void updateSpinner() {
+ final ArrayList<LocaleRenderer> localesList = mContents.getLocalesList(getActivity());
+
+ final Spinner localeSpinner =
+ (Spinner)mRootView.findViewById(R.id.user_dictionary_add_locale);
+ final ArrayAdapter<LocaleRenderer> adapter = new ArrayAdapter<LocaleRenderer>(getActivity(),
+ android.R.layout.simple_spinner_item, localesList);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ localeSpinner.setAdapter(adapter);
+ localeSpinner.setOnItemSelectedListener(this);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ // We are being hidden: commit changes to the user dictionary, unless we were deleting it
+ if (!mIsDeleting) {
+ mContents.apply(getActivity(), null);
+ }
+ }
+
+ @Override
+ public void onItemSelected(final AdapterView<?> parent, final View view, final int pos,
+ final long id) {
+ final LocaleRenderer locale = (LocaleRenderer)parent.getItemAtPosition(pos);
+ if (locale.isMoreLanguages()) {
+ PreferenceActivity preferenceActivity = (PreferenceActivity)getActivity();
+ preferenceActivity.startPreferenceFragment(new UserDictionaryLocalePicker(), true);
+ } else {
+ mContents.updateLocale(locale.getLocaleString());
+ }
+ }
+
+ @Override
+ public void onNothingSelected(final AdapterView<?> parent) {
+ // I'm not sure we can come here, but if we do, that's the right thing to do.
+ final Bundle args = getArguments();
+ mContents.updateLocale(args.getString(UserDictionaryAddWordContents.EXTRA_LOCALE));
+ }
+
+ // Called by the locale picker
+ @Override
+ public void onLocaleSelected(final Locale locale) {
+ mContents.updateLocale(locale.toString());
+ getActivity().onBackPressed();
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
new file mode 100644
index 0000000..6e64882
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+
+package com.android.inputmethod.latin.userdictionary;
+
+import com.android.inputmethod.latin.LocaleUtils;
+import com.android.inputmethod.latin.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceGroup;
+import android.provider.UserDictionary;
+import android.text.TextUtils;
+
+import java.util.Locale;
+import java.util.TreeSet;
+
+// Caveat: This class is basically taken from
+// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryList.java
+// in order to deal with some devices that have issues with the user dictionary handling
+
+public class UserDictionaryList extends PreferenceFragment {
+
+ public static final String USER_DICTIONARY_SETTINGS_INTENT_ACTION =
+ "android.settings.USER_DICTIONARY_SETTINGS";
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getActivity()));
+ }
+
+ public static TreeSet<String> getUserDictionaryLocalesSet(Activity activity) {
+ @SuppressWarnings("deprecation")
+ final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI,
+ new String[] { UserDictionary.Words.LOCALE },
+ null, null, null);
+ final TreeSet<String> localeList = new TreeSet<String>();
+ boolean addedAllLocale = false;
+ if (null == cursor) {
+ // The user dictionary service is not present or disabled. Return null.
+ return null;
+ } else if (cursor.moveToFirst()) {
+ final int columnIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE);
+ do {
+ final String locale = cursor.getString(columnIndex);
+ final boolean allLocale = TextUtils.isEmpty(locale);
+ localeList.add(allLocale ? "" : locale);
+ if (allLocale) {
+ addedAllLocale = true;
+ }
+ } while (cursor.moveToNext());
+ }
+ if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED && !addedAllLocale) {
+ // For ICS, we need to show "For all languages" in case that the keyboard locale
+ // is different from the system locale
+ localeList.add("");
+ }
+ localeList.add(Locale.getDefault().toString());
+ return localeList;
+ }
+
+ /**
+ * Creates the entries that allow the user to go into the user dictionary for each locale.
+ * @param userDictGroup The group to put the settings in.
+ */
+ protected void createUserDictSettings(PreferenceGroup userDictGroup) {
+ final Activity activity = getActivity();
+ userDictGroup.removeAll();
+ final TreeSet<String> localeList =
+ UserDictionaryList.getUserDictionaryLocalesSet(activity);
+
+ if (localeList.isEmpty()) {
+ userDictGroup.addPreference(createUserDictionaryPreference(null, activity));
+ } else {
+ for (String locale : localeList) {
+ userDictGroup.addPreference(createUserDictionaryPreference(locale, activity));
+ }
+ }
+ }
+
+ /**
+ * Create a single User Dictionary Preference object, with its parameters set.
+ * @param locale The locale for which this user dictionary is for.
+ * @return The corresponding preference.
+ */
+ protected Preference createUserDictionaryPreference(String locale, Activity activity) {
+ final Preference newPref = new Preference(getActivity());
+ final Intent intent = new Intent(USER_DICTIONARY_SETTINGS_INTENT_ACTION);
+ if (null == locale) {
+ newPref.setTitle(Locale.getDefault().getDisplayName());
+ } else {
+ if ("".equals(locale))
+ newPref.setTitle(getString(R.string.user_dict_settings_all_languages));
+ else
+ newPref.setTitle(LocaleUtils.constructLocaleFromString(locale).getDisplayName());
+ intent.putExtra("locale", locale);
+ newPref.getExtras().putString("locale", locale);
+ }
+ newPref.setIntent(intent);
+ newPref.setFragment(UserDictionarySettings.class.getName());
+ return newPref;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ createUserDictSettings(getPreferenceScreen());
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryLocalePicker.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryLocalePicker.java
new file mode 100644
index 0000000..58d3fb9
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryLocalePicker.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+package com.android.inputmethod.latin.userdictionary;
+
+import android.app.Fragment;
+
+import java.util.Locale;
+
+// Caveat: This class is basically taken from
+// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryLocalePicker.java
+// in order to deal with some devices that have issues with the user dictionary handling
+
+public class UserDictionaryLocalePicker extends Fragment {
+ public UserDictionaryLocalePicker() {
+ super();
+ // TODO: implement
+ }
+
+ public interface LocationChangedListener {
+ public void onLocaleSelected(Locale locale);
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
new file mode 100644
index 0000000..36bc5ba
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
@@ -0,0 +1,333 @@
+/**
+ * Copyright (C) 2013 Google Inc.
+ *
+ * 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.userdictionary;
+
+import com.android.inputmethod.latin.R;
+
+import android.app.ListFragment;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.Build;
+import android.os.Bundle;
+import android.provider.UserDictionary;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AlphabetIndexer;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.SectionIndexer;
+import android.widget.SimpleCursorAdapter;
+import android.widget.TextView;
+
+import java.util.Locale;
+
+// Caveat: This class is basically taken from
+// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionarySettings.java
+// in order to deal with some devices that have issues with the user dictionary handling
+
+public class UserDictionarySettings extends ListFragment {
+
+ public static final boolean IS_SHORTCUT_API_SUPPORTED =
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
+
+ private static final String[] QUERY_PROJECTION_SHORTCUT_UNSUPPORTED =
+ { UserDictionary.Words._ID, UserDictionary.Words.WORD};
+ private static final String[] QUERY_PROJECTION_SHORTCUT_SUPPORTED =
+ { UserDictionary.Words._ID, UserDictionary.Words.WORD, UserDictionary.Words.SHORTCUT};
+ private static final String[] QUERY_PROJECTION =
+ IS_SHORTCUT_API_SUPPORTED ?
+ QUERY_PROJECTION_SHORTCUT_SUPPORTED : QUERY_PROJECTION_SHORTCUT_UNSUPPORTED;
+
+ // The index of the shortcut in the above array.
+ private static final int INDEX_SHORTCUT = 2;
+
+ private static final String[] ADAPTER_FROM_SHORTCUT_UNSUPPORTED = {
+ UserDictionary.Words.WORD,
+ };
+
+ private static final String[] ADAPTER_FROM_SHORTCUT_SUPPORTED = {
+ UserDictionary.Words.WORD, UserDictionary.Words.SHORTCUT
+ };
+
+ private static final String[] ADAPTER_FROM = IS_SHORTCUT_API_SUPPORTED ?
+ ADAPTER_FROM_SHORTCUT_SUPPORTED : ADAPTER_FROM_SHORTCUT_UNSUPPORTED;
+
+ private static final int[] ADAPTER_TO_SHORTCUT_UNSUPPORTED = {
+ android.R.id.text1,
+ };
+
+ private static final int[] ADAPTER_TO_SHORTCUT_SUPPORTED = {
+ android.R.id.text1, android.R.id.text2
+ };
+
+ private static final int[] ADAPTER_TO = IS_SHORTCUT_API_SUPPORTED ?
+ ADAPTER_TO_SHORTCUT_SUPPORTED : ADAPTER_TO_SHORTCUT_UNSUPPORTED;
+
+ // Either the locale is empty (means the word is applicable to all locales)
+ // or the word equals our current locale
+ private static final String QUERY_SELECTION =
+ UserDictionary.Words.LOCALE + "=?";
+ private static final String QUERY_SELECTION_ALL_LOCALES =
+ UserDictionary.Words.LOCALE + " is null";
+
+ private static final String DELETE_SELECTION_WITH_SHORTCUT = UserDictionary.Words.WORD
+ + "=? AND " + UserDictionary.Words.SHORTCUT + "=?";
+ private static final String DELETE_SELECTION_WITHOUT_SHORTCUT = UserDictionary.Words.WORD
+ + "=? AND " + UserDictionary.Words.SHORTCUT + " is null OR "
+ + UserDictionary.Words.SHORTCUT + "=''";
+ private static final String DELETE_SELECTION_SHORTCUT_UNSUPPORTED =
+ UserDictionary.Words.WORD + "=?";
+
+ private static final int OPTIONS_MENU_ADD = Menu.FIRST;
+
+ private Cursor mCursor;
+
+ protected String mLocale;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(
+ LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(
+ R.layout.user_dictionary_preference_list_fragment, container, false);
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ final Intent intent = getActivity().getIntent();
+ final String localeFromIntent =
+ null == intent ? null : intent.getStringExtra("locale");
+
+ final Bundle arguments = getArguments();
+ final String localeFromArguments =
+ null == arguments ? null : arguments.getString("locale");
+
+ final String locale;
+ if (null != localeFromArguments) {
+ locale = localeFromArguments;
+ } else if (null != localeFromIntent) {
+ locale = localeFromIntent;
+ } else {
+ locale = null;
+ }
+
+ mLocale = locale;
+ mCursor = createCursor(locale);
+ TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
+ emptyView.setText(R.string.user_dict_settings_empty_text);
+
+ final ListView listView = getListView();
+ listView.setAdapter(createAdapter());
+ listView.setFastScrollEnabled(true);
+ listView.setEmptyView(emptyView);
+
+ setHasOptionsMenu(true);
+
+ }
+
+ @SuppressWarnings("deprecation")
+ private Cursor createCursor(final String locale) {
+ // Locale can be any of:
+ // - The string representation of a locale, as returned by Locale#toString()
+ // - The empty string. This means we want a cursor returning words valid for all locales.
+ // - null. This means we want a cursor for the current locale, whatever this is.
+ // Note that this contrasts with the data inside the database, where NULL means "all
+ // locales" and there should never be an empty string. The confusion is called by the
+ // historical use of null for "all locales".
+ // TODO: it should be easy to make this more readable by making the special values
+ // human-readable, like "all_locales" and "current_locales" strings, provided they
+ // can be guaranteed not to match locales that may exist.
+ if ("".equals(locale)) {
+ // Case-insensitive sort
+ return getActivity().managedQuery(UserDictionary.Words.CONTENT_URI, QUERY_PROJECTION,
+ QUERY_SELECTION_ALL_LOCALES, null,
+ "UPPER(" + UserDictionary.Words.WORD + ")");
+ } else {
+ final String queryLocale = null != locale ? locale : Locale.getDefault().toString();
+ return getActivity().managedQuery(UserDictionary.Words.CONTENT_URI, QUERY_PROJECTION,
+ QUERY_SELECTION, new String[] { queryLocale },
+ "UPPER(" + UserDictionary.Words.WORD + ")");
+ }
+ }
+
+ private ListAdapter createAdapter() {
+ return new MyAdapter(getActivity(), R.layout.user_dictionary_item, mCursor,
+ ADAPTER_FROM, ADAPTER_TO, this);
+ }
+
+ @Override
+ public void onListItemClick(ListView l, View v, int position, long id) {
+ final String word = getWord(position);
+ final String shortcut = getShortcut(position);
+ if (word != null) {
+ showAddOrEditDialog(word, shortcut);
+ }
+ }
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) {
+ final Locale systemLocale = getResources().getConfiguration().locale;
+ if (!TextUtils.isEmpty(mLocale) && !mLocale.equals(systemLocale.toString())) {
+ // Hide the add button for ICS because it doesn't support specifying a locale
+ // for an entry. This new "locale"-aware API has been added in conjunction
+ // with the shortcut API.
+ return;
+ }
+ }
+ MenuItem actionItem =
+ menu.add(0, OPTIONS_MENU_ADD, 0, R.string.user_dict_settings_add_menu_title)
+ .setIcon(R.drawable.ic_menu_add);
+ actionItem.setShowAsAction(
+ MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == OPTIONS_MENU_ADD) {
+ showAddOrEditDialog(null, null);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Add or edit a word. If editingWord is null, it's an add; otherwise, it's an edit.
+ * @param editingWord the word to edit, or null if it's an add.
+ * @param editingShortcut the shortcut for this entry, or null if none.
+ */
+ private void showAddOrEditDialog(final String editingWord, final String editingShortcut) {
+ final Bundle args = new Bundle();
+ args.putInt(UserDictionaryAddWordContents.EXTRA_MODE, null == editingWord
+ ? UserDictionaryAddWordContents.MODE_INSERT
+ : UserDictionaryAddWordContents.MODE_EDIT);
+ args.putString(UserDictionaryAddWordContents.EXTRA_WORD, editingWord);
+ args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, editingShortcut);
+ args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mLocale);
+ android.preference.PreferenceActivity pa =
+ (android.preference.PreferenceActivity)getActivity();
+ pa.startPreferencePanel(UserDictionaryAddWordFragment.class.getName(),
+ args, R.string.user_dict_settings_add_dialog_title, null, null, 0);
+ }
+
+ private String getWord(final int position) {
+ if (null == mCursor) return null;
+ mCursor.moveToPosition(position);
+ // Handle a possible race-condition
+ if (mCursor.isAfterLast()) return null;
+
+ return mCursor.getString(
+ mCursor.getColumnIndexOrThrow(UserDictionary.Words.WORD));
+ }
+
+ private String getShortcut(final int position) {
+ if (!IS_SHORTCUT_API_SUPPORTED) return null;
+ if (null == mCursor) return null;
+ mCursor.moveToPosition(position);
+ // Handle a possible race-condition
+ if (mCursor.isAfterLast()) return null;
+
+ return mCursor.getString(
+ mCursor.getColumnIndexOrThrow(UserDictionary.Words.SHORTCUT));
+ }
+
+ public static void deleteWord(final String word, final String shortcut,
+ final ContentResolver resolver) {
+ if (!IS_SHORTCUT_API_SUPPORTED) {
+ resolver.delete(UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_SHORTCUT_UNSUPPORTED,
+ new String[] { word });
+ } else if (TextUtils.isEmpty(shortcut)) {
+ resolver.delete(
+ UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITHOUT_SHORTCUT,
+ new String[] { word });
+ } else {
+ resolver.delete(
+ UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITH_SHORTCUT,
+ new String[] { word, shortcut });
+ }
+ }
+
+ private static class MyAdapter extends SimpleCursorAdapter implements SectionIndexer {
+
+ private AlphabetIndexer mIndexer;
+
+ private ViewBinder mViewBinder = new ViewBinder() {
+
+ @Override
+ public boolean setViewValue(View v, Cursor c, int columnIndex) {
+ if (!IS_SHORTCUT_API_SUPPORTED) {
+ // just let SimpleCursorAdapter set the view values
+ return false;
+ }
+ if (columnIndex == INDEX_SHORTCUT) {
+ final String shortcut = c.getString(INDEX_SHORTCUT);
+ if (TextUtils.isEmpty(shortcut)) {
+ v.setVisibility(View.GONE);
+ } else {
+ ((TextView)v).setText(shortcut);
+ v.setVisibility(View.VISIBLE);
+ }
+ v.invalidate();
+ return true;
+ }
+
+ return false;
+ }
+ };
+
+ @SuppressWarnings("deprecation")
+ public MyAdapter(Context context, int layout, Cursor c, String[] from, int[] to,
+ UserDictionarySettings settings) {
+ super(context, layout, c, from, to);
+
+ if (null != c) {
+ final String alphabet = context.getString(R.string.user_dict_fast_scroll_alphabet);
+ final int wordColIndex = c.getColumnIndexOrThrow(UserDictionary.Words.WORD);
+ mIndexer = new AlphabetIndexer(c, wordColIndex, alphabet);
+ }
+ setViewBinder(mViewBinder);
+ }
+
+ @Override
+ public int getPositionForSection(int section) {
+ return null == mIndexer ? 0 : mIndexer.getPositionForSection(section);
+ }
+
+ @Override
+ public int getSectionForPosition(int position) {
+ return null == mIndexer ? 0 : mIndexer.getSectionForPosition(position);
+ }
+
+ @Override
+ public Object[] getSections() {
+ return null == mIndexer ? null : mIndexer.getSections();
+ }
+ }
+}
diff --git a/native/jni/src/bigram_dictionary.cpp b/native/jni/src/bigram_dictionary.cpp
index 9289038..9053e72 100644
--- a/native/jni/src/bigram_dictionary.cpp
+++ b/native/jni/src/bigram_dictionary.cpp
@@ -187,7 +187,7 @@
&pos);
(*map)[bigramPos] = probability;
setInFilter(filter, bigramPos);
- } while (0 != (BinaryFormat::FLAG_ATTRIBUTE_HAS_NEXT & bigramFlags));
+ } while (BinaryFormat::FLAG_ATTRIBUTE_HAS_NEXT & bigramFlags);
}
bool BigramDictionary::checkFirstCharacter(int *word, int *inputCodePoints) const {
diff --git a/native/jni/src/binary_format.h b/native/jni/src/binary_format.h
index ad16039..06f50dc 100644
--- a/native/jni/src/binary_format.h
+++ b/native/jni/src/binary_format.h
@@ -23,6 +23,7 @@
#include "bloom_filter.h"
#include "char_utils.h"
+#include "hash_map_compat.h"
namespace latinime {
@@ -93,7 +94,13 @@
const int unigramProbability, const int bigramProbability);
static int getProbability(const int position, const std::map<int, int> *bigramMap,
const uint8_t *bigramFilter, const int unigramProbability);
+ static int getBigramProbabilityFromHashMap(const int position,
+ const hash_map_compat<int, int> *bigramMap, const int unigramProbability);
static float getMultiWordCostMultiplier(const uint8_t *const dict);
+ static void fillBigramProbabilityToHashMap(const uint8_t *const root, int position,
+ hash_map_compat<int, int> *bigramMap);
+ static int getBigramProbability(const uint8_t *const root, int position,
+ const int nextPosition, const int unigramProbability);
// Flags for special processing
// Those *must* match the flags in makedict (BinaryDictInputOutput#*_PROCESSING_FLAG) or
@@ -105,6 +112,8 @@
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryFormat);
+ static int getBigramListPositionForWordPosition(const uint8_t *const root, int position);
+
static const int FLAG_GROUP_ADDRESS_TYPE_NOADDRESS = 0x00;
static const int FLAG_GROUP_ADDRESS_TYPE_ONEBYTE = 0x40;
static const int FLAG_GROUP_ADDRESS_TYPE_TWOBYTES = 0x80;
@@ -164,7 +173,7 @@
}
inline bool BinaryFormat::hasBlacklistedOrNotAWordFlag(const int flags) {
- return flags & (FLAG_IS_BLACKLISTED | FLAG_IS_NOT_A_WORD);
+ return (flags & (FLAG_IS_BLACKLISTED | FLAG_IS_NOT_A_WORD)) != 0;
}
inline int BinaryFormat::getHeaderSize(const uint8_t *const dict) {
@@ -687,5 +696,68 @@
}
return backoff(unigramProbability);
}
+
+// This returns a probability in log space.
+inline int BinaryFormat::getBigramProbabilityFromHashMap(const int position,
+ const hash_map_compat<int, int> *bigramMap, const int unigramProbability) {
+ if (!bigramMap) return backoff(unigramProbability);
+ const hash_map_compat<int, int>::const_iterator bigramProbabilityIt = bigramMap->find(position);
+ if (bigramProbabilityIt != bigramMap->end()) {
+ const int bigramProbability = bigramProbabilityIt->second;
+ return computeProbabilityForBigram(unigramProbability, bigramProbability);
+ }
+ return backoff(unigramProbability);
+}
+
+AK_FORCE_INLINE void BinaryFormat::fillBigramProbabilityToHashMap(
+ const uint8_t *const root, int position, hash_map_compat<int, int> *bigramMap) {
+ position = getBigramListPositionForWordPosition(root, position);
+ if (0 == position) return;
+
+ uint8_t bigramFlags;
+ do {
+ bigramFlags = getFlagsAndForwardPointer(root, &position);
+ const int probability = MASK_ATTRIBUTE_PROBABILITY & bigramFlags;
+ const int bigramPos = getAttributeAddressAndForwardPointer(root, bigramFlags,
+ &position);
+ (*bigramMap)[bigramPos] = probability;
+ } while (FLAG_ATTRIBUTE_HAS_NEXT & bigramFlags);
+}
+
+AK_FORCE_INLINE int BinaryFormat::getBigramProbability(const uint8_t *const root, int position,
+ const int nextPosition, const int unigramProbability) {
+ position = getBigramListPositionForWordPosition(root, position);
+ if (0 == position) return backoff(unigramProbability);
+
+ uint8_t bigramFlags;
+ do {
+ bigramFlags = getFlagsAndForwardPointer(root, &position);
+ const int bigramPos = getAttributeAddressAndForwardPointer(
+ root, bigramFlags, &position);
+ if (bigramPos == nextPosition) {
+ const int bigramProbability = MASK_ATTRIBUTE_PROBABILITY & bigramFlags;
+ return computeProbabilityForBigram(unigramProbability, bigramProbability);
+ }
+ } while (FLAG_ATTRIBUTE_HAS_NEXT & bigramFlags);
+ return backoff(unigramProbability);
+}
+
+// Returns a pointer to the start of the bigram list.
+AK_FORCE_INLINE int BinaryFormat::getBigramListPositionForWordPosition(
+ const uint8_t *const root, int position) {
+ if (NOT_VALID_WORD == position) return 0;
+ const uint8_t flags = getFlagsAndForwardPointer(root, &position);
+ if (!(flags & FLAG_HAS_BIGRAMS)) return 0;
+ if (flags & FLAG_HAS_MULTIPLE_CHARS) {
+ position = skipOtherCharacters(root, position);
+ } else {
+ getCodePointAndForwardPointer(root, &position);
+ }
+ position = skipProbability(flags, position);
+ position = skipChildrenPosition(flags, position);
+ position = skipShortcuts(root, flags, position);
+ return position;
+}
+
} // namespace latinime
#endif // LATINIME_BINARY_FORMAT_H
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index 6ef9f41..eb59744 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -379,6 +379,15 @@
#error "BIGRAM_FILTER_MODULO is larger than BIGRAM_FILTER_BYTE_SIZE"
#endif
+// Max number of bigram maps (previous word contexts) to be cached. Increasing this number could
+// improve bigram lookup speed for multi-word suggestions, but at the cost of more memory usage.
+// Also, there are diminishing returns since the most frequently used bigrams are typically near
+// the beginning of the input and are thus the first ones to be cached. Note that these bigrams
+// are reset for each new composing word.
+#define MAX_CACHED_PREV_WORDS_IN_BIGRAM_MAP 25
+// Most common previous word contexts currently have 100 bigrams
+#define DEFAULT_HASH_MAP_SIZE_FOR_EACH_BIGRAM_MAP 100
+
template<typename T> AK_FORCE_INLINE const T &min(const T &a, const T &b) { return a < b ? a : b; }
template<typename T> AK_FORCE_INLINE const T &max(const T &a, const T &b) { return a > b ? a : b; }
@@ -417,16 +426,45 @@
} DoubleLetterLevel;
typedef enum {
+ // Correction for MATCH_CHAR
CT_MATCH,
+ // Correction for PROXIMITY_CHAR
CT_PROXIMITY,
+ // Correction for ADDITIONAL_PROXIMITY_CHAR
CT_ADDITIONAL_PROXIMITY,
+ // Correction for SUBSTITUTION_CHAR
CT_SUBSTITUTION,
+ // Skip one omitted letter
CT_OMISSION,
+ // Delete an unnecessarily inserted letter
CT_INSERTION,
+ // Swap the order of next two touch points
CT_TRANSPOSITION,
CT_COMPLETION,
CT_TERMINAL,
+ // Create new word with space omission
CT_NEW_WORD_SPACE_OMITTION,
+ // Create new word with space substitution
CT_NEW_WORD_SPACE_SUBSTITUTION,
} CorrectionType;
+
+// ErrorType is mainly decided by CorrectionType but it is also depending on if
+// the correction has really been performed or not.
+typedef enum {
+ // Substitution, omission and transposition
+ ET_EDIT_CORRECTION,
+ // Proximity error
+ ET_PROXIMITY_CORRECTION,
+ // Completion
+ ET_COMPLETION,
+ // New word
+ // TODO: Remove.
+ // A new word error should be an edit correction error or a proximity correction error.
+ ET_NEW_WORD,
+ // Treat error as an intentional omission when the CorrectionType is omission and the node can
+ // be intentional omission.
+ ET_INTENTIONAL_OMISSION,
+ // Not treated as an error. Tracked for checking exact match
+ ET_NOT_AN_ERROR
+} ErrorType;
#endif // LATINIME_DEFINES_H
diff --git a/native/jni/src/dictionary.h b/native/jni/src/dictionary.h
index 0653d3c..2ad5b6c 100644
--- a/native/jni/src/dictionary.h
+++ b/native/jni/src/dictionary.h
@@ -31,6 +31,7 @@
class Dictionary {
public:
// Taken from SuggestedWords.java
+ static const int KIND_MASK_KIND = 0xFF; // Mask to get only the kind
static const int KIND_TYPED = 0; // What user typed
static const int KIND_CORRECTION = 1; // Simple correction/suggestion
static const int KIND_COMPLETION = 2; // Completion (suggestion with appended chars)
@@ -41,6 +42,10 @@
static const int KIND_SHORTCUT = 7; // A shortcut
static const int KIND_PREDICTION = 8; // A prediction (== a suggestion with no input)
+ static const int KIND_MASK_FLAGS = 0xFFFFFF00; // Mask to get the flags
+ static const int KIND_FLAG_POSSIBLY_OFFENSIVE = 0x80000000;
+ static const int KIND_FLAG_EXACT_MATCH = 0x40000000;
+
Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust);
int getSuggestions(ProximityInfo *proximityInfo, void *traverseSession, int *xcoordinates,
diff --git a/native/jni/src/multi_bigram_map.h b/native/jni/src/multi_bigram_map.h
new file mode 100644
index 0000000..7e1b630
--- /dev/null
+++ b/native/jni/src/multi_bigram_map.h
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+#ifndef LATINIME_MULTI_BIGRAM_MAP_H
+#define LATINIME_MULTI_BIGRAM_MAP_H
+
+#include <cstring>
+#include <stdint.h>
+
+#include "defines.h"
+#include "binary_format.h"
+#include "hash_map_compat.h"
+
+namespace latinime {
+
+// Class for caching bigram maps for multiple previous word contexts. This is useful since the
+// algorithm needs to look up the set of bigrams for every word pair that occurs in every
+// multi-word suggestion.
+class MultiBigramMap {
+ public:
+ MultiBigramMap() : mBigramMaps() {}
+ ~MultiBigramMap() {}
+
+ // Look up the bigram probability for the given word pair from the cached bigram maps.
+ // Also caches the bigrams if there is space remaining and they have not been cached already.
+ int getBigramProbability(const uint8_t *const dicRoot, const int wordPosition,
+ const int nextWordPosition, const int unigramProbability) {
+ hash_map_compat<int, BigramMap>::const_iterator mapPosition =
+ mBigramMaps.find(wordPosition);
+ if (mapPosition != mBigramMaps.end()) {
+ return mapPosition->second.getBigramProbability(nextWordPosition, unigramProbability);
+ }
+ if (mBigramMaps.size() < MAX_CACHED_PREV_WORDS_IN_BIGRAM_MAP) {
+ addBigramsForWordPosition(dicRoot, wordPosition);
+ return mBigramMaps[wordPosition].getBigramProbability(
+ nextWordPosition, unigramProbability);
+ }
+ return BinaryFormat::getBigramProbability(
+ dicRoot, wordPosition, nextWordPosition, unigramProbability);
+ }
+
+ void clear() {
+ mBigramMaps.clear();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MultiBigramMap);
+
+ class BigramMap {
+ public:
+ BigramMap() : mBigramMap(DEFAULT_HASH_MAP_SIZE_FOR_EACH_BIGRAM_MAP) {}
+ ~BigramMap() {}
+
+ void init(const uint8_t *const dicRoot, int position) {
+ BinaryFormat::fillBigramProbabilityToHashMap(dicRoot, position, &mBigramMap);
+ }
+
+ inline int getBigramProbability(const int nextWordPosition, const int unigramProbability)
+ const {
+ return BinaryFormat::getBigramProbabilityFromHashMap(
+ nextWordPosition, &mBigramMap, unigramProbability);
+ }
+
+ private:
+ // Note: Default copy constructor needed for use in hash_map.
+ hash_map_compat<int, int> mBigramMap;
+ };
+
+ void addBigramsForWordPosition(const uint8_t *const dicRoot, const int position) {
+ mBigramMaps[position].init(dicRoot, position);
+ }
+
+ hash_map_compat<int, BigramMap> mBigramMaps;
+};
+} // namespace latinime
+#endif // LATINIME_MULTI_BIGRAM_MAP_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index e843254..4225bb3 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -219,7 +219,7 @@
return (prevWordLen == 1 && currentWordLen == 1);
}
- bool isCapitalized() const {
+ bool isFirstCharUppercase() const {
const int c = getOutputWordBuf()[0];
return isAsciiUpper(c);
}
@@ -463,6 +463,10 @@
mDicNodeState.mDicNodeStateScoring.advanceDigraphIndex();
}
+ bool isExactMatch() const {
+ return mDicNodeState.mDicNodeStateScoring.isExactMatch();
+ }
+
uint8_t getFlags() const {
return mDicNodeProperties.getFlags();
}
@@ -542,13 +546,12 @@
// Caveat: Must not be called outside Weighting
// This restriction is guaranteed by "friend"
AK_FORCE_INLINE void addCost(const float spatialCost, const float languageCost,
- const bool doNormalization, const int inputSize, const bool isEditCorrection,
- const bool isProximityCorrection) {
+ const bool doNormalization, const int inputSize, const ErrorType errorType) {
if (DEBUG_GEO_FULL) {
LOGI_SHOW_ADD_COST_PROP;
}
mDicNodeState.mDicNodeStateScoring.addCost(spatialCost, languageCost, doNormalization,
- inputSize, getTotalInputIndex(), isEditCorrection, isProximityCorrection);
+ inputSize, getTotalInputIndex(), errorType);
}
// Caveat: Must not be called outside Weighting
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state_input.h b/native/jni/src/suggest/core/dicnode/dic_node_state_input.h
index 7ad3e3e..bbd9435 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state_input.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_state_input.h
@@ -46,8 +46,8 @@
for (int i = 0; i < MAX_POINTER_COUNT_G; i++) {
mInputIndex[i] = src->mInputIndex[i];
mPrevCodePoint[i] = src->mPrevCodePoint[i];
- mTerminalDiffCost[i] = resetTerminalDiffCost ?
- static_cast<float>(MAX_VALUE_FOR_WEIGHTING) : src->mTerminalDiffCost[i];
+ mTerminalDiffCost[i] = resetTerminalDiffCost ?
+ static_cast<float>(MAX_VALUE_FOR_WEIGHTING) : src->mTerminalDiffCost[i];
}
}
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h b/native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h
index fd9d610..dca9d60 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h
@@ -31,7 +31,7 @@
mDigraphIndex(DigraphUtils::NOT_A_DIGRAPH_INDEX),
mEditCorrectionCount(0), mProximityCorrectionCount(0),
mNormalizedCompoundDistance(0.0f), mSpatialDistance(0.0f), mLanguageDistance(0.0f),
- mRawLength(0.0f) {
+ mRawLength(0.0f), mExactMatch(true) {
}
virtual ~DicNodeStateScoring() {}
@@ -45,6 +45,7 @@
mRawLength = 0.0f;
mDoubleLetterLevel = NOT_A_DOUBLE_LETTER;
mDigraphIndex = DigraphUtils::NOT_A_DIGRAPH_INDEX;
+ mExactMatch = true;
}
AK_FORCE_INLINE void init(const DicNodeStateScoring *const scoring) {
@@ -56,17 +57,32 @@
mRawLength = scoring->mRawLength;
mDoubleLetterLevel = scoring->mDoubleLetterLevel;
mDigraphIndex = scoring->mDigraphIndex;
+ mExactMatch = scoring->mExactMatch;
}
void addCost(const float spatialCost, const float languageCost, const bool doNormalization,
- const int inputSize, const int totalInputIndex, const bool isEditCorrection,
- const bool isProximityCorrection) {
+ const int inputSize, const int totalInputIndex, const ErrorType errorType) {
addDistance(spatialCost, languageCost, doNormalization, inputSize, totalInputIndex);
- if (isEditCorrection) {
- ++mEditCorrectionCount;
- }
- if (isProximityCorrection) {
- ++mProximityCorrectionCount;
+ switch (errorType) {
+ case ET_EDIT_CORRECTION:
+ ++mEditCorrectionCount;
+ mExactMatch = false;
+ break;
+ case ET_PROXIMITY_CORRECTION:
+ ++mProximityCorrectionCount;
+ mExactMatch = false;
+ break;
+ case ET_COMPLETION:
+ mExactMatch = false;
+ break;
+ case ET_NEW_WORD:
+ mExactMatch = false;
+ break;
+ case ET_INTENTIONAL_OMISSION:
+ mExactMatch = false;
+ break;
+ case ET_NOT_AN_ERROR:
+ break;
}
}
@@ -143,6 +159,10 @@
}
}
+ bool isExactMatch() const {
+ return mExactMatch;
+ }
+
private:
// Caution!!!
// Use a default copy constructor and an assign operator because shallow copies are ok
@@ -157,6 +177,7 @@
float mSpatialDistance;
float mLanguageDistance;
float mRawLength;
+ bool mExactMatch;
AK_FORCE_INLINE void addDistance(float spatialDistance, float languageDistance,
bool doNormalization, int inputSize, int totalInputIndex) {
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index 031e706..5357c37 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -21,6 +21,7 @@
#include "dic_node.h"
#include "dic_node_utils.h"
#include "dic_node_vector.h"
+#include "multi_bigram_map.h"
#include "proximity_info.h"
#include "proximity_info_state.h"
@@ -191,11 +192,11 @@
* Computes the combined bigram / unigram cost for the given dicNode.
*/
/* static */ float DicNodeUtils::getBigramNodeImprobability(const uint8_t *const dicRoot,
- const DicNode *const node, hash_map_compat<int, int16_t> *bigramCacheMap) {
+ const DicNode *const node, MultiBigramMap *multiBigramMap) {
if (node->isImpossibleBigramWord()) {
return static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
}
- const int probability = getBigramNodeProbability(dicRoot, node, bigramCacheMap);
+ const int probability = getBigramNodeProbability(dicRoot, node, multiBigramMap);
// TODO: This equation to calculate the improbability looks unreasonable. Investigate this.
const float cost = static_cast<float>(MAX_PROBABILITY - probability)
/ static_cast<float>(MAX_PROBABILITY);
@@ -203,92 +204,25 @@
}
/* static */ int DicNodeUtils::getBigramNodeProbability(const uint8_t *const dicRoot,
- const DicNode *const node, hash_map_compat<int, int16_t> *bigramCacheMap) {
+ const DicNode *const node, MultiBigramMap *multiBigramMap) {
const int unigramProbability = node->getProbability();
- const int encodedDiffOfBigramProbability =
- getBigramNodeEncodedDiffProbability(dicRoot, node, bigramCacheMap);
- if (NOT_A_PROBABILITY == encodedDiffOfBigramProbability) {
+ const int wordPos = node->getPos();
+ const int prevWordPos = node->getPrevWordPos();
+ if (NOT_VALID_WORD == wordPos || NOT_VALID_WORD == prevWordPos) {
+ // Note: Normally wordPos comes from the dictionary and should never equal NOT_VALID_WORD.
return backoff(unigramProbability);
}
- return BinaryFormat::computeProbabilityForBigram(
- unigramProbability, encodedDiffOfBigramProbability);
+ if (multiBigramMap) {
+ return multiBigramMap->getBigramProbability(
+ dicRoot, prevWordPos, wordPos, unigramProbability);
+ }
+ return BinaryFormat::getBigramProbability(dicRoot, prevWordPos, wordPos, unigramProbability);
}
///////////////////////////////////////
// Bigram / Unigram dictionary utils //
///////////////////////////////////////
-/* static */ int16_t DicNodeUtils::getBigramNodeEncodedDiffProbability(const uint8_t *const dicRoot,
- const DicNode *const node, hash_map_compat<int, int16_t> *bigramCacheMap) {
- const int wordPos = node->getPos();
- const int prevWordPos = node->getPrevWordPos();
- return getBigramProbability(dicRoot, prevWordPos, wordPos, bigramCacheMap);
-}
-
-// TODO: Move this to BigramDictionary
-/* static */ int16_t DicNodeUtils::getBigramProbability(const uint8_t *const dicRoot, int pos,
- const int nextPos, hash_map_compat<int, int16_t> *bigramCacheMap) {
- // TODO: this is painfully slow compared to the method used in the previous version of the
- // algorithm. Switch to that method.
- if (NOT_VALID_WORD == pos) return NOT_A_PROBABILITY;
- if (NOT_VALID_WORD == nextPos) return NOT_A_PROBABILITY;
-
- // Create a hash code for the given node pair (based on Josh Bloch's effective Java).
- // TODO: Use a real hash map data structure that deals with collisions.
- int hash = 17;
- hash = hash * 31 + pos;
- hash = hash * 31 + nextPos;
-
- hash_map_compat<int, int16_t>::const_iterator mapPos = bigramCacheMap->find(hash);
- if (mapPos != bigramCacheMap->end()) {
- return mapPos->second;
- }
- if (NOT_VALID_WORD == pos) {
- return NOT_A_PROBABILITY;
- }
- const uint8_t flags = BinaryFormat::getFlagsAndForwardPointer(dicRoot, &pos);
- if (0 == (flags & BinaryFormat::FLAG_HAS_BIGRAMS)) {
- return NOT_A_PROBABILITY;
- }
- if (0 == (flags & BinaryFormat::FLAG_HAS_MULTIPLE_CHARS)) {
- BinaryFormat::getCodePointAndForwardPointer(dicRoot, &pos);
- } else {
- pos = BinaryFormat::skipOtherCharacters(dicRoot, pos);
- }
- pos = BinaryFormat::skipChildrenPosition(flags, pos);
- pos = BinaryFormat::skipProbability(flags, pos);
- uint8_t bigramFlags;
- int count = 0;
- do {
- bigramFlags = BinaryFormat::getFlagsAndForwardPointer(dicRoot, &pos);
- const int bigramPos = BinaryFormat::getAttributeAddressAndForwardPointer(dicRoot,
- bigramFlags, &pos);
- if (bigramPos == nextPos) {
- const int16_t probability = BinaryFormat::MASK_ATTRIBUTE_PROBABILITY & bigramFlags;
- if (static_cast<int>(bigramCacheMap->size()) < MAX_BIGRAM_MAP_SIZE) {
- (*bigramCacheMap)[hash] = probability;
- }
- return probability;
- }
- count++;
- } while ((0 != (BinaryFormat::FLAG_ATTRIBUTE_HAS_NEXT & bigramFlags))
- && count < MAX_BIGRAMS_CONSIDERED_PER_CONTEXT);
- if (static_cast<int>(bigramCacheMap->size()) < MAX_BIGRAM_MAP_SIZE) {
- // TODO: does this -1 mean NOT_VALID_WORD?
- (*bigramCacheMap)[hash] = -1;
- }
- return NOT_A_PROBABILITY;
-}
-
-/* static */ int DicNodeUtils::getWordPos(const uint8_t *const dicRoot, const int *word,
- const int wordLength) {
- if (!word) {
- return NOT_VALID_WORD;
- }
- return BinaryFormat::getTerminalPosition(
- dicRoot, word, wordLength, false /* forceLowerCaseSearch */);
-}
-
/* static */ bool DicNodeUtils::isMatchedNodeCodePoint(const ProximityInfoState *pInfoState,
const int pointIndex, const bool exactOnly, const int nodeCodePoint) {
if (!pInfoState) {
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.h b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
index 15f9730..5bc542d 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
@@ -21,7 +21,6 @@
#include <vector>
#include "defines.h"
-#include "hash_map_compat.h"
namespace latinime {
@@ -29,6 +28,7 @@
class DicNodeVector;
class ProximityInfo;
class ProximityInfoState;
+class MultiBigramMap;
class DicNodeUtils {
public:
@@ -41,9 +41,8 @@
static void initByCopy(DicNode *srcNode, DicNode *destNode);
static void getAllChildDicNodes(DicNode *dicNode, const uint8_t *const dicRoot,
DicNodeVector *childDicNodes);
- static int getWordPos(const uint8_t *const dicRoot, const int *word, const int prevWordLength);
static float getBigramNodeImprobability(const uint8_t *const dicRoot,
- const DicNode *const node, hash_map_compat<int, int16_t> *const bigramCacheMap);
+ const DicNode *const node, MultiBigramMap *const multiBigramMap);
static bool isDicNodeFilteredOut(const int nodeCodePoint, const ProximityInfo *const pInfo,
const std::vector<int> *const codePointsFilter);
// TODO: Move to private
@@ -58,15 +57,11 @@
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(DicNodeUtils);
- // Max cache size for the space omission error correction bigram lookup
- static const int MAX_BIGRAM_MAP_SIZE = 20000;
// Max number of bigrams to look up
static const int MAX_BIGRAMS_CONSIDERED_PER_CONTEXT = 500;
static int getBigramNodeProbability(const uint8_t *const dicRoot, const DicNode *const node,
- hash_map_compat<int, int16_t> *bigramCacheMap);
- static int16_t getBigramNodeEncodedDiffProbability(const uint8_t *const dicRoot,
- const DicNode *const node, hash_map_compat<int, int16_t> *bigramCacheMap);
+ MultiBigramMap *multiBigramMap);
static void createAndGetPassingChildNode(DicNode *dicNode, const ProximityInfoState *pInfoState,
const int pointIndex, const bool exactOnly, DicNodeVector *childDicNodes);
static void createAndGetAllLeavingChildNodes(DicNode *dicNode, const uint8_t *const dicRoot,
@@ -77,8 +72,6 @@
const int terminalDepth, const ProximityInfoState *pInfoState, const int pointIndex,
const bool exactOnly, const std::vector<int> *const codePointsFilter,
const ProximityInfo *const pInfo, DicNodeVector *childDicNodes);
- static int16_t getBigramProbability(const uint8_t *const dicRoot, int pos, const int nextPos,
- hash_map_compat<int, int16_t> *bigramCacheMap);
// TODO: Move to proximity info
static bool isMatchedNodeCodePoint(const ProximityInfoState *pInfoState, const int pointIndex,
diff --git a/native/jni/src/suggest/core/policy/scoring.h b/native/jni/src/suggest/core/policy/scoring.h
index b8c10e2..102e856 100644
--- a/native/jni/src/suggest/core/policy/scoring.h
+++ b/native/jni/src/suggest/core/policy/scoring.h
@@ -29,16 +29,14 @@
public:
virtual int calculateFinalScore(const float compoundDistance, const int inputSize,
const bool forceCommit) const = 0;
- virtual bool getMostProbableString(
- const DicTraverseSession *const traverseSession, const int terminalSize,
- const float languageWeight, int *const outputCodePoints, int *const type,
- int *const freq) const = 0;
+ virtual bool getMostProbableString(const DicTraverseSession *const traverseSession,
+ const int terminalSize, const float languageWeight, int *const outputCodePoints,
+ int *const type, int *const freq) const = 0;
virtual void safetyNetForMostProbableString(const int terminalSize,
const int maxScore, int *const outputCodePoints, int *const frequencies) const = 0;
// TODO: Make more generic
- virtual void searchWordWithDoubleLetter(DicNode *terminals,
- const int terminalSize, int *doubleLetterTerminalIndex,
- DoubleLetterLevel *doubleLetterLevel) const = 0;
+ virtual void searchWordWithDoubleLetter(DicNode *terminals, const int terminalSize,
+ int *doubleLetterTerminalIndex, DoubleLetterLevel *doubleLetterLevel) const = 0;
virtual float getAdjustedLanguageWeight(DicTraverseSession *const traverseSession,
DicNode *const terminals, const int size) const = 0;
virtual float getDoubleLetterDemotionDistanceCost(const int terminalIndex,
diff --git a/native/jni/src/suggest/core/policy/suggest_policy.h b/native/jni/src/suggest/core/policy/suggest_policy.h
index 885e214..5b6402c 100644
--- a/native/jni/src/suggest/core/policy/suggest_policy.h
+++ b/native/jni/src/suggest/core/policy/suggest_policy.h
@@ -20,6 +20,7 @@
#include "defines.h"
namespace latinime {
+
class Traversal;
class Scoring;
class Weighting;
diff --git a/native/jni/src/suggest/core/policy/traversal.h b/native/jni/src/suggest/core/policy/traversal.h
index 02c358a..c6f66f2 100644
--- a/native/jni/src/suggest/core/policy/traversal.h
+++ b/native/jni/src/suggest/core/policy/traversal.h
@@ -28,7 +28,8 @@
virtual int getMaxPointerCount() const = 0;
virtual bool allowsErrorCorrections(const DicNode *const dicNode) const = 0;
virtual bool isOmission(const DicTraverseSession *const traverseSession,
- const DicNode *const dicNode, const DicNode *const childDicNode) const = 0;
+ const DicNode *const dicNode, const DicNode *const childDicNode,
+ const bool allowsErrorCorrections) const = 0;
virtual bool isSpaceSubstitutionTerminal(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode) const = 0;
virtual bool isSpaceOmissionTerminal(const DicTraverseSession *const traverseSession,
@@ -38,9 +39,8 @@
const DicNode *const dicNode) const = 0;
virtual bool canDoLookAheadCorrection(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode) const = 0;
- virtual ProximityType getProximityType(
- const DicTraverseSession *const traverseSession, const DicNode *const dicNode,
- const DicNode *const childDicNode) const = 0;
+ virtual ProximityType getProximityType(const DicTraverseSession *const traverseSession,
+ const DicNode *const dicNode, const DicNode *const childDicNode) const = 0;
virtual bool sameAsTyped(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode) const = 0;
virtual bool needsToTraverseAllUserInput() const = 0;
@@ -48,9 +48,8 @@
virtual bool allowPartialCommit() const = 0;
virtual int getDefaultExpandDicNodeSize() const = 0;
virtual int getMaxCacheSize() const = 0;
- virtual bool isPossibleOmissionChildNode(
- const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode,
- const DicNode *const dicNode) const = 0;
+ virtual bool isPossibleOmissionChildNode(const DicTraverseSession *const traverseSession,
+ const DicNode *const parentDicNode, const DicNode *const dicNode) const = 0;
virtual bool isGoodToTraverseNextWord(const DicNode *const dicNode) const = 0;
protected:
diff --git a/native/jni/src/suggest/core/policy/weighting.cpp b/native/jni/src/suggest/core/policy/weighting.cpp
index a6d30e4..d01531f 100644
--- a/native/jni/src/suggest/core/policy/weighting.cpp
+++ b/native/jni/src/suggest/core/policy/weighting.cpp
@@ -18,7 +18,6 @@
#include "char_utils.h"
#include "defines.h"
-#include "hash_map_compat.h"
#include "suggest/core/dicnode/dic_node.h"
#include "suggest/core/dicnode/dic_node_profiler.h"
#include "suggest/core/dicnode/dic_node_utils.h"
@@ -26,6 +25,8 @@
namespace latinime {
+class MultiBigramMap;
+
static inline void profile(const CorrectionType correctionType, DicNode *const node) {
#if DEBUG_DICT
switch (correctionType) {
@@ -69,20 +70,18 @@
}
/* static */ void Weighting::addCostAndForwardInputIndex(const Weighting *const weighting,
- const CorrectionType correctionType,
- const DicTraverseSession *const traverseSession,
+ const CorrectionType correctionType, const DicTraverseSession *const traverseSession,
const DicNode *const parentDicNode, DicNode *const dicNode,
- hash_map_compat<int, int16_t> *const bigramCacheMap) {
+ MultiBigramMap *const multiBigramMap) {
const int inputSize = traverseSession->getInputSize();
DicNode_InputStateG inputStateG;
inputStateG.mNeedsToUpdateInputStateG = false; // Don't use input info by default
const float spatialCost = Weighting::getSpatialCost(weighting, correctionType,
traverseSession, parentDicNode, dicNode, &inputStateG);
const float languageCost = Weighting::getLanguageCost(weighting, correctionType,
- traverseSession, parentDicNode, dicNode, bigramCacheMap);
- const bool edit = Weighting::isEditCorrection(correctionType);
- const bool proximity = Weighting::isProximityCorrection(weighting, correctionType,
- traverseSession, dicNode);
+ traverseSession, parentDicNode, dicNode, multiBigramMap);
+ const ErrorType errorType = weighting->getErrorType(correctionType, traverseSession,
+ parentDicNode, dicNode);
profile(correctionType, dicNode);
if (inputStateG.mNeedsToUpdateInputStateG) {
dicNode->updateInputIndexG(&inputStateG);
@@ -91,13 +90,13 @@
(correctionType == CT_TRANSPOSITION));
}
dicNode->addCost(spatialCost, languageCost, weighting->needsToNormalizeCompoundDistance(),
- inputSize, edit, proximity);
+ inputSize, errorType);
}
/* static */ float Weighting::getSpatialCost(const Weighting *const weighting,
- const CorrectionType correctionType,
- const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode,
- const DicNode *const dicNode, DicNode_InputStateG *const inputStateG) {
+ const CorrectionType correctionType, const DicTraverseSession *const traverseSession,
+ const DicNode *const parentDicNode, const DicNode *const dicNode,
+ DicNode_InputStateG *const inputStateG) {
switch(correctionType) {
case CT_OMISSION:
return weighting->getOmissionCost(parentDicNode, dicNode);
@@ -129,14 +128,14 @@
/* static */ float Weighting::getLanguageCost(const Weighting *const weighting,
const CorrectionType correctionType, const DicTraverseSession *const traverseSession,
const DicNode *const parentDicNode, const DicNode *const dicNode,
- hash_map_compat<int, int16_t> *const bigramCacheMap) {
+ MultiBigramMap *const multiBigramMap) {
switch(correctionType) {
case CT_OMISSION:
return 0.0f;
case CT_SUBSTITUTION:
return 0.0f;
case CT_NEW_WORD_SPACE_OMITTION:
- return weighting->getNewWordBigramCost(traverseSession, parentDicNode, bigramCacheMap);
+ return weighting->getNewWordBigramCost(traverseSession, parentDicNode, multiBigramMap);
case CT_MATCH:
return 0.0f;
case CT_COMPLETION:
@@ -144,11 +143,11 @@
case CT_TERMINAL: {
const float languageImprobability =
DicNodeUtils::getBigramNodeImprobability(
- traverseSession->getOffsetDict(), dicNode, bigramCacheMap);
+ traverseSession->getOffsetDict(), dicNode, multiBigramMap);
return weighting->getTerminalLanguageCost(traverseSession, dicNode, languageImprobability);
}
case CT_NEW_WORD_SPACE_SUBSTITUTION:
- return weighting->getNewWordBigramCost(traverseSession, parentDicNode, bigramCacheMap);
+ return weighting->getNewWordBigramCost(traverseSession, parentDicNode, multiBigramMap);
case CT_INSERTION:
return 0.0f;
case CT_TRANSPOSITION:
@@ -158,64 +157,6 @@
}
}
-/* static */ bool Weighting::isEditCorrection(const CorrectionType correctionType) {
- switch(correctionType) {
- case CT_OMISSION:
- return true;
- case CT_ADDITIONAL_PROXIMITY:
- // Should return true?
- return false;
- case CT_SUBSTITUTION:
- // Should return true?
- return false;
- case CT_NEW_WORD_SPACE_OMITTION:
- return false;
- case CT_MATCH:
- return false;
- case CT_COMPLETION:
- return false;
- case CT_TERMINAL:
- return false;
- case CT_NEW_WORD_SPACE_SUBSTITUTION:
- return false;
- case CT_INSERTION:
- return true;
- case CT_TRANSPOSITION:
- return true;
- default:
- return false;
- }
-}
-
-/* static */ bool Weighting::isProximityCorrection(const Weighting *const weighting,
- const CorrectionType correctionType,
- const DicTraverseSession *const traverseSession, const DicNode *const dicNode) {
- switch(correctionType) {
- case CT_OMISSION:
- return false;
- case CT_ADDITIONAL_PROXIMITY:
- return false;
- case CT_SUBSTITUTION:
- return false;
- case CT_NEW_WORD_SPACE_OMITTION:
- return false;
- case CT_MATCH:
- return weighting->isProximityDicNode(traverseSession, dicNode);
- case CT_COMPLETION:
- return false;
- case CT_TERMINAL:
- return false;
- case CT_NEW_WORD_SPACE_SUBSTITUTION:
- return false;
- case CT_INSERTION:
- return false;
- case CT_TRANSPOSITION:
- return false;
- default:
- return false;
- }
-}
-
/* static */ int Weighting::getForwardInputCount(const CorrectionType correctionType) {
switch(correctionType) {
case CT_OMISSION:
diff --git a/native/jni/src/suggest/core/policy/weighting.h b/native/jni/src/suggest/core/policy/weighting.h
index bce479c..0d2745b 100644
--- a/native/jni/src/suggest/core/policy/weighting.h
+++ b/native/jni/src/suggest/core/policy/weighting.h
@@ -18,13 +18,13 @@
#define LATINIME_WEIGHTING_H
#include "defines.h"
-#include "hash_map_compat.h"
namespace latinime {
class DicNode;
class DicTraverseSession;
struct DicNode_InputStateG;
+class MultiBigramMap;
class Weighting {
public:
@@ -32,7 +32,7 @@
const CorrectionType correctionType,
const DicTraverseSession *const traverseSession,
const DicNode *const parentDicNode, DicNode *const dicNode,
- hash_map_compat<int, int16_t> *const bigramCacheMap);
+ MultiBigramMap *const multiBigramMap);
protected:
virtual float getTerminalSpatialCost(const DicTraverseSession *const traverseSession,
@@ -61,7 +61,7 @@
virtual float getNewWordBigramCost(
const DicTraverseSession *const traverseSession, const DicNode *const dicNode,
- hash_map_compat<int, int16_t> *const bigramCacheMap) const = 0;
+ MultiBigramMap *const multiBigramMap) const = 0;
virtual float getCompletionCost(
const DicTraverseSession *const traverseSession,
@@ -80,6 +80,10 @@
virtual float getSpaceSubstitutionCost(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode) const = 0;
+ virtual ErrorType getErrorType(const CorrectionType correctionType,
+ const DicTraverseSession *const traverseSession,
+ const DicNode *const parentDicNode, const DicNode *const dicNode) const = 0;
+
Weighting() {}
virtual ~Weighting() {}
@@ -93,13 +97,7 @@
static float getLanguageCost(const Weighting *const weighting,
const CorrectionType correctionType, const DicTraverseSession *const traverseSession,
const DicNode *const parentDicNode, const DicNode *const dicNode,
- hash_map_compat<int, int16_t> *const bigramCacheMap);
- // TODO: Move to TypingWeighting and GestureWeighting?
- static bool isEditCorrection(const CorrectionType correctionType);
- // TODO: Move to TypingWeighting and GestureWeighting?
- static bool isProximityCorrection(const Weighting *const weighting,
- const CorrectionType correctionType, const DicTraverseSession *const traverseSession,
- const DicNode *const dicNode);
+ MultiBigramMap *const multiBigramMap);
// TODO: Move to TypingWeighting and GestureWeighting?
static int getForwardInputCount(const CorrectionType correctionType);
};
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.cpp b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
index 3c44db2..5116585 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.cpp
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
@@ -69,7 +69,15 @@
mPrevWordPos = NOT_VALID_WORD;
return;
}
- mPrevWordPos = DicNodeUtils::getWordPos(dictionary->getOffsetDict(), prevWord, prevWordLength);
+ // TODO: merge following similar calls to getTerminalPosition into one case-insensitive call.
+ mPrevWordPos = BinaryFormat::getTerminalPosition(dictionary->getOffsetDict(), prevWord,
+ prevWordLength, false /* forceLowerCaseSearch */);
+ if (mPrevWordPos == NOT_VALID_WORD) {
+ // Check bigrams for lower-cased previous word if original was not found. Useful for
+ // auto-capitalized words like "The [current_word]".
+ mPrevWordPos = BinaryFormat::getTerminalPosition(dictionary->getOffsetDict(), prevWord,
+ prevWordLength, true /* forceLowerCaseSearch */);
+ }
}
void DicTraverseSession::setupForGetSuggestions(const ProximityInfo *pInfo,
@@ -92,7 +100,7 @@
void DicTraverseSession::resetCache(const int nextActiveCacheSize, const int maxWords) {
mDicNodesCache.reset(nextActiveCacheSize, maxWords);
- mBigramCacheMap.clear();
+ mMultiBigramMap.clear();
mPartiallyCommited = false;
}
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.h b/native/jni/src/suggest/core/session/dic_traverse_session.h
index d9c2a51..d88be5b 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.h
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.h
@@ -21,8 +21,8 @@
#include <vector>
#include "defines.h"
-#include "hash_map_compat.h"
#include "jni.h"
+#include "multi_bigram_map.h"
#include "proximity_info_state.h"
#include "suggest/core/dicnode/dic_nodes_cache.h"
@@ -35,7 +35,7 @@
public:
AK_FORCE_INLINE DicTraverseSession(JNIEnv *env, jstring localeStr)
: mPrevWordPos(NOT_VALID_WORD), mProximityInfo(0),
- mDictionary(0), mDicNodesCache(), mBigramCacheMap(),
+ mDictionary(0), mDicNodesCache(), mMultiBigramMap(),
mInputSize(0), mPartiallyCommited(false), mMaxPointerCount(1),
mMultiWordCostMultiplier(1.0f) {
// NOTE: mProximityInfoStates is an array of instances.
@@ -67,7 +67,7 @@
// TODO: Use proper parameter when changed
int getDicRootPos() const { return 0; }
DicNodesCache *getDicTraverseCache() { return &mDicNodesCache; }
- hash_map_compat<int, int16_t> *getBigramCacheMap() { return &mBigramCacheMap; }
+ MultiBigramMap *getMultiBigramMap() { return &mMultiBigramMap; }
const ProximityInfoState *getProximityInfoState(int id) const {
return &mProximityInfoStates[id];
}
@@ -170,7 +170,7 @@
DicNodesCache mDicNodesCache;
// Temporary cache for bigram frequencies
- hash_map_compat<int, int16_t> mBigramCacheMap;
+ MultiBigramMap mMultiBigramMap;
ProximityInfoState mProximityInfoStates[MAX_POINTER_COUNT_G];
int mInputSize;
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index 9de2cd2..3221dee 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -161,12 +161,15 @@
+ doubleLetterCost;
const TerminalAttributes terminalAttributes(traverseSession->getOffsetDict(),
terminalDicNode->getFlags(), terminalDicNode->getAttributesPos());
- const int originalTerminalProbability = terminalDicNode->getProbability();
+ const bool isPossiblyOffensiveWord = terminalDicNode->getProbability() <= 0;
+ const bool isExactMatch = terminalDicNode->isExactMatch();
+ const int outputTypeFlags =
+ isPossiblyOffensiveWord ? Dictionary::KIND_FLAG_POSSIBLY_OFFENSIVE : 0
+ | isExactMatch ? Dictionary::KIND_FLAG_EXACT_MATCH : 0;
- // Do not suggest words with a 0 probability, or entries that are blacklisted or do not
- // represent a word. However, we should still submit their shortcuts if any.
- const bool isValidWord =
- originalTerminalProbability > 0 && !terminalAttributes.isBlacklistedOrNotAWord();
+ // Entries that are blacklisted or do not represent a word should not be output.
+ const bool isValidWord = !terminalAttributes.isBlacklistedOrNotAWord();
+
// Increase output score of top typing suggestion to ensure autocorrection.
// TODO: Better integration with java side autocorrection logic.
// Force autocorrection for obvious long multi-word suggestions.
@@ -188,10 +191,9 @@
}
}
- // Do not suggest words with a 0 probability, or entries that are blacklisted or do not
- // represent a word. However, we should still submit their shortcuts if any.
+ // Don't output invalid words. However, we still need to submit their shortcuts if any.
if (isValidWord) {
- outputTypes[outputWordIndex] = Dictionary::KIND_CORRECTION;
+ outputTypes[outputWordIndex] = Dictionary::KIND_CORRECTION | outputTypeFlags;
frequencies[outputWordIndex] = finalScore;
// Populate the outputChars array with the suggested word.
const int startIndex = outputWordIndex * MAX_WORD_LENGTH;
@@ -294,8 +296,8 @@
correctionDicNode.advanceDigraphIndex();
processDicNodeAsDigraph(traverseSession, &correctionDicNode);
}
- if (allowsErrorCorrections
- && TRAVERSAL->isOmission(traverseSession, &dicNode, childDicNode)) {
+ if (TRAVERSAL->isOmission(traverseSession, &dicNode, childDicNode,
+ allowsErrorCorrections)) {
// TODO: (Gesture) Change weight between omission and substitution errors
// TODO: (Gesture) Terminal node should not be handled as omission
correctionDicNode.initByCopy(childDicNode);
@@ -357,7 +359,7 @@
DicNode terminalDicNode;
DicNodeUtils::initByCopy(dicNode, &terminalDicNode);
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TERMINAL, traverseSession, 0,
- &terminalDicNode, traverseSession->getBigramCacheMap());
+ &terminalDicNode, traverseSession->getMultiBigramMap());
traverseSession->getDicTraverseCache()->copyPushTerminal(&terminalDicNode);
}
@@ -389,8 +391,10 @@
void Suggest::processDicNodeAsAdditionalProximityChar(DicTraverseSession *traverseSession,
DicNode *dicNode, DicNode *childDicNode) const {
+ // Note: Most types of corrections don't need to look up the bigram information since they do
+ // not treat the node as a terminal. There is no need to pass the bigram map in these cases.
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_ADDITIONAL_PROXIMITY,
- traverseSession, dicNode, childDicNode, 0 /* bigramCacheMap */);
+ traverseSession, dicNode, childDicNode, 0 /* multiBigramMap */);
weightChildNode(traverseSession, childDicNode);
processExpandedDicNode(traverseSession, childDicNode);
}
@@ -398,7 +402,7 @@
void Suggest::processDicNodeAsSubstitution(DicTraverseSession *traverseSession,
DicNode *dicNode, DicNode *childDicNode) const {
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_SUBSTITUTION, traverseSession,
- dicNode, childDicNode, 0 /* bigramCacheMap */);
+ dicNode, childDicNode, 0 /* multiBigramMap */);
weightChildNode(traverseSession, childDicNode);
processExpandedDicNode(traverseSession, childDicNode);
}
@@ -422,20 +426,15 @@
*/
void Suggest::processDicNodeAsOmission(
DicTraverseSession *traverseSession, DicNode *dicNode) const {
- // If the omission is surely intentional that it should incur zero cost.
- const bool isZeroCostOmission = dicNode->isZeroCostOmission();
DicNodeVector childDicNodes;
-
DicNodeUtils::getAllChildDicNodes(dicNode, traverseSession->getOffsetDict(), &childDicNodes);
const int size = childDicNodes.getSizeAndLock();
for (int i = 0; i < size; i++) {
DicNode *const childDicNode = childDicNodes[i];
- if (!isZeroCostOmission) {
- // Treat this word as omission
- Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_OMISSION, traverseSession,
- dicNode, childDicNode, 0 /* bigramCacheMap */);
- }
+ // Treat this word as omission
+ Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_OMISSION, traverseSession,
+ dicNode, childDicNode, 0 /* multiBigramMap */);
weightChildNode(traverseSession, childDicNode);
if (!TRAVERSAL->isPossibleOmissionChildNode(traverseSession, dicNode, childDicNode)) {
@@ -459,7 +458,7 @@
for (int i = 0; i < size; i++) {
DicNode *const childDicNode = childDicNodes[i];
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_INSERTION, traverseSession,
- dicNode, childDicNode, 0 /* bigramCacheMap */);
+ dicNode, childDicNode, 0 /* multiBigramMap */);
processExpandedDicNode(traverseSession, childDicNode);
}
}
@@ -484,7 +483,7 @@
for (int j = 0; j < childSize2; j++) {
DicNode *const childDicNode2 = childDicNodes2[j];
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TRANSPOSITION,
- traverseSession, childDicNodes1[i], childDicNode2, 0 /* bigramCacheMap */);
+ traverseSession, childDicNodes1[i], childDicNode2, 0 /* multiBigramMap */);
processExpandedDicNode(traverseSession, childDicNode2);
}
}
@@ -499,10 +498,10 @@
const int inputSize = traverseSession->getInputSize();
if (dicNode->isCompletion(inputSize)) {
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_COMPLETION, traverseSession,
- 0 /* parentDicNode */, dicNode, 0 /* bigramCacheMap */);
+ 0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
} else { // completion
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_MATCH, traverseSession,
- 0 /* parentDicNode */, dicNode, 0 /* bigramCacheMap */);
+ 0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
}
}
@@ -523,7 +522,7 @@
const CorrectionType correctionType = spaceSubstitution ?
CT_NEW_WORD_SPACE_SUBSTITUTION : CT_NEW_WORD_SPACE_OMITTION;
Weighting::addCostAndForwardInputIndex(WEIGHTING, correctionType, traverseSession, dicNode,
- &newDicNode, traverseSession->getBigramCacheMap());
+ &newDicNode, traverseSession->getMultiBigramMap());
traverseSession->getDicTraverseCache()->copyPushNextActive(&newDicNode);
}
} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
index 9933586..f879892 100644
--- a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
+++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
@@ -28,25 +28,25 @@
const float ScoringParams::DISTANCE_WEIGHT_LENGTH = 0.132f;
const float ScoringParams::PROXIMITY_COST = 0.086f;
const float ScoringParams::FIRST_PROXIMITY_COST = 0.104f;
-const float ScoringParams::OMISSION_COST = 0.388f;
-const float ScoringParams::OMISSION_COST_SAME_CHAR = 0.431f;
-const float ScoringParams::OMISSION_COST_FIRST_CHAR = 0.532f;
-const float ScoringParams::INSERTION_COST = 0.670f;
-const float ScoringParams::INSERTION_COST_SAME_CHAR = 0.526f;
-const float ScoringParams::INSERTION_COST_FIRST_CHAR = 0.563f;
-const float ScoringParams::TRANSPOSITION_COST = 0.494f;
-const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.289f;
+const float ScoringParams::OMISSION_COST = 0.458f;
+const float ScoringParams::OMISSION_COST_SAME_CHAR = 0.491f;
+const float ScoringParams::OMISSION_COST_FIRST_CHAR = 0.582f;
+const float ScoringParams::INSERTION_COST = 0.730f;
+const float ScoringParams::INSERTION_COST_SAME_CHAR = 0.586f;
+const float ScoringParams::INSERTION_COST_FIRST_CHAR = 0.623f;
+const float ScoringParams::TRANSPOSITION_COST = 0.516f;
+const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.319f;
const float ScoringParams::ADDITIONAL_PROXIMITY_COST = 0.380f;
-const float ScoringParams::SUBSTITUTION_COST = 0.363f;
-const float ScoringParams::COST_NEW_WORD = 0.024f;
-const float ScoringParams::COST_NEW_WORD_CAPITALIZED = 0.174f;
+const float ScoringParams::SUBSTITUTION_COST = 0.403f;
+const float ScoringParams::COST_NEW_WORD = 0.042f;
+const float ScoringParams::COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE = 0.25f;
const float ScoringParams::DISTANCE_WEIGHT_LANGUAGE = 1.123f;
const float ScoringParams::COST_FIRST_LOOKAHEAD = 0.545f;
const float ScoringParams::COST_LOOKAHEAD = 0.073f;
-const float ScoringParams::HAS_PROXIMITY_TERMINAL_COST = 0.126f;
-const float ScoringParams::HAS_EDIT_CORRECTION_TERMINAL_COST = 0.056f;
-const float ScoringParams::HAS_MULTI_WORD_TERMINAL_COST = 0.536f;
+const float ScoringParams::HAS_PROXIMITY_TERMINAL_COST = 0.105f;
+const float ScoringParams::HAS_EDIT_CORRECTION_TERMINAL_COST = 0.038f;
+const float ScoringParams::HAS_MULTI_WORD_TERMINAL_COST = 0.444f;
const float ScoringParams::TYPING_BASE_OUTPUT_SCORE = 1.0f;
const float ScoringParams::TYPING_MAX_OUTPUT_SCORE_PER_INPUT = 0.1f;
-const float ScoringParams::MAX_NORM_DISTANCE_FOR_EDIT = 0.1f;
+const float ScoringParams::NORMALIZED_SPATIAL_DISTANCE_THRESHOLD_FOR_EDIT = 0.06f;
} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.h b/native/jni/src/suggest/policyimpl/typing/scoring_params.h
index 8f104b3..53ac999 100644
--- a/native/jni/src/suggest/policyimpl/typing/scoring_params.h
+++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.h
@@ -48,7 +48,7 @@
static const float ADDITIONAL_PROXIMITY_COST;
static const float SUBSTITUTION_COST;
static const float COST_NEW_WORD;
- static const float COST_NEW_WORD_CAPITALIZED;
+ static const float COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE;
static const float DISTANCE_WEIGHT_LANGUAGE;
static const float COST_FIRST_LOOKAHEAD;
static const float COST_LOOKAHEAD;
@@ -57,7 +57,7 @@
static const float HAS_MULTI_WORD_TERMINAL_COST;
static const float TYPING_BASE_OUTPUT_SCORE;
static const float TYPING_MAX_OUTPUT_SCORE_PER_INPUT;
- static const float MAX_NORM_DISTANCE_FOR_EDIT;
+ static const float NORMALIZED_SPATIAL_DISTANCE_THRESHOLD_FOR_EDIT;
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(ScoringParams);
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
index 9f83474..12110d5 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
+++ b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
@@ -39,14 +39,21 @@
AK_FORCE_INLINE bool allowsErrorCorrections(const DicNode *const dicNode) const {
return dicNode->getNormalizedSpatialDistance()
- < ScoringParams::MAX_NORM_DISTANCE_FOR_EDIT;
+ < ScoringParams::NORMALIZED_SPATIAL_DISTANCE_THRESHOLD_FOR_EDIT;
}
AK_FORCE_INLINE bool isOmission(const DicTraverseSession *const traverseSession,
- const DicNode *const dicNode, const DicNode *const childDicNode) const {
+ const DicNode *const dicNode, const DicNode *const childDicNode,
+ const bool allowsErrorCorrections) const {
if (!CORRECT_OMISSION) {
return false;
}
+ // Note: Always consider intentional omissions (like apostrophes) since they are common.
+ const bool canConsiderOmission =
+ allowsErrorCorrections || childDicNode->canBeIntentionalOmission();
+ if (!canConsiderOmission) {
+ return false;
+ }
const int inputSize = traverseSession->getInputSize();
// TODO: Don't refer to isCompletion?
if (dicNode->isCompletion(inputSize)) {
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
index 1500341..e4c69d1 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
+++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
@@ -20,5 +20,41 @@
#include "suggest/policyimpl/typing/scoring_params.h"
namespace latinime {
+
const TypingWeighting TypingWeighting::sInstance;
+
+ErrorType TypingWeighting::getErrorType(const CorrectionType correctionType,
+ const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode,
+ const DicNode *const dicNode) const {
+ switch (correctionType) {
+ case CT_MATCH:
+ if (isProximityDicNode(traverseSession, dicNode)) {
+ return ET_PROXIMITY_CORRECTION;
+ } else {
+ return ET_NOT_AN_ERROR;
+ }
+ case CT_ADDITIONAL_PROXIMITY:
+ return ET_PROXIMITY_CORRECTION;
+ case CT_OMISSION:
+ if (parentDicNode->canBeIntentionalOmission()) {
+ return ET_INTENTIONAL_OMISSION;
+ } else {
+ return ET_EDIT_CORRECTION;
+ }
+ break;
+ case CT_SUBSTITUTION:
+ case CT_INSERTION:
+ case CT_TRANSPOSITION:
+ return ET_EDIT_CORRECTION;
+ case CT_NEW_WORD_SPACE_OMITTION:
+ case CT_NEW_WORD_SPACE_SUBSTITUTION:
+ return ET_NEW_WORD;
+ case CT_TERMINAL:
+ return ET_NOT_AN_ERROR;
+ case CT_COMPLETION:
+ return ET_COMPLETION;
+ default:
+ return ET_NOT_AN_ERROR;
+ }
+}
} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.h b/native/jni/src/suggest/policyimpl/typing/typing_weighting.h
index 34d25ae..3938c0e 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.h
+++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.h
@@ -28,14 +28,15 @@
class DicNode;
struct DicNode_InputStateG;
+class MultiBigramMap;
class TypingWeighting : public Weighting {
public:
static const TypingWeighting *getInstance() { return &sInstance; }
protected:
- float getTerminalSpatialCost(
- const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const {
+ float getTerminalSpatialCost(const DicTraverseSession *const traverseSession,
+ const DicNode *const dicNode) const {
float cost = 0.0f;
if (dicNode->hasMultipleWords()) {
cost += ScoringParams::HAS_MULTI_WORD_TERMINAL_COST;
@@ -50,13 +51,14 @@
}
float getOmissionCost(const DicNode *const parentDicNode, const DicNode *const dicNode) const {
- bool sameCodePoint = false;
- bool isFirstLetterOmission = false;
- float cost = 0.0f;
- sameCodePoint = dicNode->isSameNodeCodePoint(parentDicNode);
+ const bool isZeroCostOmission = parentDicNode->isZeroCostOmission();
+ const bool sameCodePoint = dicNode->isSameNodeCodePoint(parentDicNode);
// If the traversal omitted the first letter then the dicNode should now be on the second.
- isFirstLetterOmission = dicNode->getDepth() == 2;
- if (isFirstLetterOmission) {
+ const bool isFirstLetterOmission = dicNode->getDepth() == 2;
+ float cost = 0.0f;
+ if (isZeroCostOmission) {
+ cost = 0.0f;
+ } else if (isFirstLetterOmission) {
cost = ScoringParams::OMISSION_COST_FIRST_CHAR;
} else {
cost = sameCodePoint ? ScoringParams::OMISSION_COST_SAME_CHAR
@@ -65,9 +67,8 @@
return cost;
}
- float getMatchedCost(
- const DicTraverseSession *const traverseSession, const DicNode *const dicNode,
- DicNode_InputStateG *inputStateG) const {
+ float getMatchedCost(const DicTraverseSession *const traverseSession,
+ const DicNode *const dicNode, DicNode_InputStateG *inputStateG) const {
const int pointIndex = dicNode->getInputIndex(0);
// Note: min() required since length can be MAX_POINT_TO_KEY_LENGTH for characters not on
// the keyboard (like accented letters)
@@ -79,13 +80,23 @@
const bool isFirstChar = pointIndex == 0;
const bool isProximity = isProximityDicNode(traverseSession, dicNode);
- const float cost = isProximity ? (isFirstChar ? ScoringParams::FIRST_PROXIMITY_COST
+ float cost = isProximity ? (isFirstChar ? ScoringParams::FIRST_PROXIMITY_COST
: ScoringParams::PROXIMITY_COST) : 0.0f;
+ if (dicNode->getDepth() == 2) {
+ // At the second character of the current word, we check if the first char is uppercase
+ // and the word is a second or later word of a multiple word suggestion. We demote it
+ // if so.
+ const bool isSecondOrLaterWordFirstCharUppercase =
+ dicNode->hasMultipleWords() && dicNode->isFirstCharUppercase();
+ if (isSecondOrLaterWordFirstCharUppercase) {
+ cost += ScoringParams::COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE;
+ }
+ }
return weightedDistance + cost;
}
- bool isProximityDicNode(
- const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const {
+ bool isProximityDicNode(const DicTraverseSession *const traverseSession,
+ const DicNode *const dicNode) const {
const int pointIndex = dicNode->getInputIndex(0);
const int primaryCodePoint = toBaseLowerCase(
traverseSession->getProximityInfoState(0)->getPrimaryCodePointAt(pointIndex));
@@ -93,9 +104,8 @@
return primaryCodePoint != dicNodeChar;
}
- float getTranspositionCost(
- const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode,
- const DicNode *const dicNode) const {
+ float getTranspositionCost(const DicTraverseSession *const traverseSession,
+ const DicNode *const parentDicNode, const DicNode *const dicNode) const {
const int16_t parentPointIndex = parentDicNode->getInputIndex(0);
const int prevCodePoint = parentDicNode->getNodeCodePoint();
const float distance1 = traverseSession->getProximityInfoState(0)->getPointToKeyLength(
@@ -109,8 +119,7 @@
return ScoringParams::TRANSPOSITION_COST + weightedLengthDistance;
}
- float getInsertionCost(
- const DicTraverseSession *const traverseSession,
+ float getInsertionCost(const DicTraverseSession *const traverseSession,
const DicNode *const parentDicNode, const DicNode *const dicNode) const {
const int16_t parentPointIndex = parentDicNode->getInputIndex(0);
const int prevCodePoint =
@@ -130,17 +139,14 @@
float getNewWordCost(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode) const {
- const bool isCapitalized = dicNode->isCapitalized();
- const float cost = isCapitalized ?
- ScoringParams::COST_NEW_WORD_CAPITALIZED : ScoringParams::COST_NEW_WORD;
- return cost * traverseSession->getMultiWordCostMultiplier();
+ return ScoringParams::COST_NEW_WORD * traverseSession->getMultiWordCostMultiplier();
}
- float getNewWordBigramCost(
- const DicTraverseSession *const traverseSession, const DicNode *const dicNode,
- hash_map_compat<int, int16_t> *const bigramCacheMap) const {
+ float getNewWordBigramCost(const DicTraverseSession *const traverseSession,
+ const DicNode *const dicNode,
+ MultiBigramMap *const multiBigramMap) const {
return DicNodeUtils::getBigramNodeImprobability(traverseSession->getOffsetDict(),
- dicNode, bigramCacheMap) * ScoringParams::DISTANCE_WEIGHT_LANGUAGE;
+ dicNode, multiBigramMap) * ScoringParams::DISTANCE_WEIGHT_LANGUAGE;
}
float getCompletionCost(const DicTraverseSession *const traverseSession,
@@ -156,15 +162,8 @@
float getTerminalLanguageCost(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode, const float dicNodeLanguageImprobability) const {
- const bool hasEditCount = dicNode->getEditCorrectionCount() > 0;
- const bool isSameLength = dicNode->getDepth() == traverseSession->getInputSize();
- const bool hasMultipleWords = dicNode->hasMultipleWords();
- const bool hasProximityErrors = dicNode->getProximityCorrectionCount() > 0;
- // Gesture input is always assumed to have proximity errors
- // because the input word shouldn't be treated as perfect
- const bool isExactMatch = !hasEditCount && !hasMultipleWords
- && !hasProximityErrors && isSameLength;
- const float languageImprobability = isExactMatch ? 0.0f : dicNodeLanguageImprobability;
+ const float languageImprobability = (dicNode->isExactMatch()) ?
+ 0.0f : dicNodeLanguageImprobability;
return languageImprobability * ScoringParams::DISTANCE_WEIGHT_LANGUAGE;
}
@@ -180,15 +179,16 @@
return ScoringParams::SUBSTITUTION_COST;
}
- AK_FORCE_INLINE float getSpaceSubstitutionCost(
- const DicTraverseSession *const traverseSession,
+ AK_FORCE_INLINE float getSpaceSubstitutionCost(const DicTraverseSession *const traverseSession,
const DicNode *const dicNode) const {
- const bool isCapitalized = dicNode->isCapitalized();
- const float cost = ScoringParams::SPACE_SUBSTITUTION_COST + (isCapitalized ?
- ScoringParams::COST_NEW_WORD_CAPITALIZED : ScoringParams::COST_NEW_WORD);
+ const float cost = ScoringParams::SPACE_SUBSTITUTION_COST + ScoringParams::COST_NEW_WORD;
return cost * traverseSession->getMultiWordCostMultiplier();
}
+ ErrorType getErrorType(const CorrectionType correctionType,
+ const DicTraverseSession *const traverseSession,
+ const DicNode *const parentDicNode, const DicNode *const dicNode) const;
+
private:
DISALLOW_COPY_AND_ASSIGN(TypingWeighting);
static const TypingWeighting sInstance;