Merge "Revert "Create a config flag for the new Screen Timeout settings screen with Dashboard style settings"" into main
diff --git a/Android.bp b/Android.bp
index 8f7bd1b..e81ef9e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -79,6 +79,7 @@
"BiometricsSharedLib",
"SystemUIUnfoldLib",
"WifiTrackerLib",
+ "android.hardware.biometrics.flags-aconfig-java",
"android.hardware.dumpstate-V1-java",
"android.hardware.dumpstate-V1.0-java",
"android.hardware.dumpstate-V1.1-java",
@@ -132,6 +133,7 @@
flags_packages: [
"aconfig_settings_flags",
"android.app.flags-aconfig",
+ "android.provider.flags-aconfig",
],
}
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 11d9779..5cd2bb3 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1930,6 +1930,20 @@
android:value="@string/menu_key_apps"/>
</activity-alias>
+ <activity android:name="Settings$AppStorageSettingsActivity"
+ android:label="@string/storage_label"
+ android:exported="true">
+ <intent-filter android:priority="1">
+ <action android:name="com.android.settings.APP_STORAGE_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:scheme="package" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.applications.AppStorageSettings" />
+ <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+ android:value="@string/menu_key_apps"/>
+ </activity>
+
<activity android:name=".applications.InstalledAppOpenByDefaultActivity"
android:label="@string/application_info_label"
android:exported="true">
@@ -3365,6 +3379,21 @@
android:value="@string/menu_key_battery"/>
</activity>
+ <activity
+ android:name="Settings$PowerUsageAdvancedActivity"
+ android:label="@string/advanced_battery_title"
+ android:exported="true"
+ android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize">
+ <intent-filter android:priority="1">
+ <action android:name="com.android.settings.battery.action.POWER_USAGE_ADVANCED" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.fuelgauge.batteryusage.PowerUsageAdvanced" />
+ <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+ android:value="@string/menu_key_battery"/>
+ </activity>
+
<provider
android:name=".fuelgauge.batteryusage.BatteryUsageContentProvider"
android:enabled="true"
@@ -4478,6 +4507,10 @@
android:label="@string/privacy_settings_title"
android:exported="true"
android:icon="@drawable/ic_settings_backup">
+ <intent-filter android:priority="1">
+ <action android:name="com.android.settings.BACKUP_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
@@ -5297,7 +5330,7 @@
android:name="Settings$ContactsStorageSettingsActivity"
android:label="@string/contacts_storage_settings_title"
android:exported="true"
- android:featureFlag="com.android.settings.flags.enable_contacts_default_account_in_settings">
+ android:featureFlag="android.provider.new_default_account_api_enabled">
<intent-filter>
<action android:name="android.provider.action.SET_DEFAULT_ACCOUNT" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/aconfig/catalyst/about_phone.aconfig b/aconfig/catalyst/about_phone.aconfig
index 5403b65..8ecde46 100644
--- a/aconfig/catalyst/about_phone.aconfig
+++ b/aconfig/catalyst/about_phone.aconfig
@@ -15,3 +15,9 @@
bug: "323791114"
}
+flag {
+ name: "catalyst_my_device_info_pref_screen"
+ namespace: "android_settings"
+ description: "Flag for About phone"
+ bug: "323791114"
+}
diff --git a/aconfig/catalyst/display.aconfig b/aconfig/catalyst/display.aconfig
index 94a01e0..9485e70 100644
--- a/aconfig/catalyst/display.aconfig
+++ b/aconfig/catalyst/display.aconfig
@@ -14,3 +14,17 @@
description: "Flag for Screen Timeout settings"
bug: "323791114"
}
+
+flag {
+ name: "catalyst_dark_ui_mode"
+ namespace: "android_settings"
+ description: "Flag for Dark theme"
+ bug: "323791114"
+}
+
+flag {
+ name: "catalyst_screen_brightness_mode"
+ namespace: "android_settings"
+ description: "Flag for Adaptive brightness"
+ bug: "323791114"
+}
diff --git a/aconfig/catalyst/lockscreen.aconfig b/aconfig/catalyst/lockscreen.aconfig
new file mode 100644
index 0000000..9a84f66
--- /dev/null
+++ b/aconfig/catalyst/lockscreen.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.settings.flags"
+container: "system"
+
+flag {
+ name: "catalyst_lockscreen_from_display_settings"
+ namespace: "android_settings"
+ description: "Flag for Display & touch > Lock screen"
+ bug: "323791114"
+}
diff --git a/aconfig/catalyst/network_and_internet.aconfig b/aconfig/catalyst/network_and_internet.aconfig
index a5183f3..aa26ce4 100644
--- a/aconfig/catalyst/network_and_internet.aconfig
+++ b/aconfig/catalyst/network_and_internet.aconfig
@@ -9,8 +9,44 @@
}
flag {
+ name: "catalyst_internet_settings"
+ namespace: "android_settings"
+ description: "Flag for Internet"
+ bug: "323791114"
+}
+
+flag {
name: "catalyst_mobile_network_list"
namespace: "android_settings"
description: "Flag for SIMs"
bug: "323791114"
}
+
+flag {
+ name: "catalyst_tether_settings"
+ namespace: "android_settings"
+ description: "Flag for Hotspot & tethering"
+ bug: "323791114"
+}
+
+flag {
+ name: "catalyst_adaptive_connectivity"
+ namespace: "android_settings"
+ description: "Flag for Adaptive connectivity"
+ bug: "323791114"
+}
+
+flag {
+ name: "catalyst_wifi_calling"
+ namespace: "android_settings"
+ description: "Flag for Wi-Fi calling screen"
+ bug: "323791114"
+}
+
+flag {
+ name: "catalyst_restrict_background_parent_entry"
+ namespace: "android_settings"
+ description: "Flag for Data Saver"
+ bug: "323791114"
+}
+
diff --git a/aconfig/catalyst/system.aconfig b/aconfig/catalyst/system.aconfig
new file mode 100644
index 0000000..f87ff44
--- /dev/null
+++ b/aconfig/catalyst/system.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.settings.flags"
+container: "system"
+
+flag {
+ name: "catalyst_language_setting"
+ namespace: "android_settings"
+ description: "Flag for System -> Languages screen"
+ bug: "323791114"
+}
diff --git a/aconfig/settings_biometrics_integration_declarations.aconfig b/aconfig/settings_biometrics_integration_declarations.aconfig
index ea3ac19..0ad028e 100644
--- a/aconfig/settings_biometrics_integration_declarations.aconfig
+++ b/aconfig/settings_biometrics_integration_declarations.aconfig
@@ -15,3 +15,23 @@
bug: "301226085"
}
+flag {
+ name: "enroll_layout_truncate_improvement"
+ namespace: "biometrics_integration"
+ description: "This flag controls whether the enroll layout truncate improvement feature should be enabled"
+ bug: "359149850"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
+ name: "screen_off_unlock_power_optimization"
+ namespace: "biometrics_integration"
+ description: "This flag controls Whether to gate fp unlock when screen turns off feature before AOC optimized"
+ bug: "368465560"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
diff --git a/aconfig/settings_globalintl_flag_declarations.aconfig b/aconfig/settings_globalintl_flag_declarations.aconfig
index 12a61294..909e464 100644
--- a/aconfig/settings_globalintl_flag_declarations.aconfig
+++ b/aconfig/settings_globalintl_flag_declarations.aconfig
@@ -21,3 +21,10 @@
description: "Feature flag for B&R accessibility appearance settings"
bug: "341210043"
}
+
+flag {
+ name: "regional_preferences_api_enabled"
+ namespace: "globalintl"
+ description: "Feature flag for regional preferences APIs"
+ bug: "370379000"
+}
\ No newline at end of file
diff --git a/aconfig/settings_telephony_flag_declarations.aconfig b/aconfig/settings_telephony_flag_declarations.aconfig
index dab1b45..5919e53 100644
--- a/aconfig/settings_telephony_flag_declarations.aconfig
+++ b/aconfig/settings_telephony_flag_declarations.aconfig
@@ -14,3 +14,19 @@
description: "Control the Dual SIM onobarding feature"
bug: "298898436"
}
+
+# OWNER=yomna TARGET=25Q2
+flag {
+ name: "mobile_network_security_2g_toggle"
+ namespace: "hardware_backed_security"
+ description: "Exposing 2G toggles in Mobile Network Security page"
+ bug: "355062720"
+}
+
+# OWNER=yomna TARGET=25Q2
+flag {
+ name: "add_security_algorithms_to_eng_menu"
+ namespace: "hardware_backed_security"
+ description: "Exposing security transparency features to field engineering menu"
+ bug: "355062720"
+}
diff --git a/res-product/values-ar/strings.xml b/res-product/values-ar/strings.xml
index 131d746..7885e85 100644
--- a/res-product/values-ar/strings.xml
+++ b/res-product/values-ar/strings.xml
@@ -220,7 +220,7 @@
<string name="bluetooth_unpair_dialog_body" product="default" msgid="176620413491664050">"لن يتم إقران هاتفك بعد الآن بجهاز <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_unpair_dialog_body" product="tablet" msgid="8098078685596880647">"لن يتم إقران جهازك اللوحي بعد الآن بجهاز <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_unpair_dialog_body" product="device" msgid="563640675231461703">"لن يتم إقران جهازك بعد الآن بجهاز <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"السماح باستخدام الاتصال القصير المدى (NFC) عندما تكون الشاشة مفتوحة فقط"</string>
+ <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"السماح باستخدام NFC عندما تكون الشاشة مفتوحة فقط"</string>
<string name="wifi_add_app_single_network_summary" product="default" msgid="7742934005022827107">"يريد التطبيق <xliff:g id="APPNAME">%1$s</xliff:g> حفظ شبكة على هاتفك."</string>
<string name="wifi_add_app_single_network_summary" product="tablet" msgid="93466057231937113">"يريد تطبيق <xliff:g id="APPNAME">%1$s</xliff:g> حفظ شبكة على جهازك اللوحي."</string>
<string name="wifi_add_app_networks_summary" product="default" msgid="7014504084783236696">"يريد التطبيق <xliff:g id="APPNAME">%1$s</xliff:g> حفظ هذه الشبكات على هاتفك."</string>
@@ -280,8 +280,8 @@
<string name="accessibility_text_reading_confirm_dialog_message" product="tablet" msgid="2547948891207211388">"ستتم إعادة ضبط إعداداتك المفضّلة لحجم الشاشة والنص على الإعدادات الأصلية للجهاز اللوحي"</string>
<string name="accessibility_daltonizer_about_intro_text" product="default" msgid="5234458848997942613">"يمكنك تعديل كيفية عرض الألوان على هاتفك"</string>
<string name="accessibility_daltonizer_about_intro_text" product="tablet" msgid="5300401841391736534">"يمكنك تعديل كيفية عرض الألوان على جهازك اللوحي."</string>
- <string name="reduce_bright_colors_preference_summary" product="default" msgid="2025941326724094318">"يمكنك ضبط تعتيم الشاشة على مستوى أقلّ من الحد الأدنى لسطوع هاتفك"</string>
- <string name="reduce_bright_colors_preference_summary" product="tablet" msgid="3106979202311807559">"يمكنك ضبط تعتيم الشاشة على مستوى أقلّ من الحد الأدنى لسطوع جهازك اللوحي"</string>
+ <string name="reduce_bright_colors_preference_summary" product="default" msgid="2025941326724094318">"تعتيم الشاشة على مستوى أقلّ من الحد الأدنى لسطوع هاتفك"</string>
+ <string name="reduce_bright_colors_preference_summary" product="tablet" msgid="3106979202311807559">"تعتيم الشاشة على مستوى أقلّ من الحد الأدنى لسطوع جهازك اللوحي"</string>
<string name="reduce_bright_colors_preference_subtitle" product="default" msgid="9162440023310121356">"يمكن الاستفادة من ميزة \"زيادة تعتيم الشاشة\" عندما: <ol> <li> تكون أقلّ درجة سطوع تلقائية في هاتفك غير كافية</li> <li> تستخدم هاتفك في الظلام، مثلاً عندما تستخدمه ليلاً أو في غرفة مظلمة قبل النوم</li> </ol>"</string>
<string name="reduce_bright_colors_preference_subtitle" product="tablet" msgid="5747242697890472822">"يمكن الاستفادة من ميزة \"زيادة تعتيم الشاشة\" عندما: <ol> <li> تكون أقلّ درجة سطوع تلقائية في جهازك اللوحي غير كافية</li> <li> تستخدم جهازك اللوحي في الظلام، مثلاً عندما تستخدمه ليلاً أو في غرفة مظلمة قبل النوم</li> </ol>"</string>
<string name="battery_tip_summary_summary" product="default" msgid="1880496476760792933">"يتم استخدام بطارية الهاتف بشكل عادي في الخلفية."</string>
diff --git a/res-product/values-bs/strings.xml b/res-product/values-bs/strings.xml
index 3209afc..b3210d0 100644
--- a/res-product/values-bs/strings.xml
+++ b/res-product/values-bs/strings.xml
@@ -365,15 +365,15 @@
<string name="audio_sharing_dialog_share_more_content" product="default" msgid="4517503016262565607">"Muzika i videozapisi na telefonu će se reproducirati na slušalicama koje povežete"</string>
<string name="audio_sharing_dialog_share_more_content" product="tablet" msgid="7742344946644657414">"Muzika i videozapisi na tabletu će se reproducirati na slušalicama koje povežete"</string>
<string name="audio_sharing_dialog_share_more_content" product="device" msgid="3409470560712324580">"Muzika i videozapisi na uređaju će se reproducirati na slušalicama koje povežete"</string>
- <string name="audio_streams_dialog_no_le_device_subtitle" product="default" msgid="1388450179345665604">"Da slušate prijenos zvuka, prvo s telefonom povežite slušalice koje podržavaju LE Audio."</string>
- <string name="audio_streams_dialog_no_le_device_subtitle" product="tablet" msgid="6577207951269720001">"Da slušate prijenos zvuka, prvo s tabletom povežite slušalice koje podržavaju LE Audio."</string>
- <string name="audio_streams_dialog_no_le_device_subtitle" product="device" msgid="6192141045820029654">"Da slušate prijenos zvuka, prvo s uređajem povežite slušalice koje podržavaju LE Audio."</string>
- <string name="audio_streams_dialog_no_le_device_subtitle_with_link" product="default" msgid="4871388123789035528">"Da slušate prijenos zvuka, prvo s telefonom povežite slušalice koje podržavaju LE Audio. "<annotation id="link">"Saznajte više"</annotation></string>
- <string name="audio_streams_dialog_no_le_device_subtitle_with_link" product="tablet" msgid="9004101085790596133">"Da slušate prijenos zvuka, prvo s tabletom povežite slušalice koje podržavaju LE Audio. "<annotation id="link">"Saznajte više"</annotation></string>
- <string name="audio_streams_dialog_no_le_device_subtitle_with_link" product="device" msgid="2094009664220499659">"Da slušate prijenos zvuka, prvo s uređajem povežite slušalice koje podržavaju LE Audio. "<annotation id="link">"Saznajte više"</annotation></string>
- <string name="audio_streams_dialog_unsupported_device_subtitle" product="default" msgid="4634360514260385687">"Telefon ne podržava LE Audio, koji je potreban za slušanje prijenosa zvuka."</string>
- <string name="audio_streams_dialog_unsupported_device_subtitle" product="tablet" msgid="234603191628345605">"Tablet ne podržava LE Audio, koji je potreban za slušanje prijenosa zvuka."</string>
- <string name="audio_streams_dialog_unsupported_device_subtitle" product="device" msgid="6350485541420926260">"Uređaj ne podržava LE Audio, koji je potreban za slušanje prijenosa zvuka."</string>
+ <string name="audio_streams_dialog_no_le_device_subtitle" product="default" msgid="1388450179345665604">"Da slušate prenos zvuka, prvo s telefonom povežite slušalice koje podržavaju LE Audio."</string>
+ <string name="audio_streams_dialog_no_le_device_subtitle" product="tablet" msgid="6577207951269720001">"Da slušate prenos zvuka, prvo s tabletom povežite slušalice koje podržavaju LE Audio."</string>
+ <string name="audio_streams_dialog_no_le_device_subtitle" product="device" msgid="6192141045820029654">"Da slušate prenos zvuka, prvo s uređajem povežite slušalice koje podržavaju LE Audio."</string>
+ <string name="audio_streams_dialog_no_le_device_subtitle_with_link" product="default" msgid="4871388123789035528">"Da slušate prenos zvuka, prvo s telefonom povežite slušalice koje podržavaju LE Audio. "<annotation id="link">"Saznajte više"</annotation></string>
+ <string name="audio_streams_dialog_no_le_device_subtitle_with_link" product="tablet" msgid="9004101085790596133">"Da slušate prenos zvuka, prvo s tabletom povežite slušalice koje podržavaju LE Audio. "<annotation id="link">"Saznajte više"</annotation></string>
+ <string name="audio_streams_dialog_no_le_device_subtitle_with_link" product="device" msgid="2094009664220499659">"Da slušate prenos zvuka, prvo s uređajem povežite slušalice koje podržavaju LE Audio. "<annotation id="link">"Saznajte više"</annotation></string>
+ <string name="audio_streams_dialog_unsupported_device_subtitle" product="default" msgid="4634360514260385687">"Telefon ne podržava LE Audio, koji je potreban za slušanje prenosa zvuka."</string>
+ <string name="audio_streams_dialog_unsupported_device_subtitle" product="tablet" msgid="234603191628345605">"Tablet ne podržava LE Audio, koji je potreban za slušanje prenosa zvuka."</string>
+ <string name="audio_streams_dialog_unsupported_device_subtitle" product="device" msgid="6350485541420926260">"Uređaj ne podržava LE Audio, koji je potreban za slušanje prenosa zvuka."</string>
<string name="audio_sharing_confirm_dialog_content_with_link" product="default" msgid="3623411166799677443">"Da počnete dijeliti zvuk, prvo povežite slušalice s LE Audijem s telefonom. "<annotation id="link">"Saznajte više o kompatibilnim uređajima"</annotation></string>
<string name="audio_sharing_confirm_dialog_content_with_link" product="tablet" msgid="282597208139437138">"Da počnete dijeliti zvuk, prvo povežite slušalice s LE Audijem s tabletom. "<annotation id="link">"Saznajte više o kompatibilnim uređajima"</annotation></string>
<string name="audio_sharing_confirm_dialog_content_with_link" product="device" msgid="668964968208427465">"Da počnete dijeliti zvuk, prvo povežite slušalice s LE Audijem s uređajem. "<annotation id="link">"Saznajte više o kompatibilnim uređajima"</annotation></string>
diff --git a/res-product/values-ca/strings.xml b/res-product/values-ca/strings.xml
index e5ef90a..2789de0 100644
--- a/res-product/values-ca/strings.xml
+++ b/res-product/values-ca/strings.xml
@@ -265,7 +265,7 @@
<string name="bluetooth_tethering_subtext" product="default" msgid="3638886236597805392">"Comparteix la connexió a Internet del telèfon per Bluetooth"</string>
<string name="ethernet_tethering_subtext" product="default" msgid="8652438909365718644">"Comparteix la connexió a Internet del telèfon per Ethernet"</string>
<string name="ethernet_tethering_subtext" product="tablet" msgid="2227710549796706455">"Comparteix la connexió a Internet de la tauleta per Ethernet"</string>
- <string name="about_settings" product="tablet" msgid="1471390492111370330">"Informació de la tauleta"</string>
+ <string name="about_settings" product="tablet" msgid="1471390492111370330">"Sobre la tauleta"</string>
<string name="about_settings" product="default" msgid="2621311564780208250">"Informació del telèfon"</string>
<string name="about_settings" product="device" msgid="7595574154492383452">"Informació del dispositiu"</string>
<string name="about_settings" product="emulator" msgid="1099246296173401003">"Sobre el dispositiu emulat"</string>
@@ -309,7 +309,7 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"Es desactivaran les dades mòbils de la tauleta quan s\'arribi al límit que has definit.\n\nCom que la tauleta mesura l\'ús de dades i és possible que l\'operador de telefonia mòbil en faci un recompte diferent, et recomanem que defineixis un límit prudent."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Es desactivaran les dades mòbils del telèfon quan s\'arribi al límit que has establert.\n\nCom que el telèfon mesura l\'ús de dades i és possible que l\'operador de telefonia mòbil en faci un recompte diferent, et recomanem que estableixis un límit prudent."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Comparteix el dispositiu afegint usuaris nous. Cada usuari té un espai personal al dispositiu en què es poden personalitzar les pantalles d\'inici, els comptes, les aplicacions, la configuració i moltes altres coses."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Comparteix la tauleta afegint usuaris nous. Cada usuari té un espai personal a la tauleta en què es poden personalitzar les pantalles d\'inici, els comptes, les aplicacions, la configuració i moltes altres coses."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Comparteix la tauleta afegint usuaris nous. Cada usuari té un espai personal a la tauleta en què es poden personalitzar les pantalles d\'inici, els comptes, les aplicacions, la configuració i altres coses."</string>
<string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Comparteix el telèfon afegint usuaris nous. Cada usuari té un espai personal al teu telèfon per personalitzar les pantalles d\'inici, els comptes, les aplicacions, la configuració i moltes altres coses."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Només el propietari de la tauleta pot gestionar els usuaris."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Només el propietari del telèfon pot gestionar els usuaris."</string>
diff --git a/res-product/values-de/strings.xml b/res-product/values-de/strings.xml
index 540aac8..282d1a4 100644
--- a/res-product/values-de/strings.xml
+++ b/res-product/values-de/strings.xml
@@ -309,7 +309,7 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"Mobile Daten werden deaktiviert, sobald das von dir festgelegte Limit erreicht wurde.\n\nDer dabei angesetzte Wert wird von deinem Tablet berechnet und kann von der Messung des genutzten Datenvolumens durch deinen Mobilfunkanbieter abweichen. Daher empfiehlt es sich, ein etwas niedrigeres Limit anzugeben."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Mobile Daten werden deaktiviert, sobald das von dir festgelegte Limit erreicht wurde.\n\nDer dabei angesetzte Wert wird von deinem Smartphone berechnet und kann von der Messung des genutzten Datenvolumens durch deinen Mobilfunkanbieter abweichen. Daher empfiehlt es sich, ein etwas niedrigeres Limit anzugeben."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Du kannst dein Gerät teilen, indem du neue Nutzer hinzufügst. Jeder Nutzer hat ein privates Profil auf deinem Gerät für benutzerdefinierte Startbildschirme, Konten, Apps, Einstellungen usw."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Wenn auch andere Nutzer dein Tablet verwenden dürfen, kannst du ihm neue Nutzer hinzufügen. Jeder Nutzer erhält auf deinem Tablet sein privates Profil für benutzerdefinierte Startbildschirme, Konten, Apps, Einstellungen usw."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Wenn auch andere Personen dein Tablet verwenden dürfen, kannst du sie als neue Nutzer hinzufügen. Sie erhalten dann auf deinem Tablet ihr privates Profil für benutzerdefinierte Startbildschirme, Konten, Apps, Einstellungen usw."</string>
<string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Wenn du dein Smartphone mit anderen teilen möchtest, kannst du neue Nutzer hinzufügen. Jeder Nutzer erhält auf deinem Smartphone ein privates Profil für eigene Startbildschirme, Konten, Apps, Einstellungen usw."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Nur der Eigentümer des Tablets kann Nutzer verwalten."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Nur der Eigentümer des Smartphones kann Nutzer verwalten."</string>
diff --git a/res-product/values-el/strings.xml b/res-product/values-el/strings.xml
index 0245c5a..c9e1a57 100644
--- a/res-product/values-el/strings.xml
+++ b/res-product/values-el/strings.xml
@@ -321,13 +321,13 @@
<string name="ambient_display_title" product="default" msgid="8027137727044125809">"Πατήστε δύο φορές για να ελέγξετε το τηλέφωνο"</string>
<string name="ambient_display_title" product="tablet" msgid="2347746118188465334">"Πατήστε δύο φορές για να ελέγξετε το tablet"</string>
<string name="ambient_display_title" product="device" msgid="6306105102175823199">"Πατήστε δύο φορές για να ελέγξετε τη συσκευή"</string>
- <string name="ambient_display_pickup_title" product="default" msgid="6753194901596847876">"Σηκώστε για έλεγχο του τηλεφώνου"</string>
+ <string name="ambient_display_pickup_title" product="default" msgid="6753194901596847876">"Σήκωμα για έλεγχο του τηλεφώνου"</string>
<string name="ambient_display_pickup_title" product="tablet" msgid="1166999144900082897">"Σηκώστε το tablet για να το ελέγξετε"</string>
<string name="ambient_display_pickup_title" product="device" msgid="2091669267677915975">"Σηκώστε τη συσκευή για να την ελέγξετε"</string>
<string name="ambient_display_pickup_summary" product="default" msgid="135853288202686097">"Για να ελέγξετε την ώρα, τις ειδοποιήσεις και άλλες πληροφορίες, σηκώστε το τηλέφωνό σας."</string>
<string name="ambient_display_pickup_summary" product="tablet" msgid="1638055271563107384">"Για να ελέγξετε την ώρα, τις ειδοποιήσεις και άλλες πληροφορίες, σηκώστε το tablet σας."</string>
<string name="ambient_display_pickup_summary" product="device" msgid="964509644539692482">"Για να ελέγξετε την ώρα, τις ειδοποιήσεις και άλλες πληροφορίες, σηκώστε τη συσκευή σας."</string>
- <string name="ambient_display_tap_screen_title" product="default" msgid="4098147293617084955">"Πατήστε για έλεγχο του τηλεφώνου"</string>
+ <string name="ambient_display_tap_screen_title" product="default" msgid="4098147293617084955">"Πάτημα για έλεγχο του τηλεφώνου"</string>
<string name="ambient_display_tap_screen_title" product="tablet" msgid="7748346447393988408">"Πατήστε για έλεγχο του tablet"</string>
<string name="ambient_display_tap_screen_title" product="device" msgid="5710618387229771616">"Πατήστε για έλεγχο της συσκευής"</string>
<string name="fingerprint_swipe_for_notifications_summary" product="default" msgid="9220919404923939167">"Για να ελέγξετε τις ειδοποιήσεις σας, σύρετε προς τα κάτω στον αισθητήρα δακτυλικών αποτυπωμάτων στο πίσω μέρος του τηλεφώνου."</string>
diff --git a/res-product/values-en-rAU/strings.xml b/res-product/values-en-rAU/strings.xml
index 45c9466..b7b81d0 100644
--- a/res-product/values-en-rAU/strings.xml
+++ b/res-product/values-en-rAU/strings.xml
@@ -309,7 +309,7 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"Your tablet will turn off mobile data once it reaches the limit you set.\n\nSince data usage is measured by your tablet, and your operator may account for usage differently, consider setting a conservative limit."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Your phone will turn off mobile data once it reaches the limit you set.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider setting a conservative limit."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Share your device by adding new users. Each user has a personal space on your device for custom Home screens, accounts, apps, settings and more."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Share your tablet by adding new users. Each user has a personal space on your tablet for custom Home screens, accounts, apps, settings and more."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Share your tablet by adding new users. Each user has a personal space on your tablet for custom home screens, accounts, apps, settings and more."</string>
<string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Share your phone by adding new users. Each user has a personal space on your phone for custom Home screens, accounts, apps, settings and more."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Only the tablet\'s owner can manage users."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Only the phone\'s owner can manage users."</string>
diff --git a/res-product/values-en-rGB/strings.xml b/res-product/values-en-rGB/strings.xml
index b99e4da..1503f63 100644
--- a/res-product/values-en-rGB/strings.xml
+++ b/res-product/values-en-rGB/strings.xml
@@ -309,7 +309,7 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"Your tablet will turn off mobile data once it reaches the limit you set.\n\nSince data usage is measured by your tablet, and your operator may account for usage differently, consider setting a conservative limit."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Your phone will turn off mobile data once it reaches the limit that you set.\n\nSince data usage is measured by your phone, and your operator may account for usage differently, consider setting a conservative limit."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Share your device by adding new users. Each user has a personal space on your device for custom Home screens, accounts, apps, settings and more."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Share your tablet by adding new users. Each user has a personal space on your tablet for custom Home screens, accounts, apps, settings and more."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Share your tablet by adding new users. Each user has a personal space on your tablet for custom home screens, accounts, apps, settings and more."</string>
<string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Share your phone by adding new users. Each user has a personal space on your phone for custom Home screens, accounts, apps, settings and more."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Only the tablet\'s owner can manage users."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Only the phone\'s owner can manage users."</string>
diff --git a/res-product/values-en-rIN/strings.xml b/res-product/values-en-rIN/strings.xml
index b99e4da..1503f63 100644
--- a/res-product/values-en-rIN/strings.xml
+++ b/res-product/values-en-rIN/strings.xml
@@ -309,7 +309,7 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"Your tablet will turn off mobile data once it reaches the limit you set.\n\nSince data usage is measured by your tablet, and your operator may account for usage differently, consider setting a conservative limit."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Your phone will turn off mobile data once it reaches the limit that you set.\n\nSince data usage is measured by your phone, and your operator may account for usage differently, consider setting a conservative limit."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Share your device by adding new users. Each user has a personal space on your device for custom Home screens, accounts, apps, settings and more."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Share your tablet by adding new users. Each user has a personal space on your tablet for custom Home screens, accounts, apps, settings and more."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Share your tablet by adding new users. Each user has a personal space on your tablet for custom home screens, accounts, apps, settings and more."</string>
<string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Share your phone by adding new users. Each user has a personal space on your phone for custom Home screens, accounts, apps, settings and more."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Only the tablet\'s owner can manage users."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Only the phone\'s owner can manage users."</string>
diff --git a/res-product/values-es-rUS/strings.xml b/res-product/values-es-rUS/strings.xml
index b3ab141..fdf6e0d 100644
--- a/res-product/values-es-rUS/strings.xml
+++ b/res-product/values-es-rUS/strings.xml
@@ -356,7 +356,7 @@
<string name="auto_rotate_summary_a11y" product="tablet" msgid="4708833814245913981">"Cuando muevas la tablet entre el modo vertical y el horizontal"</string>
<string name="daltonizer_feature_summary" product="default" msgid="3940653889277283702">"Ajusta cómo se muestran los colores en tu teléfono"</string>
<string name="daltonizer_feature_summary" product="tablet" msgid="4006596881671077623">"Ajusta cómo se muestran los colores en tu tablet"</string>
- <string name="spatial_audio_speaker" product="default" msgid="7148176677982615792">"Altavoces del teléfono"</string>
+ <string name="spatial_audio_speaker" product="default" msgid="7148176677982615792">"Bocinas del teléfono"</string>
<string name="spatial_audio_speaker" product="tablet" msgid="5452617980485166854">"Bocinas de la tablet"</string>
<string name="spatial_audio_speaker" product="device" msgid="6204289590128303795">"Altavoces del dispositivo"</string>
<string name="audio_sharing_dialog_share_content" product="default" msgid="708698992481271057">"La música y los videos de este teléfono se reproducirán en ambos pares de auriculares"</string>
diff --git a/res-product/values-hi/strings.xml b/res-product/values-hi/strings.xml
index b92defd..8a9d76f 100644
--- a/res-product/values-hi/strings.xml
+++ b/res-product/values-hi/strings.xml
@@ -265,7 +265,7 @@
<string name="bluetooth_tethering_subtext" product="default" msgid="3638886236597805392">"ब्लूटूथ से फ़ोन का इंटरनेट कनेक्शन शेयर करें"</string>
<string name="ethernet_tethering_subtext" product="default" msgid="8652438909365718644">"ईथरनेट से फ़ोन का इंटरनेट कनेक्शन शेयर करें"</string>
<string name="ethernet_tethering_subtext" product="tablet" msgid="2227710549796706455">"ईथरनेट का इस्तेमाल करके टैबलेट का इंटरनेट कनेक्शन शेयर करें"</string>
- <string name="about_settings" product="tablet" msgid="1471390492111370330">"टैबलेट के बारे में"</string>
+ <string name="about_settings" product="tablet" msgid="1471390492111370330">"टैबलेट के बारे में जानकारी"</string>
<string name="about_settings" product="default" msgid="2621311564780208250">"फ़ोन के बारे में जानकारी"</string>
<string name="about_settings" product="device" msgid="7595574154492383452">"डिवाइस के बारे में जानकारी"</string>
<string name="about_settings" product="emulator" msgid="1099246296173401003">"एम्युलेट किए गए डिवाइस के बारे में"</string>
@@ -280,7 +280,7 @@
<string name="accessibility_text_reading_confirm_dialog_message" product="tablet" msgid="2547948891207211388">"डिसप्ले के साइज़ और टेक्स्ट की सेटिंग को रीसेट करके, टैबलेट की मूल सेटिंग लागू कर दी जाएंगी"</string>
<string name="accessibility_daltonizer_about_intro_text" product="default" msgid="5234458848997942613">"अपने फ़ोन पर रंगों के दिखने का तरीका बदलें"</string>
<string name="accessibility_daltonizer_about_intro_text" product="tablet" msgid="5300401841391736534">"अपने टैबलेट पर रंगों के दिखने का तरीका बदलें"</string>
- <string name="reduce_bright_colors_preference_summary" product="default" msgid="2025941326724094318">"स्क्रीन की रोशनी को फ़ोन की सामान्य सेटिंग के निचले लेवल से भी कम करें"</string>
+ <string name="reduce_bright_colors_preference_summary" product="default" msgid="2025941326724094318">"स्क्रीन की रोशनी को फ़ोन की सामान्य सेटिंग के सबसे कम लेवल से और कम करें"</string>
<string name="reduce_bright_colors_preference_summary" product="tablet" msgid="3106979202311807559">"स्क्रीन की रोशनी को, अपने टैबलेट में चमक कम करने के सबसे कम लेवल से और कम करें"</string>
<string name="reduce_bright_colors_preference_subtitle" product="default" msgid="9162440023310121356">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा का इस्तेमाल, इन मामलों में किया जा सकता है: <ol> <li> आपके फ़ोन की स्क्रीन की चमक, डिफ़ॉल्ट तौर पर सबसे कम होने के बावजूद बहुत ज़्यादा हो</li> <li> फ़ोन को अंधेरे में इस्तेमाल किया जा रहा हो. जैसे, रात के समय या सोने से पहले बिना रोशनी वाले कमरे में</li> </ol>"</string>
<string name="reduce_bright_colors_preference_subtitle" product="tablet" msgid="5747242697890472822">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा का इस्तेमाल, इन मामलों में किया जा सकता है: <ol> <li> आपके टैबलेट की स्क्रीन की चमक, डिफ़ॉल्ट तौर पर सबसे कम होने के बावजूद बहुत ज़्यादा हो</li> <li> टैबलेट को अंधेरे में इस्तेमाल किया जा रहा हो. जैसे, रात के समय या सोने से पहले बिना रोशनी वाले कमरे में</li> </ol>"</string>
@@ -309,14 +309,14 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"जैसे ही आपका टैबलेट डेटा, आपकी सेट की हुई सीमा पर पहुंचेगा, आपका टैबलेट उसे बंद कर देगा.\n\nचूंकि डेटा खर्च आपके टैबलेट से मापा जाता है और आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी, इस्तेमाल किए गए डेटा का हिसाब अलग तरीके से लगा सकती है. इसलिए, सीमा को कम पर सेट कर सकते हैं."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"जैसे ही आपका मोबाइल डेटा आपकी सेट की हुई सीमा पर पहुंचेगा, आपका फ़ोन उसे बंद कर देगा.\n\nडेटा खर्च आपके फ़ोन से मापा जाता है और आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी, इस्तेमाल किए गए डेटा का हिसाब अलग तरीके से लगा सकती है. इसलिए, सीमा को कम पर सेट करें."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"अपना डिवाइस शेयर करने के लिए नए उपयोगकर्ता जोड़ें. आपके डिवाइस पर हर उपयोगकर्ता की एक निजी जगह होगी जिसमें वे अपने मुताबिक होम स्क्रीन, खाते, ऐप्लिकेशन और सेटिंग के साथ-साथ कई चीज़ें रख सकते हैं."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"नए उपयोगकर्ता जोड़कर अपना टैबलेट शेयर करें. आपके टैबलेट पर हर उपयोगकर्ता की एक निजी प्रोफ़ाइल होगी, जिसमें वह अपनी ज़रूरत के मुताबिक होम स्क्रीन, खाते, ऐप्लिकेशन, सेटिंग वगैरह रख सकता है."</string>
- <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"नए उपयोगकर्ता जोड़कर अपना फ़ोन शेयर करें. आपके फ़ोन पर हर उपयोगकर्ता की एक निजी प्रोफ़ाइल होगी, जिसमें वह अपनी ज़रूरत के मुताबिक होम स्क्रीन, खाते, ऐप्लिकेशन, सेटिंग वगैरह रख सकता है."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"अपना टैबलेट शेयर करने के लिए नए उपयोगकर्ता जोड़ें. आपके टैबलेट पर हर उपयोगकर्ता की एक निजी प्रोफ़ाइल होगी. उसमें वह अपनी ज़रूरत के मुताबिक होम स्क्रीन, खाते, ऐप्लिकेशन, सेटिंग वगैरह रख सकता है."</string>
+ <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"अपना फ़ोन शेयर करने के लिए नए उपयोगकर्ता जोड़ें. आपके फ़ोन पर हर उपयोगकर्ता की एक निजी प्रोफ़ाइल होगी. उसमें वह अपनी ज़रूरत के मुताबिक होम स्क्रीन, खाते, ऐप्लिकेशन, सेटिंग वगैरह रख सकता है."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"केवल टैबलेट का स्वामी उपयोगकर्ताओं को प्रबंधित कर सकता है."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"केवल फ़ोन का स्वामी उपयोगकर्ताओं को प्रबंधित कर सकता है."</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"आप इस टैबलेट पर जगह और डेटा को खो देंगे. आप इस कार्रवाई को पहले जैसा नहीं कर सकते."</string>
<string name="user_confirm_remove_self_message" product="default" msgid="3209762447055039706">"आप इस फ़ोन पर अपनी जगह और डेटा को खो देंगे. आप इस कार्रवाई को पहले जैसा नहीं कर सकते."</string>
<string name="support_summary" product="default" msgid="2044721479256103419">"सहायता लेख, फ़ोन और चैट"</string>
- <string name="support_summary" product="tablet" msgid="2588832599234347108">"सहायता लेख, टैबलेट और चैट"</string>
+ <string name="support_summary" product="tablet" msgid="2588832599234347108">"सहायता लेख, टैबलेट, और चैट"</string>
<string name="support_summary" product="device" msgid="6821511162132497205">"सहायता लेख, डिवाइस, और चैट"</string>
<string name="ambient_display_title" product="default" msgid="8027137727044125809">"फ़ोन देखने के लिए दो बार टैप करें"</string>
<string name="ambient_display_title" product="tablet" msgid="2347746118188465334">"टैबलेट देखने के लिए दो बार छूएं"</string>
diff --git a/res-product/values-in/strings.xml b/res-product/values-in/strings.xml
index d965fff..7a9976e 100644
--- a/res-product/values-in/strings.xml
+++ b/res-product/values-in/strings.xml
@@ -309,8 +309,8 @@
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5609616352941038118">"Tablet akan menonaktifkan data seluler jika mencapai batas yang disetel.\n\nPenggunaan data ini diukur oleh ponsel dan dapat berbeda dari perhitungan data oleh operator, maka pertimbangkan untuk menyetel batas konservatif."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Ponsel akan menonaktifkan data seluler jika mencapai batas yang disetel.\n\nPenggunaan data ini diukur oleh ponsel dan dapat berbeda dari perhitungan data oleh operator, maka pertimbangkan untuk menyetel batas secara berhati-hati."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Gunakan perangkat bersama orang lain dengan menambahkan pengguna baru. Setiap pengguna memiliki ruang pribadi di perangkat Anda untuk akun, aplikasi, setelan, Layar utama kustom, dan lainnya."</string>
- <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Gunakan tablet bersama orang lain dengan menambahkan pengguna baru. Setiap pengguna memiliki ruang pribadi di perangkat Anda untuk akun, aplikasi, setelan, Layar utama kustom, dan lainnya."</string>
- <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Gunakan ponsel bersama orang lain dengan menambahkan pengguna baru. Setiap pengguna memiliki ruang pribadi di ponsel Anda, sehingga akun, aplikasi, setelan, Layar utama, dan lainnya dapat disesuaikan."</string>
+ <string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Gunakan tablet bersama orang lain dengan menambahkan pengguna baru. Setiap pengguna memiliki ruang pribadi di tablet Anda, sehingga dapat menyesuaikan Layar utama, akun, aplikasi, setelan, dan lainnya sendiri."</string>
+ <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Gunakan ponsel bersama orang lain dengan menambahkan pengguna baru. Setiap pengguna memiliki ruang pribadi di ponsel Anda, sehingga dapat menyesuaikan Layar utama, akun, aplikasi, setelan, dan lainnya sendiri."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Hanya pemilik tablet yang dapat mengelola pengguna."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Hanya pemilik ponsel yang dapat mengelola pengguna."</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"Ruang dan data Anda akan hilang dari tablet ini. Anda tidak dapat mengurungkan tindakan ini."</string>
diff --git a/res-product/values-is/strings.xml b/res-product/values-is/strings.xml
index 4e0d2a8..301a7d4 100644
--- a/res-product/values-is/strings.xml
+++ b/res-product/values-is/strings.xml
@@ -310,7 +310,7 @@
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Síminn mun slökkva á farsímagögnum þegar markinu sem þú hefur stillt er náð.\n\nÞar sem síminn þinn mælir gagnanotkun og símafyrirtækið gæti reiknað notkun á annan hátt skaltu íhuga að stilla hófleg mörk."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Deildu tækinu með því að bæta við nýjum notendum. Hver notandi fær sitt eigið svæði í tækinu fyrir sérsniðna heimaskjái, reikninga, forrit, stillingar og fleira."</string>
<string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Deildu spjaldtölvunni með því að bæta við nýjum notendum. Hver notandi fær sitt eigið svæði í spjaldtölvunni fyrir sérsniðna heimaskjái, reikninga, forrit, stillingar og fleira."</string>
- <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Deildu símanum með því að bæta við nýjum notendum. Hver notandi fær sitt eigið svæði í símanum fyrir sérsniðna heimaskjái, reikninga, forrit, stillingar og fleira."</string>
+ <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Deildu símanum með því að bæta við nýjum notendum. Hver notandi fær sitt eigið svæði í símanum með sérsniðnum heimaskjáum, reikningum, forritum, stillingum og fleiru."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Aðeins eigandi spjaldtölvunnar getur haft umsjón með notendum."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Aðeins eigandi símans getur haft umsjón með notendum."</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"Þú munt glata svæðinu þínu og gögnum sem eru í þessari spjaldtölvu. Ekki er hægt að afturkalla þessa aðgerð."</string>
diff --git a/res-product/values-it/strings.xml b/res-product/values-it/strings.xml
index a9dbcf6..fbdecc9 100644
--- a/res-product/values-it/strings.xml
+++ b/res-product/values-it/strings.xml
@@ -20,7 +20,7 @@
<string name="bluetooth_disconnect_all_profiles" product="default" msgid="5845431621920557637">"Il telefono verrà scollegato da <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_disconnect_all_profiles" product="tablet" msgid="4247757468465328774">"Il tablet verrà scollegato da <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_disconnect_all_profiles" product="device" msgid="1632553419566947403">"Il dispositivo verrà scollegato da <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_footer_mac_message" product="default" msgid="1640339352473051542">"Indirizzo Bluetooth del telefono: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
+ <string name="bluetooth_footer_mac_message" product="default" msgid="1640339352473051542">"Indirizzo Bluetooth dello smartphone: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_footer_mac_message" product="tablet" msgid="7338607486971997745">"Indirizzo Bluetooth del tablet: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_footer_mac_message" product="device" msgid="8944917742814573320">"Indirizzo Bluetooth del dispositivo: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_ask_discovery" product="tablet" msgid="7430581669309228387">"<xliff:g id="APP_NAME">%1$s</xliff:g> chiede di rendere il tuo tablet visibile ad altri dispositivi Bluetooth per <xliff:g id="TIMEOUT">%2$d</xliff:g> secondi."</string>
@@ -310,7 +310,7 @@
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Il telefono disattiverà i dati mobili una volta raggiunto il limite impostato.\n\nPoiché l\'utilizzo dei dati viene misurato dal telefono e le misurazioni dell\'operatore potrebbero differire, è consigliabile stabilire un limite prudenziale."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Condividi il tuo dispositivo aggiungendo nuovi utenti. Ogni utente dispone di uno spazio personale sul dispositivo per impostare schermate Home personalizzate, account, app, impostazioni e altro ancora."</string>
<string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Condividi il tuo tablet aggiungendo nuovi utenti. Ogni utente dispone di uno spazio personale sul tablet per impostare schermate Home personalizzate, account, app, impostazioni e altro ancora."</string>
- <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Condividi il tuo smartphone aggiungendo nuovi utenti. Ogni utente dispone di uno spazio personale sullo smartphone per impostare schermate Home personalizzate, account, app, impostazioni e altro ancora."</string>
+ <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Condividi il tuo smartphone aggiungendo nuovi utenti. Ogni utente dispone di uno spazio personale sullo smartphone per schermate Home personalizzate, account, app, impostazioni e altro ancora."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Solo il proprietario del tablet può gestire gli utenti."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Solo il proprietario dello smartphone può gestire gli utenti."</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"Perderai il tuo spazio e i tuoi dati sul tablet. Non è possibile annullare l\'azione."</string>
diff --git a/res-product/values-ko/strings.xml b/res-product/values-ko/strings.xml
index 0b3b5b6..ae37f7c 100644
--- a/res-product/values-ko/strings.xml
+++ b/res-product/values-ko/strings.xml
@@ -220,7 +220,7 @@
<string name="bluetooth_unpair_dialog_body" product="default" msgid="176620413491664050">"휴대전화가 더 이상 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>과(와) 페어링되지 않습니다."</string>
<string name="bluetooth_unpair_dialog_body" product="tablet" msgid="8098078685596880647">"태블릿이 더 이상 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>과(와) 페어링되지 않습니다."</string>
<string name="bluetooth_unpair_dialog_body" product="device" msgid="563640675231461703">"기기가 더 이상 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>과(와) 페어링되지 않습니다."</string>
- <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"화면이 잠금 해제되어 있을 때만 NFC 사용 허용"</string>
+ <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"화면이 잠금 해제되어 있을 때만 NFC 사용을 허용합니다."</string>
<string name="wifi_add_app_single_network_summary" product="default" msgid="7742934005022827107">"<xliff:g id="APPNAME">%1$s</xliff:g>에서 네트워크를 휴대전화에 저장하려고 합니다."</string>
<string name="wifi_add_app_single_network_summary" product="tablet" msgid="93466057231937113">"<xliff:g id="APPNAME">%1$s</xliff:g>에서 네트워크를 태블릿에 저장하려고 합니다."</string>
<string name="wifi_add_app_networks_summary" product="default" msgid="7014504084783236696">"<xliff:g id="APPNAME">%1$s</xliff:g>에서 이 네트워크를 휴대전화에 저장하려고 합니다."</string>
diff --git a/res-product/values-mr/strings.xml b/res-product/values-mr/strings.xml
index 94f3718..72d5b29 100644
--- a/res-product/values-mr/strings.xml
+++ b/res-product/values-mr/strings.xml
@@ -280,7 +280,7 @@
<string name="accessibility_text_reading_confirm_dialog_message" product="tablet" msgid="2547948891207211388">"तुमचा डिस्प्ले आकार आणि मजकूर प्राधान्ये टॅबलेटच्या मूळ सेटिंग्जवर रीसेट होतील"</string>
<string name="accessibility_daltonizer_about_intro_text" product="default" msgid="5234458848997942613">"तुमच्या फोनवर रंग कसे प्रदर्शित केले जातात ते अॅडजस्ट करा"</string>
<string name="accessibility_daltonizer_about_intro_text" product="tablet" msgid="5300401841391736534">"तुमच्या टॅबलेटवर रंग कसे प्रदर्शित केले जातात ते अॅडजस्ट करा"</string>
- <string name="reduce_bright_colors_preference_summary" product="default" msgid="2025941326724094318">"स्क्रीन तुमच्या फोनच्या किमान ब्राइटनेसपेक्षाही डिम करा"</string>
+ <string name="reduce_bright_colors_preference_summary" product="default" msgid="2025941326724094318">"स्क्रीन तुमच्या फोनच्या किमान ब्राइटनेसहूनही डिम करा"</string>
<string name="reduce_bright_colors_preference_summary" product="tablet" msgid="3106979202311807559">"स्क्रीन तुमच्या टॅबलेटच्या किमान ब्राइटनेसपेक्षाही डिम करा"</string>
<string name="reduce_bright_colors_preference_subtitle" product="default" msgid="9162440023310121356">"तुम्हाला पुढील गोष्टी करायच्या असतील, तेव्हा आणखी डिमची मदत होऊ शकते: <ol> <li> तुमच्या फोनचा डीफॉल्ट किमान ब्राइटनेस अजूनही खूप ब्राइट आहे</li> <li> तुम्ही तुमचा फोन अंधार असलेल्या परिस्थितीमध्ये वापरत आहात, जसे की रात्री किंवा झोपण्याआधी अंधार असलेली खोली</li> </ol>"</string>
<string name="reduce_bright_colors_preference_subtitle" product="tablet" msgid="5747242697890472822">"तुम्हाला पुढील गोष्टी करायच्या असतील, तेव्हा आणखी डिमची मदत होऊ शकते: <ol> तुमच्या टॅबलेटचा डीफॉल्ट किमान ब्राइटनेस अजूनही खूप ब्राइट आहे</li> <li> तुम्ही तुमचा टॅबलेट अंधार असलेल्या परिस्थितीमध्ये वापरत आहात, जसे की रात्री किंवा झोपण्याआधी अंधार असलेली खोली</li> </ol>"</string>
diff --git a/res-product/values-ms/strings.xml b/res-product/values-ms/strings.xml
index 7429608..6aed742 100644
--- a/res-product/values-ms/strings.xml
+++ b/res-product/values-ms/strings.xml
@@ -310,7 +310,7 @@
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Telefon anda akan mematikan data mudah alih setelah mencapai had yang anda tetapkan.\n\nMemandangkan penggunaan data diukur oleh telefon anda dan pembawa anda mungkin mengira penggunaan secara berbeza, anda disyorkan supaya menetapkan had yang konservatif."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Kongsi peranti anda dengan menambahkan pengguna baharu. Setiap pengguna mempunyai ruang peribadi pada peranti anda untuk Skrin utama tersuai, akaun, apl, tetapan dan pelbagai lagi."</string>
<string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Kongsi tablet anda dengan menambahkan pengguna baharu. Setiap pengguna mempunyai ruang peribadi pada tablet anda untuk Skrin utama tersuai, akaun, apl, tetapan dan pelbagai lagi."</string>
- <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Kongsi telefon anda dengan menambahkan pengguna baharu. Setiap pengguna mempunyai ruang peribadi pada telefon anda untuk Skrin utama tersuai, akaun, apl, tetapan dan pelbagai lagi."</string>
+ <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Kongsi telefon anda dengan menambahkan pengguna baharu. Setiap pengguna mempunyai ruang peribadi pada telefon anda agar Skrin utama, akaun, apl, tetapan dan pelbagai lagi dapat disesuaikan."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Hanya pemilik tablet boleh menguruskan pengguna."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Hanya pemilik telefon boleh menguruskan pengguna."</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"Anda akan kehilangan ruang dan data anda pada tablet ini. Anda tidak boleh membuat asal tindakan ini."</string>
diff --git a/res-product/values-ne/strings.xml b/res-product/values-ne/strings.xml
index 775bb89..af6c282 100644
--- a/res-product/values-ne/strings.xml
+++ b/res-product/values-ne/strings.xml
@@ -321,13 +321,13 @@
<string name="ambient_display_title" product="default" msgid="8027137727044125809">"फोनको जाँच गर्न डबल-ट्याप गर्नुहोस्"</string>
<string name="ambient_display_title" product="tablet" msgid="2347746118188465334">"ट्याब्लेटको जाँच गर्न डबल-ट्याप गर्नुहोस्"</string>
<string name="ambient_display_title" product="device" msgid="6306105102175823199">"डिभाइसको जाँच गर्न डबल-ट्याप गर्नुहोस्"</string>
- <string name="ambient_display_pickup_title" product="default" msgid="6753194901596847876">"फोन उठाउँदा फोनमा आएका सूचना देखिऊन्"</string>
+ <string name="ambient_display_pickup_title" product="default" msgid="6753194901596847876">"फोन जाँच्न फोन उठाउने"</string>
<string name="ambient_display_pickup_title" product="tablet" msgid="1166999144900082897">"ट्याब्लेटको जाँच गर्न उठाउनुहोस्"</string>
<string name="ambient_display_pickup_title" product="device" msgid="2091669267677915975">"डिभाइसको जाँच गर्न उठाउनुहोस्"</string>
<string name="ambient_display_pickup_summary" product="default" msgid="135853288202686097">"समय, सूचना र अन्य जानकारी हेर्न आफ्नो फोन उठाउनुहोस्।"</string>
<string name="ambient_display_pickup_summary" product="tablet" msgid="1638055271563107384">"समय, सूचना र अन्य जानकारी हेर्न आफ्नो ट्याब्लेट उठाउनुहोस्।"</string>
<string name="ambient_display_pickup_summary" product="device" msgid="964509644539692482">"समय, सूचना तथा अन्य जानकारी हेर्न आफ्नो यन्त्र उठाउनुहोस्।"</string>
- <string name="ambient_display_tap_screen_title" product="default" msgid="4098147293617084955">"फोनको जाँच गर्न ट्याप गर्दा स्क्रिन अन होस्"</string>
+ <string name="ambient_display_tap_screen_title" product="default" msgid="4098147293617084955">"फोन जाँच्न ट्याप गर्ने"</string>
<string name="ambient_display_tap_screen_title" product="tablet" msgid="7748346447393988408">"ट्याब्लेटको जाँच गर्न ट्याप गर्नुहोस्"</string>
<string name="ambient_display_tap_screen_title" product="device" msgid="5710618387229771616">"डिभाइसको जाँच गर्न ट्याप गर्नुहोस्"</string>
<string name="fingerprint_swipe_for_notifications_summary" product="default" msgid="9220919404923939167">"अफ्ना सूचनाहरूको जाँच गर्न आफ्नो फोनको पछाडिको भागमा रहेको फिंगरप्रिन्ट सेन्सरमा तलतिर स्वाइप गर्नुहोस्।"</string>
diff --git a/res-product/values-or/strings.xml b/res-product/values-or/strings.xml
index 34407e7..df7b110 100644
--- a/res-product/values-or/strings.xml
+++ b/res-product/values-or/strings.xml
@@ -20,7 +20,7 @@
<string name="bluetooth_disconnect_all_profiles" product="default" msgid="5845431621920557637">"ଆପଣଙ୍କ ଫୋନ୍ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ଠାରୁ ବିଚ୍ଛିନ୍ନ ହେବ।"</string>
<string name="bluetooth_disconnect_all_profiles" product="tablet" msgid="4247757468465328774">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ଠାରୁ ଆପଣଙ୍କ ଟାବ୍ଲେଟ୍ ବିଚ୍ଛିନ୍ନ ହେବ।"</string>
<string name="bluetooth_disconnect_all_profiles" product="device" msgid="1632553419566947403">"ଆପଣଙ୍କ ଡିଭାଇସ୍ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ରୁ ବିଚ୍ଛିନ୍ନ ହେବ।"</string>
- <string name="bluetooth_footer_mac_message" product="default" msgid="1640339352473051542">"ଫୋନ୍ର ବ୍ଲୁଟୂଥ୍ ଠିକଣା ହେଉଛି: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
+ <string name="bluetooth_footer_mac_message" product="default" msgid="1640339352473051542">"ଫୋନର ବ୍ଲୁଟୂଥ ଠିକଣା ହେଉଛି: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_footer_mac_message" product="tablet" msgid="7338607486971997745">"ଟାବଲେଟର ବ୍ଲୁଟୁଥ ଠିକଣା ହେଉଛି: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_footer_mac_message" product="device" msgid="8944917742814573320">"ଡିଭାଇସର ବ୍ଲୁଟୁଥ ଠିକଣା ହେଉଛି: <xliff:g id="BLUETOOTH_MAC_ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_ask_discovery" product="tablet" msgid="7430581669309228387">"<xliff:g id="TIMEOUT">%2$d</xliff:g> ସେକେଣ୍ଡ ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କ ଟାବ୍ଲେଟ୍କୁ ଅନ୍ୟ ବ୍ଲୁଟୂଥ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ଦେଖାଇବାକୁ ଚାହୁଁଛି।"</string>
@@ -220,7 +220,7 @@
<string name="bluetooth_unpair_dialog_body" product="default" msgid="176620413491664050">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହିତ ଆପଣଙ୍କ ଫୋନ୍ ଆଉ ପେୟାର୍ ହେବନାହିଁ"</string>
<string name="bluetooth_unpair_dialog_body" product="tablet" msgid="8098078685596880647">"ଆପଣଙ୍କ ଟାବଲେଟ୍ ଏବେ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ପେୟାର୍ ହୋଇ ରହିବନାହିଁ"</string>
<string name="bluetooth_unpair_dialog_body" product="device" msgid="563640675231461703">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ଆପଣଙ୍କ ଡିଭାଇସ୍ ଆଉ ପେୟାର୍ ହୋଇପାରିବ ନାହିଁ"</string>
- <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"ସ୍କ୍ରିନ ଅନଲକ୍ ହେଲେ ହିଁ କେବଳ NFCର ବ୍ୟବହାରକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"ସ୍କ୍ରିନ ଅନଲକ ହେଲେ ହିଁ କେବଳ NFCର ବ୍ୟବହାରକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="wifi_add_app_single_network_summary" product="default" msgid="7742934005022827107">"<xliff:g id="APPNAME">%1$s</xliff:g> ଆପଣଙ୍କ ଫୋନରେ ଏକ ନେଟୱାର୍କ ସେଭ୍ କରିବାକୁ ଚାହେଁ"</string>
<string name="wifi_add_app_single_network_summary" product="tablet" msgid="93466057231937113">"<xliff:g id="APPNAME">%1$s</xliff:g> ଆପଣଙ୍କ ଟାବଲେଟରେ ଏକ ନେଟୱାର୍କ ସେଭ୍ କରିବାକୁ ଚାହେଁ"</string>
<string name="wifi_add_app_networks_summary" product="default" msgid="7014504084783236696">"<xliff:g id="APPNAME">%1$s</xliff:g> ଆପଣଙ୍କ ଫୋନରେ ଏହିସବୁ ନେଟୱାର୍କକୁ ସେଭ୍ କରିବାକୁ ଚାହେଁ"</string>
@@ -315,13 +315,13 @@
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"କେବଳ ଫୋନ୍ର ମାଲିକ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ପରିଚାଳନା କରିପାରିବେ।"</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"ଏହି ଟାବ୍ଲେଟ୍ରେ ଥିବା ଆପଣଙ୍କର ସ୍ଥାନ ଓ ଡାଟା ହରାଇବେ। ଆପଣ ଏହିଗୁଡ଼ିକୁ ପୁଣି ଫେରି ପାଇବେ ନାହିଁ।"</string>
<string name="user_confirm_remove_self_message" product="default" msgid="3209762447055039706">"ଆପଣ, ଏହି ଫୋନ୍ରେ ନିଜସ୍ୱ ସ୍ଥାନ ଓ ଡାଟା ହରାଇବେ। ଏହାକୁ ଆପଣ ପୂର୍ବାବସ୍ଥାକୁ ଫେରାଇ ଆଣିପାରିବେ ନାହିଁ।"</string>
- <string name="support_summary" product="default" msgid="2044721479256103419">"ସହାୟତା ଆର୍ଟିକିଲ୍, ଫୋନ୍ ଓ ଚାଟ୍"</string>
+ <string name="support_summary" product="default" msgid="2044721479256103419">"ସହାୟତା ଆର୍ଟିକିଲ, ଫୋନ ଓ ଚାଟ"</string>
<string name="support_summary" product="tablet" msgid="2588832599234347108">"ସହାୟତା ଆର୍ଟିକିଲ, ଟାବଲେଟ ଏବଂ ଚାଟ"</string>
<string name="support_summary" product="device" msgid="6821511162132497205">"ସହାୟତା ଆର୍ଟିକିଲ, ଡିଭାଇସ ଏବଂ ଚାଟ"</string>
<string name="ambient_display_title" product="default" msgid="8027137727044125809">"ଫୋନ୍ ଚେକ୍ କରିବାକୁ ଦୁଇଥର-ଟାପ୍ କରନ୍ତୁ"</string>
<string name="ambient_display_title" product="tablet" msgid="2347746118188465334">"ଟାବ୍ଲେଟ୍ ଯାଞ୍ଚ କରିବାକୁ ଡବଲ୍-ଟାପ୍ କରନ୍ତୁ"</string>
<string name="ambient_display_title" product="device" msgid="6306105102175823199">"ଡିଭାଇସ୍ ଯାଞ୍ଚ କରିବାକୁ ଡବଲ୍-ଟାପ୍ କରନ୍ତୁ"</string>
- <string name="ambient_display_pickup_title" product="default" msgid="6753194901596847876">"ଫୋନ୍ ଚେକ୍ କରିବା ପାଇଁ ଉଠାନ୍ତୁ"</string>
+ <string name="ambient_display_pickup_title" product="default" msgid="6753194901596847876">"ଫୋନ ଚେକ କରିବା ପାଇଁ ଉଠାନ୍ତୁ"</string>
<string name="ambient_display_pickup_title" product="tablet" msgid="1166999144900082897">"ଟାବଲେଟ ଯାଞ୍ଚ କରିବାକୁ ଉଠାନ୍ତୁ"</string>
<string name="ambient_display_pickup_title" product="device" msgid="2091669267677915975">"ଡିଭାଇସ୍ ଯାଞ୍ଚ କରିବାକୁ ଉଠାନ୍ତୁ"</string>
<string name="ambient_display_pickup_summary" product="default" msgid="135853288202686097">"ସମୟ, ବିଜ୍ଞପ୍ତି, ଏବଂ ଅନ୍ୟ ସୂଚନା ଦେଖିବାକୁ, ଆପଣଙ୍କ ଫୋନ୍ ଉଠାନ୍ତୁ।"</string>
diff --git a/res-product/values-pl/strings.xml b/res-product/values-pl/strings.xml
index 6f6953f..784c865 100644
--- a/res-product/values-pl/strings.xml
+++ b/res-product/values-pl/strings.xml
@@ -27,18 +27,18 @@
<string name="bluetooth_ask_discovery" product="default" msgid="3947027393224406367">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce ustawić telefon jako widoczny dla innych urządzeń Bluetooth przez <xliff:g id="TIMEOUT">%2$d</xliff:g> s."</string>
<string name="bluetooth_ask_discovery_no_name" product="tablet" msgid="440976482246291783">"Aplikacja chce ustawić tablet jako widoczny dla innych urządzeń Bluetooth przez <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
<string name="bluetooth_ask_discovery_no_name" product="default" msgid="5164413774312648842">"Aplikacja chce ustawić telefon jako widoczny dla innych urządzeń Bluetooth przez <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
- <string name="bluetooth_ask_lasting_discovery" product="tablet" msgid="750347558570909906">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce ustawić tablet jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetooth."</string>
- <string name="bluetooth_ask_lasting_discovery" product="default" msgid="5844129004156080891">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce ustawić telefon jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetooth."</string>
- <string name="bluetooth_ask_lasting_discovery_no_name" product="tablet" msgid="1062185767225450964">"Aplikacja chce ustawić tablet jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetooth."</string>
- <string name="bluetooth_ask_lasting_discovery_no_name" product="default" msgid="7909547303183236140">"Aplikacja chce ustawić telefon jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetooth."</string>
+ <string name="bluetooth_ask_lasting_discovery" product="tablet" msgid="750347558570909906">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce ustawić tablet jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetootha."</string>
+ <string name="bluetooth_ask_lasting_discovery" product="default" msgid="5844129004156080891">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce ustawić telefon jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetootha."</string>
+ <string name="bluetooth_ask_lasting_discovery_no_name" product="tablet" msgid="1062185767225450964">"Aplikacja chce ustawić tablet jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetootha."</string>
+ <string name="bluetooth_ask_lasting_discovery_no_name" product="default" msgid="7909547303183236140">"Aplikacja chce ustawić telefon jako widoczny dla innych urządzeń Bluetooth. Później możesz to zmienić w ustawieniach Bluetootha."</string>
<string name="bluetooth_ask_enablement_and_discovery" product="tablet" msgid="6187874232925632790">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić tablet jako widoczny dla innych urządzeń przez <xliff:g id="TIMEOUT">%2$d</xliff:g> s."</string>
<string name="bluetooth_ask_enablement_and_discovery" product="default" msgid="1018495685727482700">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić telefon jako widoczny dla innych urządzeń przez <xliff:g id="TIMEOUT">%2$d</xliff:g> s."</string>
<string name="bluetooth_ask_enablement_and_discovery_no_name" product="tablet" msgid="3469927640700478737">"Aplikacja chce włączyć Bluetooth i ustawić tablet jako widoczny dla innych urządzeń przez <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
<string name="bluetooth_ask_enablement_and_discovery_no_name" product="default" msgid="4847493437698663706">"Aplikacja chce włączyć Bluetooth i ustawić telefon jako widoczny dla innych urządzeń przez <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet" msgid="487436507630570730">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić tablet jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetooth."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default" msgid="5169934906530139494">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić telefon jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetooth."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="tablet" msgid="505214056751470551">"Aplikacja chce włączyć Bluetooth i ustawić tablet jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetooth."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="default" msgid="6187216564831513193">"Aplikacja chce włączyć Bluetooth i ustawić telefon jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetooth."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet" msgid="487436507630570730">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić tablet jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetootha."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default" msgid="5169934906530139494">"<xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić telefon jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetootha."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="tablet" msgid="505214056751470551">"Aplikacja chce włączyć Bluetooth i ustawić tablet jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetootha."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="default" msgid="6187216564831513193">"Aplikacja chce włączyć Bluetooth i ustawić telefon jako widoczny dla innych urządzeń. Później możesz to zmienić w ustawieniach Bluetootha."</string>
<string name="encryption_and_credential_settings_summary" product="default" msgid="3741475436042800617">"Telefon zaszyfrowany"</string>
<string name="not_encrypted_summary" product="default" msgid="330652312169527734">"Telefon nie jest zaszyfrowany"</string>
<string name="encryption_and_credential_settings_summary" product="tablet" msgid="2220021007677215054">"Urządzenie zaszyfrowane"</string>
@@ -310,7 +310,7 @@
<string name="data_usage_limit_dialog_mobile" product="default" msgid="4552449053646826676">"Po osiągnięciu ustawionego przez Ciebie limitu telefon wyłączy mobilną transmisję danych.\n\nTelefon może obliczać ilość przesłanych danych inaczej niż operator sieci komórkowej, więc pomyśl o ustawieniu niższego, bezpiecznego limitu."</string>
<string name="user_settings_footer_text" product="device" msgid="8543171604218174424">"Udostępnij swoje urządzenie, dodając nowych użytkowników. Każdy użytkownik ma na urządzeniu własny obszar, gdzie zapisywane są m.in. niestandardowe ekrany główne, konta, aplikacje i ustawienia."</string>
<string name="user_settings_footer_text" product="tablet" msgid="4749331578207116797">"Udostępnij swój tablet, dodając nowych użytkowników. Każdy użytkownik ma na tablecie własny obszar, gdzie zapisywane są m.in. niestandardowe ekrany główne, konta, aplikacje i ustawienia."</string>
- <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Dziel z innymi swój telefon, dodając nowych użytkowników. Każdy użytkownik ma na telefonie własny obszar, gdzie zapisywane są m.in. jego własne ekrany główne, konta, aplikacje i ustawienia."</string>
+ <string name="user_settings_footer_text" product="default" msgid="5440172971747221370">"Dodaj nowych użytkowników, aby dzielić się swoim telefonem z innymi. Każdy użytkownik ma na telefonie własny obszar, gdzie zapisywane są m.in. jego własne ekrany główne, konta, aplikacje i ustawienia."</string>
<string name="user_cannot_manage_message" product="tablet" msgid="5566619500245432179">"Użytkownikami może zarządzać tylko właściciel tabletu."</string>
<string name="user_cannot_manage_message" product="default" msgid="8596259161937605316">"Użytkownikami może zarządzać tylko właściciel telefonu."</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="6880861846664267876">"Utracisz swój obszar i dane na tym tablecie. Tej czynności nie można cofnąć."</string>
diff --git a/res-product/values-pt-rPT/strings.xml b/res-product/values-pt-rPT/strings.xml
index 67c7b74..b82be6e 100644
--- a/res-product/values-pt-rPT/strings.xml
+++ b/res-product/values-pt-rPT/strings.xml
@@ -220,7 +220,7 @@
<string name="bluetooth_unpair_dialog_body" product="default" msgid="176620413491664050">"O telemóvel deixará de estar sincronizado com o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_unpair_dialog_body" product="tablet" msgid="8098078685596880647">"O tablet deixará de estar sincronizado com o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_unpair_dialog_body" product="device" msgid="563640675231461703">"O dispositivo deixará de estar sincronizado com o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"Permite a utilização do NFC apenas quando o ecrã está desbloqueado"</string>
+ <string name="nfc_secure_toggle_summary" product="default" msgid="3515508978581011683">"Só permite usar o NFC quando o ecrã está desbloqueado"</string>
<string name="wifi_add_app_single_network_summary" product="default" msgid="7742934005022827107">"A app <xliff:g id="APPNAME">%1$s</xliff:g> quer guardar uma rede no seu telemóvel."</string>
<string name="wifi_add_app_single_network_summary" product="tablet" msgid="93466057231937113">"A app <xliff:g id="APPNAME">%1$s</xliff:g> quer guardar uma rede no seu tablet."</string>
<string name="wifi_add_app_networks_summary" product="default" msgid="7014504084783236696">"A app <xliff:g id="APPNAME">%1$s</xliff:g> quer guardar estas redes no seu telemóvel."</string>
diff --git a/res-product/values-sw/strings.xml b/res-product/values-sw/strings.xml
index f2cca38..38dad50 100644
--- a/res-product/values-sw/strings.xml
+++ b/res-product/values-sw/strings.xml
@@ -232,7 +232,7 @@
<string name="sim_lock_off" product="tablet" msgid="4619320846576958981">"Itisha PIN ili kutumia kompyuta kibao"</string>
<string name="sim_lock_off" product="default" msgid="2064502270875375541">"Itisha PIN kabla kuruhusu simu itumike"</string>
<string name="status_number" product="tablet" msgid="6746773328312218158">"MDN"</string>
- <string name="status_number" product="default" msgid="2333455505912871374">"Nambari ya simu"</string>
+ <string name="status_number" product="default" msgid="2333455505912871374">"Namba ya simu"</string>
<string name="status_number_sim_slot" product="tablet" msgid="2190552731606069787">"MDN (nafasi ya sim ya %1$d)"</string>
<string name="status_number_sim_slot" product="default" msgid="1333171940376236656">"Nambari ya simu (nafasi ya sim ya %1$d)"</string>
<string name="status_number_sim_status" product="tablet" msgid="9003886361856568694">"MDN kwenye SIM"</string>
diff --git a/res-product/values-ta/strings.xml b/res-product/values-ta/strings.xml
index bb5bf49..5a7b9be 100644
--- a/res-product/values-ta/strings.xml
+++ b/res-product/values-ta/strings.xml
@@ -265,7 +265,7 @@
<string name="bluetooth_tethering_subtext" product="default" msgid="3638886236597805392">"புளூடூத் மூலம் ஃபோனின் இண்டர்நெட்டைப் பகிரும்"</string>
<string name="ethernet_tethering_subtext" product="default" msgid="8652438909365718644">"ஈத்தர்நெட் மூலம் மொபைலின் இணைய இணைப்பைப் பகிரும்"</string>
<string name="ethernet_tethering_subtext" product="tablet" msgid="2227710549796706455">"டேப்லெட்டின் இணைய இணைப்பை ஈதர்நெட் மூலம் பகிருங்கள்"</string>
- <string name="about_settings" product="tablet" msgid="1471390492111370330">"டேப்லெட் அறிமுகம்"</string>
+ <string name="about_settings" product="tablet" msgid="1471390492111370330">"டேப்லெட் விவரம்"</string>
<string name="about_settings" product="default" msgid="2621311564780208250">"மொபைல் விவரம்"</string>
<string name="about_settings" product="device" msgid="7595574154492383452">"சாதனம் பற்றிய அறிமுகம்"</string>
<string name="about_settings" product="emulator" msgid="1099246296173401003">"சாதனம் பற்றிய தகவல்"</string>
diff --git a/res-product/values-tr/strings.xml b/res-product/values-tr/strings.xml
index ae54112..411fc5a 100644
--- a/res-product/values-tr/strings.xml
+++ b/res-product/values-tr/strings.xml
@@ -350,8 +350,8 @@
<string name="battery_tip_incompatible_charging_message" product="default" msgid="5097154279720383707">"Telefonunuz yavaş şarj oluyor veya hiç şarj olmuyor olabilir. Daha hızlı şarj için önerilen bir kablo ve adaptör kullanın."</string>
<string name="battery_tip_incompatible_charging_message" product="device" msgid="4208335872169818919">"Cihazınız yavaş şarj oluyor veya hiç şarj olmuyor olabilir. Daha hızlı şarj için önerilen bir kablo ve adaptör kullanın."</string>
<string name="battery_tip_incompatible_charging_message" product="tablet" msgid="5697523201841444736">"Tabletiniz yavaş şarj oluyor veya hiç şarj olmuyor olabilir. Daha hızlı şarj için önerilen bir kablo ve adaptör kullanın."</string>
- <string name="lockscreen_trivial_controls_summary" product="default" msgid="42562533085885152">"Telefonunuzun kilidini açmak zorunda değilsiniz"</string>
- <string name="lockscreen_trivial_controls_summary" product="tablet" msgid="9052068482124729345">"Tabletinizin kilidini açmak zorunda değilsiniz"</string>
+ <string name="lockscreen_trivial_controls_summary" product="default" msgid="42562533085885152">"Tabletinizin kilidini açmadan"</string>
+ <string name="lockscreen_trivial_controls_summary" product="tablet" msgid="9052068482124729345">"Tabletinizin kilidini açmadan"</string>
<string name="auto_rotate_summary_a11y" product="default" msgid="2813368383309985185">"Telefonunuzu dikey/yatay mod arasında hareket ettirdiğinizde"</string>
<string name="auto_rotate_summary_a11y" product="tablet" msgid="4708833814245913981">"Tabletinizi dikey/yatay mod arasında hareket ettirdiğinizde"</string>
<string name="daltonizer_feature_summary" product="default" msgid="3940653889277283702">"Renklerin telefonunuzda nasıl görüntüleneceğini düzenleyin"</string>
diff --git a/res/drawable-night/mouse_keys_click.xml b/res/drawable-night/mouse_keys_click.xml
new file mode 100644
index 0000000..e5e8d5a
--- /dev/null
+++ b/res/drawable-night/mouse_keys_click.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#171216"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#F1B3E6"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_directional.xml b/res/drawable-night/mouse_keys_directional.xml
new file mode 100644
index 0000000..fd49f1e
--- /dev/null
+++ b/res/drawable-night/mouse_keys_directional.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#171216"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M172.4,18h12v12h-12z"/>
+ <path
+ android:pathData="M181.24,27.41L176.46,22.64V26.69H174.99V20.11H181.56V21.59H177.51L182.29,26.36L181.24,27.41Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M194.63,18h12v12h-12z"/>
+ <path
+ android:pathData="M199.89,28.02V22.81L197.66,25.05L196.61,24L200.63,19.98L204.66,24L203.61,25.05L201.37,22.81V28.02H199.89Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M216.86,18h12v12h-12z"/>
+ <path
+ android:pathData="M220.02,27.41L218.98,26.36L223.75,21.59H219.7V20.11H226.27V26.69H224.8V22.64L220.02,27.41Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.66,14 282.77,14H297C298.1,14 299,14.9 299,16V32C299,33.1 298.1,34 297,34H282.77C281.66,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.3,42 121.2,42.9 121.2,44V60C121.2,61.1 120.3,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M180.79,46h12v12h-12z"/>
+ <path
+ android:pathData="M185.6,52.74L187.84,54.97L186.79,56.03L182.76,52L186.79,47.97L187.84,49.03L185.6,51.26H190.81V52.74H185.6Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M231.59,46h12v12h-12z"/>
+ <path
+ android:pathData="M238.77,52.74H233.56V51.26H238.77L236.54,49.03L237.59,47.97L241.61,52L237.59,56.03L236.54,54.97L238.77,52.74Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M187.67,74h12v12h-12z"/>
+ <path
+ android:pathData="M190.09,83.59V78.51H191.56V81.07L196.64,76L197.67,77.04L192.6,82.11H195.16V83.59H190.09Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.44C229.55,70 230.44,70.9 230.44,72V88C230.44,89.1 229.55,90 228.44,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M213.45,74h12v12h-12z"/>
+ <path
+ android:pathData="M218.71,75.97H220.19V81.19L222.43,78.95L223.48,80L219.45,84.03L215.43,80L216.48,78.95L218.71,81.19V75.97Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#F1B3E6"/>
+ <group>
+ <clip-path
+ android:pathData="M239.23,74h12v12h-12z"/>
+ <path
+ android:pathData="M243.84,83.69V82.21H246.4L241.21,77.01L242.24,75.97L247.44,81.18V78.61H248.92V83.69H243.84Z"
+ android:fillColor="#4C1F49"/>
+ </group>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.44C243.55,98 244.44,98.9 244.44,100V116C244.44,117.11 243.55,118 242.44,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_press_hold.xml b/res/drawable-night/mouse_keys_press_hold.xml
new file mode 100644
index 0000000..eb85602
--- /dev/null
+++ b/res/drawable-night/mouse_keys_press_hold.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#171216"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#F1B3E6"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_release.xml b/res/drawable-night/mouse_keys_release.xml
new file mode 100644
index 0000000..4fb7c4a
--- /dev/null
+++ b/res/drawable-night/mouse_keys_release.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#171216"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#F1B3E6"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_release2.xml b/res/drawable-night/mouse_keys_release2.xml
new file mode 100644
index 0000000..e844bc9
--- /dev/null
+++ b/res/drawable-night/mouse_keys_release2.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#171216"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#F1B3E6"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_toggle_scroll.xml b/res/drawable-night/mouse_keys_toggle_scroll.xml
new file mode 100644
index 0000000..3d6cbf3
--- /dev/null
+++ b/res/drawable-night/mouse_keys_toggle_scroll.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#171216"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#F1B3E6"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#554151"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#4E444B"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#3A3338"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable/audio_sharing_rounded_bg_ripple.xml b/res/drawable/audio_sharing_rounded_bg_ripple.xml
deleted file mode 100644
index 18696c6..0000000
--- a/res/drawable/audio_sharing_rounded_bg_ripple.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2023 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.
- -->
-
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="?android:attr/colorControlHighlight">
- <item android:drawable="@drawable/audio_sharing_rounded_bg"/>
-</ripple>
\ No newline at end of file
diff --git a/res/drawable/bt_header_circle_outline.xml b/res/drawable/bt_header_circle_outline.xml
new file mode 100644
index 0000000..ef7a532
--- /dev/null
+++ b/res/drawable/bt_header_circle_outline.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 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.
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="oval">
+ <solid android:color="@color/settingslib_materialColorSurfaceBright"/>
+ <stroke
+ android:width="1dp"
+ android:color="@color/settingslib_materialColorOutlineVariant"/>
+</shape>
diff --git a/res/drawable/ic_brightness_auto.xml b/res/drawable/ic_brightness_auto.xml
deleted file mode 100644
index 7ace52b..0000000
--- a/res/drawable/ic_brightness_auto.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2024 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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="@dimen/accessibility_icon_foreground_size"
- android:height="@dimen/accessibility_icon_foreground_size"
- android:viewportWidth="960"
- android:viewportHeight="960">
- <path
- android:fillColor="@android:color/white"
- android:pathData="M312,640L376,640L408,548L554,548L586,640L648,640L512,280L448,280L312,640ZM426,496L478,346L482,346L534,496L426,496ZM480,932L346,800L160,800L160,614L28,480L160,346L160,160L346,160L480,28L614,160L800,160L800,346L932,480L800,614L800,800L614,800L480,932ZM480,820L580,720L720,720L720,580L820,480L720,380L720,240L580,240L480,140L380,240L240,240L240,380L140,480L240,580L240,720L380,720L480,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
-</vector>
diff --git a/res/drawable/ic_brightness_medium.xml b/res/drawable/ic_brightness_medium.xml
deleted file mode 100644
index 3e77885..0000000
--- a/res/drawable/ic_brightness_medium.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2024 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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="@dimen/accessibility_icon_foreground_size"
- android:height="@dimen/accessibility_icon_foreground_size"
- android:viewportWidth="960"
- android:viewportHeight="960">
- <path
- android:fillColor="@android:color/white"
- android:pathData="M480,932L346,800L160,800L160,614L28,480L160,346L160,160L346,160L480,28L614,160L800,160L800,346L932,480L800,614L800,800L614,800L480,932ZM480,680Q563,680 621.5,621.5Q680,563 680,480Q680,397 621.5,338.5Q563,280 480,280L480,680ZM480,820L580,720L720,720L720,580L820,480L720,380L720,240L580,240L480,140L380,240L240,240L240,380L140,480L240,580L240,720L380,720L480,820ZM480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480Z"/>
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_suw_brightness_auto.xml b/res/drawable/ic_suw_brightness_auto.xml
index a4221c5..93f17f5 100644
--- a/res/drawable/ic_suw_brightness_auto.xml
+++ b/res/drawable/ic_suw_brightness_auto.xml
@@ -21,6 +21,15 @@
android:height="@dimen/accessibility_icon_size"
android:color="@color/accessibility_feature_background"/>
</item>
- <item android:gravity="center"
- android:drawable="@drawable/ic_brightness_auto"/>
+ <item android:gravity="center">
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="@dimen/accessibility_icon_foreground_size"
+ android:height="@dimen/accessibility_icon_foreground_size"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M2 15V13H5V15H2ZM6.35 9.75L4.225 7.625L5.625 6.225L7.75 8.35L6.35 9.75ZM7 18V15H17V18H7ZM11 7V4H13V7H11ZM17.65 9.775L16.25 8.35L18.375 6.225L19.775 7.65L17.65 9.775ZM19 15V13H22V15H19Z"/>
+ </vector>
+ </item>
</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_suw_brightness_level.xml b/res/drawable/ic_suw_brightness_level.xml
index 57bd188..4ed6374 100644
--- a/res/drawable/ic_suw_brightness_level.xml
+++ b/res/drawable/ic_suw_brightness_level.xml
@@ -21,6 +21,15 @@
android:height="@dimen/accessibility_icon_size"
android:color="@color/accessibility_feature_background"/>
</item>
- <item android:gravity="center"
- android:drawable="@drawable/ic_brightness_medium"/>
+ <item android:gravity="center">
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="@dimen/accessibility_icon_foreground_size"
+ android:height="@dimen/accessibility_icon_foreground_size"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M9 14.5V13H15V14.5H9ZM8 11.5V10H16V11.5H8ZM7 23C6.45 23 5.975 22.8083 5.575 22.425C5.19167 22.025 5 21.55 5 21V3C5 2.45 5.19167 1.98333 5.575 1.6C5.975 1.2 6.45 0.999999 7 0.999999H17C17.55 0.999999 18.0167 1.2 18.4 1.6C18.8 1.98333 19 2.45 19 3V21C19 21.55 18.8 22.025 18.4 22.425C18.0167 22.8083 17.55 23 17 23H7ZM7 20V21H17V20H7ZM7 18H17V6H7V18ZM7 4H17V3H7V4ZM7 4V3V4ZM7 20V21V20Z"/>
+ </vector>
+ </item>
</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_zen_mode_trigger_with_settings.xml b/res/drawable/ic_zen_mode_trigger_with_settings.xml
new file mode 100644
index 0000000..7dd81f1
--- /dev/null
+++ b/res/drawable/ic_zen_mode_trigger_with_settings.xml
@@ -0,0 +1,26 @@
+<!--
+Copyright (C) 2024 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="960"
+ android:viewportWidth="960"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M370,880L354,752Q341,747 329.5,740Q318,733 307,725L188,775L78,585L181,507Q180,500 180,493.5Q180,487 180,480Q180,473 180,466.5Q180,460 181,453L78,375L188,185L307,235Q318,227 330,220Q342,213 354,208L370,80L590,80L606,208Q619,213 630.5,220Q642,227 653,235L772,185L882,375L779,453Q780,460 780,466.5Q780,473 780,480Q780,487 780,493.5Q780,500 778,507L881,585L771,775L653,725Q642,733 630,740Q618,747 606,752L590,880L370,880ZM440,800L519,800L533,694Q564,686 590.5,670.5Q617,655 639,633L738,674L777,606L691,541Q696,527 698,511.5Q700,496 700,480Q700,464 698,448.5Q696,433 691,419L777,354L738,286L639,328Q617,305 590.5,289.5Q564,274 533,266L520,160L441,160L427,266Q396,274 369.5,289.5Q343,305 321,327L222,286L183,354L269,418Q264,433 262,448Q260,463 260,480Q260,496 262,511Q264,526 269,541L183,606L222,674L321,632Q343,655 369.5,670.5Q396,686 427,694L440,800ZM482,620Q540,620 581,579Q622,538 622,480Q622,422 581,381Q540,340 482,340Q423,340 382.5,381Q342,422 342,480Q342,538 382.5,579Q423,620 482,620ZM480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/mouse_keys_click.xml b/res/drawable/mouse_keys_click.xml
new file mode 100644
index 0000000..2dd6238
--- /dev/null
+++ b/res/drawable/mouse_keys_click.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#FFF7F9"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#804D7A"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_directional.xml b/res/drawable/mouse_keys_directional.xml
new file mode 100644
index 0000000..ae79563
--- /dev/null
+++ b/res/drawable/mouse_keys_directional.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#FFF7F9"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#804D7A"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M172.4,18h12v12h-12z"/>
+ <path
+ android:pathData="M181.24,27.41L176.46,22.64V26.69H174.99V20.11H181.56V21.59H177.51L182.29,26.36L181.24,27.41Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M194.63,18h12v12h-12z"/>
+ <path
+ android:pathData="M199.89,28.02V22.81L197.66,25.05L196.61,24L200.63,19.98L204.66,24L203.61,25.05L201.37,22.81V28.02H199.89Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M216.86,18h12v12h-12z"/>
+ <path
+ android:pathData="M220.02,27.41L218.98,26.36L223.75,21.59H219.7V20.11H226.27V26.69H224.8V22.64L220.02,27.41Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.66,14 282.77,14H297C298.1,14 299,14.9 299,16V32C299,33.1 298.1,34 297,34H282.77C281.66,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.3,42 121.2,42.9 121.2,44V60C121.2,61.1 120.3,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M180.79,46h12v12h-12z"/>
+ <path
+ android:pathData="M185.6,52.74L187.84,54.97L186.79,56.03L182.76,52L186.79,47.97L187.84,49.03L185.6,51.26H190.81V52.74H185.6Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M231.59,46h12v12h-12z"/>
+ <path
+ android:pathData="M238.77,52.74H233.56V51.26H238.77L236.54,49.03L237.59,47.97L241.61,52L237.59,56.03L236.54,54.97L238.77,52.74Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M187.67,74h12v12h-12z"/>
+ <path
+ android:pathData="M190.09,83.59V78.51H191.56V81.07L196.64,76L197.67,77.04L192.6,82.11H195.16V83.59H190.09Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.44C229.55,70 230.44,70.9 230.44,72V88C230.44,89.1 229.55,90 228.44,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M213.45,74h12v12h-12z"/>
+ <path
+ android:pathData="M218.71,75.97H220.19V81.19L222.43,78.95L223.48,80L219.45,84.03L215.43,80L216.48,78.95L218.71,81.19V75.97Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#804D7A"/>
+ <group>
+ <clip-path
+ android:pathData="M239.23,74h12v12h-12z"/>
+ <path
+ android:pathData="M243.84,83.69V82.21H246.4L241.21,77.01L242.24,75.97L247.44,81.18V78.61H248.92V83.69H243.84Z"
+ android:fillColor="#ffffff"/>
+ </group>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.44C243.55,98 244.44,98.9 244.44,100V116C244.44,117.11 243.55,118 242.44,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#F2E5EB"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_press_hold.xml b/res/drawable/mouse_keys_press_hold.xml
new file mode 100644
index 0000000..af20290
--- /dev/null
+++ b/res/drawable/mouse_keys_press_hold.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#FFF7F9"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#804D7A"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_release.xml b/res/drawable/mouse_keys_release.xml
new file mode 100644
index 0000000..232d5e7
--- /dev/null
+++ b/res/drawable/mouse_keys_release.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#FFF7F9"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#804D7A"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_release2.xml b/res/drawable/mouse_keys_release2.xml
new file mode 100644
index 0000000..88422cb
--- /dev/null
+++ b/res/drawable/mouse_keys_release2.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#FFF7F9"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#804D7A"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_toggle_scroll.xml b/res/drawable/mouse_keys_toggle_scroll.xml
new file mode 100644
index 0000000..1a1a550
--- /dev/null
+++ b/res/drawable/mouse_keys_toggle_scroll.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="348dp"
+ android:height="160dp"
+ android:viewportWidth="348"
+ android:viewportHeight="160">
+ <path
+ android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+ android:fillColor="#FFF7F9"/>
+ <path
+ android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+ android:fillColor="#804D7A"/>
+ <path
+ android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+ android:fillColor="#F8DAEE"/>
+ <path
+ android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+ android:fillColor="#D1C2CB"/>
+ <path
+ android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+ android:fillColor="#ECDFE5"/>
+ <path
+ android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+ android:strokeWidth="6"
+ android:fillColor="#00000000"
+ android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/preference_background_highlighted.xml b/res/drawable/preference_background_highlighted.xml
new file mode 100644
index 0000000..1d98ced
--- /dev/null
+++ b/res/drawable/preference_background_highlighted.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2014 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:colorControlHighlight">
+ <item>
+ <shape
+ android:shape="rectangle"
+ android:tint="@color/preference_highlight_color">
+ </shape>
+ </item>
+</ripple>
\ No newline at end of file
diff --git a/res/layout/advanced_bt_entity_sub.xml b/res/layout/advanced_bt_entity_sub.xml
index dd8e43a..252ab47 100644
--- a/res/layout/advanced_bt_entity_sub.xml
+++ b/res/layout/advanced_bt_entity_sub.xml
@@ -34,7 +34,7 @@
android:layout_height="72dp"
android:layout_gravity="center"
android:antialias="true"
- android:background="@drawable/circle_outline"
+ android:background="@drawable/bt_header_circle_outline"
android:padding="8dp"
android:scaleType="fitCenter" />
diff --git a/res/layout/audio_sharing_password_dialog.xml b/res/layout/audio_sharing_password_dialog.xml
index 2bdf505..a862f3b 100644
--- a/res/layout/audio_sharing_password_dialog.xml
+++ b/res/layout/audio_sharing_password_dialog.xml
@@ -35,6 +35,17 @@
android:layout_marginEnd="20dp"
android:minHeight="48dp" />
+ <TextView
+ android:id="@+id/edit_alert_message"
+ style="?android:attr/textAppearanceSmall"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="24dp"
+ android:layout_marginEnd="24dp"
+ android:visibility="gone"
+ android:text="@string/audio_streams_main_page_password_dialog_format_alert"
+ android:textColor="?android:attr/colorError" />
+
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout/biometrics_glif_compact.xml b/res/layout/biometrics_glif_compact.xml
new file mode 100644
index 0000000..5de78da
--- /dev/null
+++ b/res/layout/biometrics_glif_compact.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2024 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.
+-->
+
+<com.google.android.setupcompat.view.StatusBarBackgroundLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/suc_layout_status"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <include layout="@layout/biometrics_glif_content" />
+
+</com.google.android.setupcompat.view.StatusBarBackgroundLayout>
diff --git a/res/layout/biometrics_glif_content.xml b/res/layout/biometrics_glif_content.xml
new file mode 100644
index 0000000..6cddccb
--- /dev/null
+++ b/res/layout/biometrics_glif_content.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2024 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"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/sud_layout_template_content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:clipChildren="true"
+ android:clipToPadding="true"
+ android:orientation="vertical">
+
+ <ViewStub
+ android:id="@+id/sud_layout_sticky_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ <com.google.android.setupdesign.view.BottomScrollView
+ android:id="@+id/sud_header_scroll_view"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/biometrics_glif_header_height"
+ android:fillViewport="true"
+ android:orientation="vertical"
+ tools:ignore="UnusedAttribute">
+
+ <include layout="@layout/sud_glif_header" />
+
+ </com.google.android.setupdesign.view.BottomScrollView>
+
+
+ <com.google.android.setupdesign.view.BottomScrollView
+ android:id="@+id/sud_scroll_view"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:fillViewport="true"
+ android:scrollIndicators="?attr/sudScrollIndicators"
+ tools:ignore="UnusedAttribute">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <ViewStub
+ android:id="@+id/sud_layout_illustration_progress_stub"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inflatedId="@+id/sud_layout_progress_illustration"
+ android:layout="@layout/sud_progress_illustration_layout" />
+
+ <FrameLayout
+ android:id="@+id/sud_layout_content"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+
+ </LinearLayout>
+
+ </com.google.android.setupdesign.view.BottomScrollView>
+
+ <ViewStub
+ android:id="@+id/suc_layout_footer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/res/layout/dialog_custom_body_audio_sharing.xml b/res/layout/dialog_custom_body_audio_sharing.xml
index ba7f643..5e9f239 100644
--- a/res/layout/dialog_custom_body_audio_sharing.xml
+++ b/res/layout/dialog_custom_body_audio_sharing.xml
@@ -64,7 +64,7 @@
android:layout_gravity="center"
android:layout_marginTop="4dp"
android:textColor="?androidprv:attr/textColorOnAccent"
- android:background="@drawable/audio_sharing_rounded_bg_ripple"
+ android:background="@drawable/audio_sharing_rounded_bg_ripple_top"
android:visibility="gone" />
<Button
@@ -75,7 +75,7 @@
android:layout_gravity="center"
android:layout_marginTop="4dp"
android:textColor="?androidprv:attr/textColorOnAccent"
- android:background="@drawable/audio_sharing_rounded_bg_ripple"
+ android:background="@drawable/audio_sharing_rounded_bg_ripple_bottom"
android:visibility="gone" />
</LinearLayout>
</ScrollView>
\ No newline at end of file
diff --git a/res/layout/mouse_keys_image_item.xml b/res/layout/mouse_keys_image_item.xml
new file mode 100644
index 0000000..36b9992
--- /dev/null
+++ b/res/layout/mouse_keys_image_item.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2024 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.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/layout_description"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="20dp"
+ android:layout_marginBottom="20dp"
+ android:textAppearance="?android:attr/textAppearanceListItemSmall"
+ android:drawablePadding="8dp"/>
diff --git a/res/layout/mouse_keys_image_list.xml b/res/layout/mouse_keys_image_list.xml
new file mode 100644
index 0000000..f111736
--- /dev/null
+++ b/res/layout/mouse_keys_image_list.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2024 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.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/mouse_keys_image_recycler_list"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:clipToPadding="true"
+ android:nestedScrollingEnabled="false"
+ android:padding="12dp"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/res/layout/preference_category_bluetooth_no_padding.xml b/res/layout/preference_category_bluetooth_no_padding.xml
new file mode 100644
index 0000000..9868eb4
--- /dev/null
+++ b/res/layout/preference_category_bluetooth_no_padding.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 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:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingTop="0dp"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+</LinearLayout>
diff --git a/res/layout/udfps_enroll_enrolling.xml b/res/layout/udfps_enroll_enrolling.xml
index 366a87c..ef8cb71 100644
--- a/res/layout/udfps_enroll_enrolling.xml
+++ b/res/layout/udfps_enroll_enrolling.xml
@@ -24,58 +24,66 @@
android:layout_height="match_parent"
style="?attr/fingerprint_layout_theme">
- <LinearLayout
+ <androidx.constraintlayout.widget.ConstraintLayout
style="@style/SudContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
- android:clipChildren="false"
- android:orientation="vertical">
+ android:clipChildren="false">
+
+ <com.airbnb.lottie.LottieAnimationView
+ android:id="@+id/illustration_lottie"
+ android:layout_width="match_parent"
+ android:layout_height="200dp"
+ app:layout_constraintTop_toTopOf="@id/udfps_view"
+ android:scaleType="centerInside"
+ android:visibility="gone"
+ app:lottie_autoPlay="true"
+ app:lottie_loop="true"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ app:lottie_speed=".85" />
<LinearLayout
+ style="@style/SudContentFrame"
+ android:id="@+id/udfps_view"
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:gravity="center|bottom"
+ android:layout_height="match_parent"
+ android:clipToPadding="false"
+ android:clipChildren="false"
android:orientation="vertical">
- <FrameLayout
- android:id="@+id/layout_container"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:layout_gravity="center_horizontal|bottom"
- tools:ignore="Suspicious0dp">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:gravity="center|bottom"
+ android:orientation="vertical">
- <!-- Animation res MUST be set in code -->
- <com.airbnb.lottie.LottieAnimationView
- android:id="@+id/illustration_lottie"
- android:layout_width="match_parent"
- android:layout_height="200dp"
- android:layout_marginTop="@dimen/udfps_lottie_translate_y"
- android:scaleType="centerInside"
- android:visibility="gone"
- app:lottie_autoPlay="true"
- app:lottie_loop="true"
- android:clipChildren="false"
- android:clipToPadding="false"
- app:lottie_speed=".85" />
+ <FrameLayout
+ android:id="@+id/layout_container"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:layout_gravity="center_horizontal|bottom"
+ tools:ignore="Suspicious0dp">
- <include layout="@layout/udfps_enroll_view" />
+ <include layout="@layout/udfps_enroll_view" />
- </FrameLayout>
+ </FrameLayout>
- <TextView
- android:id="@+id/error_text"
- style="@style/TextAppearance.ErrorText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|bottom"
- android:accessibilityLiveRegion="polite"
- android:gravity="center_horizontal"
- android:visibility="invisible" />
- </LinearLayout>
- </LinearLayout>
+ <TextView
+ android:id="@+id/error_text"
+ style="@style/TextAppearance.ErrorText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal|bottom"
+ android:accessibilityLiveRegion="polite"
+ android:gravity="center_horizontal"
+ android:visibility="invisible" />
+ </LinearLayout>
+ </LinearLayout>
+ </androidx.constraintlayout.widget.ConstraintLayout>
</com.android.settings.biometrics.fingerprint.UdfpsEnrollEnrollingView>
diff --git a/res/layout/udfps_enroll_enrolling_non_scroll.xml b/res/layout/udfps_enroll_enrolling_non_scroll.xml
new file mode 100644
index 0000000..deb9091
--- /dev/null
+++ b/res/layout/udfps_enroll_enrolling_non_scroll.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2024 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.
+ -->
+
+<com.android.settings.biometrics.fingerprint.UdfpsEnrollEnrollingView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/setup_wizard_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="?attr/fingerprint_layout_theme">
+
+ <LinearLayout
+ style="@style/SudContentFrame"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:clipToPadding="false"
+ android:clipChildren="false"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:gravity="center|bottom"
+ android:orientation="vertical">
+
+ <FrameLayout
+ android:id="@+id/layout_container"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:layout_gravity="center_horizontal|bottom"
+ tools:ignore="Suspicious0dp">
+
+ <!-- Animation res MUST be set in code -->
+ <com.airbnb.lottie.LottieAnimationView
+ android:id="@+id/illustration_lottie"
+ android:layout_width="match_parent"
+ android:layout_height="200dp"
+ android:layout_marginTop="@dimen/udfps_lottie_translate_y"
+ android:scaleType="centerInside"
+ android:visibility="gone"
+ app:lottie_autoPlay="true"
+ app:lottie_loop="true"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ app:lottie_speed=".85" />
+
+ <include layout="@layout/udfps_enroll_view" />
+
+ </FrameLayout>
+
+ <TextView
+ android:id="@+id/error_text"
+ style="@style/TextAppearance.ErrorText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal|bottom"
+ android:accessibilityLiveRegion="polite"
+ android:gravity="center_horizontal"
+ android:visibility="invisible" />
+ </LinearLayout>
+ </LinearLayout>
+
+</com.android.settings.biometrics.fingerprint.UdfpsEnrollEnrollingView>
diff --git a/res/menu/language_selection_list.xml b/res/menu/language_selection_list.xml
new file mode 100644
index 0000000..799d3c9
--- /dev/null
+++ b/res/menu/language_selection_list.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2024 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.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/locale_search_menu"
+ android:title="@string/locale_search_menu"
+ android:icon="@drawable/ic_search_24dp"
+ android:showAsAction="always|collapseActionView"
+ android:actionViewClass="android.widget.SearchView" />
+
+</menu>
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
index 8d5d24e..01f6f3a 100644
--- a/res/values-af/arrays.xml
+++ b/res/values-af/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktetas"</item>
+ <item msgid="184985872234062767">"Klassieke gebou"</item>
+ <item msgid="9189550412466785530">"Woonstelblok"</item>
+ <item msgid="2142527562511049422">"Spraakborrel"</item>
+ <item msgid="2548100558260478605">"Groep mense"</item>
+ <item msgid="2270003903304578284">"Gloeilamp"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Moenie Steur Nie"</item>
+ <item msgid="1423820834865831361">"Mens wat hardloop"</item>
+ <item msgid="2037298830718732608">"Gholf"</item>
+ <item msgid="2197835014443491074">"Gimnasiumhandgewig"</item>
+ <item msgid="2730180105015616518">"Swem"</item>
+ <item msgid="2666922823253345958">"Mens wat voetslaan"</item>
+ <item msgid="8234880356472211396">"Mens wat ’n bal gooi"</item>
+ <item msgid="4642980625253001443">"Mens wat skop"</item>
+ <item msgid="4324795269518833500">"Speletjiebeheerder"</item>
+ <item msgid="7789966425125441125">"Kunstenaar se kleurpalet"</item>
+ <item msgid="663512680597461570">"Sneeuvlokkie"</item>
+ <item msgid="7952183800501346803">"Strandsambreel"</item>
+ <item msgid="799139025758265891">"Werkswinkelgereedskap"</item>
+ <item msgid="8112685757657659269">"Klavier"</item>
+ <item msgid="3861584909935022342">"Filmspoel"</item>
+ <item msgid="5827426100157335512">"Boek"</item>
+ <item msgid="8585828346253128384">"Egiptiese waterlelie"</item>
+ <item msgid="8788370542815300188">"Mens se gedagtes"</item>
+ <item msgid="7287354964767553293">"Oorfone"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Trein"</item>
+ <item msgid="4903790544026923026">"Motor"</item>
+ <item msgid="5010405583912314582">"Mes en vurk"</item>
+ <item msgid="8939998598599064900">"Inkopiemandjie"</item>
+ <item msgid="3379605903308731893">"Kind"</item>
+ <item msgid="7808668968550293112">"Dier se poot"</item>
+ <item msgid="1000692647524056504">"Sterkenteken"</item>
+ <item msgid="8270261073421676502">"Twee mense"</item>
+ <item msgid="5767782819651505460">"Ster"</item>
+ <item msgid="4368451291862729334">"Hartjie"</item>
+ <item msgid="2613199102208419986">"Huis"</item>
+ <item msgid="3022279986430275040">"Halfmaan"</item>
+ <item msgid="5421089790869483206">"Horlosie"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index c79bfef..a6bd1c0 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Bind nuwe toestel saam"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Skakel dit môre outomaties aan"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Bind regteroor saam"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Bind linkeroor saam"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Bind jou ander oor saam"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Deaktiveer Bluetooth LE-oudio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Deaktiveer Bluetooth LE-oudio-kenmerk as die toestel LE oudiohardewarevermoëns ondersteun."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE-oudiomodus"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Aktiveer Bluetooth LE-oudio-uitsending se UI-voorskou"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Aktiveer die LE-oudiodeling se UI-voorskou, insluitend persoonlike oudiodeling en privaat uitsending"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Wys LE-oudiowisselaar in Toestelbesonderhede"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omseil Bluetooth LE-oudiotoelaatlys"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Gebruik LE-oudio by verstek, selfs as LE-oudio se randtoestel nie geverifieer is vir voldoening aan toelaatlyskriteria nie."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Stel outomaties deur jou netwerk- en draadloosinstellings"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Outomatiese tydsone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Stel outomaties op grond van mobiele netwerke naby jou"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Stel outomaties met jou toestelligging, indien beskikbaar"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Gebruik verstek vir locale"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Gebruik 24-uur-formaat"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Tyd"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lig vinger op en raak sensor dan weer"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Kan nie vingerafdruksensor gebruik nie"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Besoek ’n verskaffer wat herstelwerk doen."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Skerm-af-vingerafdrukslot"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Gebruik Vingerafdrukslot selfs wanneer die skerm af is"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Skerm-af, ontsluit"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Meer sekuriteitinstellings"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Werkprofielslot, enkripsie, en meer"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Enkripsie, eiebewyse, en meer"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Die sleutelbord ignoreer vinnig herhaalde drukke van dieselfde sleutel"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Bonssleuteldrempel"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Kies vir hoe lank jou sleutelbord herhaalde sleuteldrukke ignoreer"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2s."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4s."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6s."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2s."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4s."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6s."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Gepasmaak"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"gepasmaakte waarde"</string>
<string name="slow_keys" msgid="2891452895499690837">"Stadige sleutels"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Verstel die tyd wat dit neem vir ’n sleuteldruk om geaktiveer te word"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Taaisleutels"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Druk een sleutel op ’n slag vir kortpaaie pleks van om die sleutels saam in te hou"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Muissleutels"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Gebruik muissleutels"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Gebruik jou sleutelbord om die wyser te beheer"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Muis – omgekeerde rollees"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Rollees op om die bladsy af te beweeg"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Ruil linker- en regterknoppies om"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Gebruik die muis se linkerknoppie as jou regterknoppie"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Muissleutels vir <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Gebruik die <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>-sleutels om die muiswyser te beweeg"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Gebruik die <xliff:g id="CLICK_LABEL">%s</xliff:g>-sleutel om die primêre muisknoppie te klik"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Gebruik die <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>-sleutel om die primêre muisknoppie te druk en hou"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Gebruik die <xliff:g id="RELEASE_LABEL">%s</xliff:g>-sleutel om die primêre muisknoppie te laat gaan"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Gebruik die <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>-sleutel om rolleesmodus te wissel. Dit sal die <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>-sleutels die aansig na bo, onder links of regs laat rollees."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Gebruik die <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>-sleutel om die sekondêre muisknoppie te klik"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Kortpadsleutels"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Wys lys met kortpaaie"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Werkprofielsleutelborde en -nutsgoed"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Kies ’n nuwe sleutel vir <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Toeganklikheid vir fisieke sleutelbord"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Taaisleutels, hopsleutels, muissleutels"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Herhaalsleutels"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Vertraging voor herhaling"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Herhaalkoers"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hou ’n sleutel in om sy karakter te herhaal totdat die sleutel gelos word"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g>-uitleg"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Verstek"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Outomaties: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Verstel kraggebruik"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Ingeslote pakkette"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Programme werk normaal"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Batteryvervanging word aanbeveel"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Batterykapasiteit en -laaiprestasie is verminder en batteryvervanging word aanbeveel."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Batteryvlak is laag"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Skakel Batterybespaarder aan om batterylewe te verleng"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Verbeter batterylewe"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Ontkoppel hierdie VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Ontkoppel"</string>
<string name="vpn_version" msgid="6344167191984400976">"Weergawe"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Weergawe <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Vergeet VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Vervang bestaande VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Stel altyd-aan VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00-17:00 weeksdae\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalendergeleenthede"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} is aktief}=2{{mode_1} en {mode_2} is aktief}=3{{mode_1}, {mode_2} en {mode_3} is aktief}other{{mode_1}, {mode_2} en nog # is aktief}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modus kan outomaties aanskakel}other{# modusse kan outomaties aanskakel}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Moenie Steur Nie}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2} {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AAN"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nie gestel nie"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Gedeaktiveer"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Wanneer jy binne ’n kort tydperk baie kennisgewings kry, sal jou toestel vir tot 2 minute die volume sagter stel en waarskuwings minimeer. Oproepe, wekkers en prioriteitgesprekke word nie geraak nie. \n\nKennisgewings wat jy tydens demping kry, kan gekry word deur van die bokant van die skerm af te trek."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Pas toe op werkprofiele"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Pas toe op werkprofielapps"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR-helperdienste"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Geen geïnstalleerde apps het versoek om as VR-helperdienste te werk nie."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Gee <xliff:g id="SERVICE">%1$s</xliff:g> toegang tot VR-diens?"</string>
@@ -3881,7 +3904,7 @@
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"Appsinstellings"</string>
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Laat programme toe om te ignoreer"</string>
- <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Programme wat kan onderbreek"</string>
+ <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps wat kan onderbreek"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Kies meer apps"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"Geen apps gekies nie"</string>
<string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"Geen apps kan onderbreek nie"</string>
@@ -5270,8 +5293,8 @@
<string name="aspect_ratio_title" msgid="2451826875939676101">"Aspekverhouding"</string>
<string name="aspect_ratio_summary" msgid="4056406351663726494">"Probeer ’n nuwe aspekverhouding om hierdie app in te bekyk as dit nie ontwerp is om op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te pas nie"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Probeer ’n nuwe aspekverhouding om hierdie app in te bekyk as dit nie ontwerp is om op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te pas nie. Sommige apps sal dalk nie vir sekere aspekverhoudings geoptimeer wees nie."</string>
- <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Probeer ’n nuwe aspekverhouding om ’n app in te bekyk as dit nie ontwerp is om op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te pas nie"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Probeer ’n nuwe aspekverhouding om ’n app in te bekyk as dit nie ontwerp is om op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te pas nie. Sommige apps sal dalk nie vir sekere aspekverhoudings geoptimeer wees nie."</string>
+ <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Probeer ’n nuwe aspekverhouding waarin jy ’n app kan bekyk as dit nie ontwerp is om op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te pas nie"</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Probeer ’n nuwe aspekverhouding waarin jy ’n app kan bekyk as dit nie ontwerp is om op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te pas nie. Sommige apps sal dalk nie vir sekere aspekverhoudings geoptimeer wees nie."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"Voorgestelde apps"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"Veranderde apps"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Appverstek"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Luister na stroom"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skandeer ’n oudiostroom-QR-kode om op <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te luister"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Kan nie wagwoord wysig terwyl daar gedeel word nie. Skakel eers oudiodeling af om die wagwoord te verander."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Jou wagwoord moet 4-16 karakters bevat en net letters, syfers en simbole gebruik"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-kodeskandeerder"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Het jy hulp nodig?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Soekinstellings"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Net toestel"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nuwe kontakte sal nie met ’n rekening gesinkroniseer word nie"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakte sal by verstek op jou toestel gestoor en met jou rekening gesinkroniseer word"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Geen verstek gestel nie"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Daar was ’n fout met die stel van die verstekrekening"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Geen verstek gestel nie"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Net toestel"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Voeg ’n rekening by om te begin"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Omkring en Soek"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Raak en hou die Tuisknoppie of die navigasiehandvatsel om met gebruik van die inhoud op jou skerm te soek."</string>
</resources>
diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml
index c088b47..d0a748b 100644
--- a/res/values-am/arrays.xml
+++ b/res/values-am/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"የሥራ ቦርሳ"</item>
+ <item msgid="184985872234062767">"የታወቀ ህንፃ"</item>
+ <item msgid="9189550412466785530">"የአፓርታማ ህንፃ"</item>
+ <item msgid="2142527562511049422">"የንግግር ምልክት"</item>
+ <item msgid="2548100558260478605">"የሰዎች ቡድን"</item>
+ <item msgid="2270003903304578284">"አምፖል"</item>
+ <item msgid="4793496619091161864">"ቀን መቁጠሪያ"</item>
+ <item msgid="5673625795644364100">"አትረብሽ"</item>
+ <item msgid="1423820834865831361">"እየሮጠ ያለ ሰው"</item>
+ <item msgid="2037298830718732608">"ጎልፍ"</item>
+ <item msgid="2197835014443491074">"የጂም ዳምቤል"</item>
+ <item msgid="2730180105015616518">"ዋና"</item>
+ <item msgid="2666922823253345958">"ተራራ የሚወጣ ሰው"</item>
+ <item msgid="8234880356472211396">"ኳስ የሚወረውር ሰው"</item>
+ <item msgid="4642980625253001443">"እየመታ ያለ ሰው"</item>
+ <item msgid="4324795269518833500">"የጨዋታ መቆጣጠሪያ"</item>
+ <item msgid="7789966425125441125">"የአርቲስት የቀለም ቤተ ስዕል"</item>
+ <item msgid="663512680597461570">"የበረዶ ቅንጣት"</item>
+ <item msgid="7952183800501346803">"የባህር ዳርቻ ዣንጥላ"</item>
+ <item msgid="799139025758265891">"የሥራ ቦታ መሣሪያዎች"</item>
+ <item msgid="8112685757657659269">"ፒያኖ"</item>
+ <item msgid="3861584909935022342">"የፊልም ሪል"</item>
+ <item msgid="5827426100157335512">"መጽሐፍ"</item>
+ <item msgid="8585828346253128384">"የሎተስ አበባ"</item>
+ <item msgid="8788370542815300188">"የሰው አዕምሮ"</item>
+ <item msgid="7287354964767553293">"የራስ ላይ ማዳመጫዎች"</item>
+ <item msgid="2530059623783800987">"ቲቪ"</item>
+ <item msgid="5307182323469376758">"ባቡር"</item>
+ <item msgid="4903790544026923026">"መኪና"</item>
+ <item msgid="5010405583912314582">"ሹካ እና ማንኪያ"</item>
+ <item msgid="8939998598599064900">"የሸመታ ተሳቢ"</item>
+ <item msgid="3379605903308731893">"ልጅ"</item>
+ <item msgid="7808668968550293112">"የእንስሳት መዳፍ"</item>
+ <item msgid="1000692647524056504">"የኮከብ ባጅ"</item>
+ <item msgid="8270261073421676502">"ሁለት ሰዎች"</item>
+ <item msgid="5767782819651505460">"ኮከብ"</item>
+ <item msgid="4368451291862729334">"ልብ"</item>
+ <item msgid="2613199102208419986">"ቤት"</item>
+ <item msgid="3022279986430275040">"ግማሽ ጨረቃ"</item>
+ <item msgid="5421089790869483206">"ሰዓት"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 36ea8b6..59e9851 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"አዲስ መሣሪያ ያጣምሩ"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ብሉቱዝ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ነገ በራስ-ሰር ያብሩ"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"የቀኝ ጆሮን ያጣምሩ"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"የግራ ጆሮን ያጣምሩ"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ሌላውን ጆሮዎን ያጣምሩ"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"የብሉቱዝ LE ኦዲዮን ያሰናክሉ"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"መሣሪያው የLE ኦዲዮ ሃርድዌር ችሎታዎችን የሚደግፍ ከሆነ የብሉቱዝ ኦዲዮ ባህሪን ያሰናክላል።"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"የብሉቱዝ LE ኦዲዮ ሁነታ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ብሉቱዝ LE ኦዲዮ ሥርጭት ዩአይ ቅድመ ዕይታን ያንቁ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"የግል የድምፅ ማጋራትን እና የግል ሥርጭትን ጨምሮ የLE ኦዲዮ ማጋራት ዩአይ ቅድመ ዕይታን ያነቃል"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"በመሣሪያ ዝርዝሮች ውስጥ LE ኦዲዮ መቀያየሪያን አሳይ"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"የብሉቱዝ LE ኦዲዮ የተፈቀዱ ዝርዝርን እለፍ"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE ኦዲዮ ተቀጥላ የተፈቀዱ ዝርዝር መስፈርቶችን እንደሚያሟላ ባይረጋገጥም እንኳን LE ኦዲዮን በነባሪ መጠቀም።"</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"አውታረ መረቡን እና ገመድ አልባ ምልክቶችን በመጠቀም በራስ-ሰር ያቀናብሩ"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ራስ-ሰር የሰዓት ሰቅ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"በአቅራቢያዎ ባሉ የተንቀሳቃሽ ስልክ አውታረ መረቦች መሰረት በራስ-ሰር ያቀናብሩ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"የሚገኝ ከሆነ የመሣሪያዎን አካባቢ በመጠቀም በራስ-ሰር ያቀናብሩ"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"የቋንቋ ነባሪ ይጠቀሙ"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 ሰዓት ቅርፀት ተጠቀም"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"ሰዓት"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ጣትዎን ያንሱ፣ ከዚያ በድጋሚ ዳሳሽ ይንኩ"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"የጣት አሻራ ዳሳሽን መጠቀም አይቻልም"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"የጥገና አገልግሎት ሰጪን ይጎብኙ።"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"ማያ ገፅ ጠፍቶ በጣት አሻራ መክፈቻ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ማያ ገፁ በሚጠፋበት ጊዜ እንኳን በጣት አሻራ መክፈቻ ይጠቀሙ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"ማያ ገፅ ጠፍቷል፣ ክፈት"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"ተጨማሪ የደህንነት ቅንብሮች"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"የስራ መገለጫ መቆለፊያ፣ ምስጠራ እና ሌሎችም"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ምስጠራ፣ የመግቢያ ማስረጃዎች እና ሌሎችም"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ቁልፍ ሰሌዳው ተመሳሳዩ ቁልፍ በፍጥነት መጫኖችን ችላ ይላል"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"የወጡ ቁልፎች መባቻ"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"የቁልፍ ሰሌዳዎ ተደጋጋሚ የቁልፍ መጫኖችን ችላ የሚልበትን የቆይታ ጊዜ ይምረጡ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2ሰ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4ሰ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6ሰ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2ሰ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4ሰ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6ሰ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"ብጁ"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ብጁ እሴት"</string>
<string name="slow_keys" msgid="2891452895499690837">"ቀርፋፋ ቁልፎች"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"የቁልፍ መጫኖችን ለማግበር የሚወስደውን ጊዜ ያስተካክላል"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ተጣባቂ ቁልፎች"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"አቋራጮችን ለማግኘት ቁልፎችን በአንድ ላይ ከመያዝ ይልቅ ቁልፎችን አንድ በአንድ ይጫኑ"</string>
<string name="mouse_keys" msgid="6237254627808525540">"የመዳፊት ቁልፎች"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"የመዳፊት ቁልፎችን ይጠቀሙ"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ነጥቦቹን ለመቆጣጠር የቁልፍ ሰሌዳዎን ይጠቀሙ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"የመዳፊት ወደኋላ መሸብለል"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"ገፁን ወደ ታች ለማንቀሳቀስ ወደ ላይ ይሸብልሉ"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"የግራ እና የቀኝ አዝራሮችን ያለዋውጡ"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"የግራ የመዳፊት አዝራሩን እንደ የእርስዎ ቀኝ ይጠቀሙ"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"የ<xliff:g id="KEYBOARD_NAME">%s</xliff:g> መዳፊት ቁልፎች"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"የመዳፊት ጠቋሚን ለማንቀሳቀስ የ<xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ቁልፎችን ይጠቀሙ"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ዋናውን የመዳፊት አዝራር ጠቅ ለማድረግ የ<xliff:g id="CLICK_LABEL">%s</xliff:g> ቁልፍን ይጠቀሙ"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ዋናውን የመዳፊት አዝራር ተጭነው ለመያዝ የ<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ቁልፍን ይጠቀሙ"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ዋናውን የመዳፊት አዝራር ለመልቀቅ የ<xliff:g id="RELEASE_LABEL">%s</xliff:g> ቁልፍን ይጠቀሙ"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"የሸብልል ሁነታን ለመቀያየር <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>ን ይጠቀሙ። ይህ የ<xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ቁልፎች ዕይታውን ወደላይ፣ ወደታች፣ ወደግራ ወይም ወደቀኝ ይሸብልሉታል"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ሁለተኛውን የመዳፊት አዝራር ጠቅ ለማድረግ የ<xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ቁልፍን ይጠቀሙ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"የቁልፍ ሰሌዳ አቋራጮች"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"የአቋራጭ ዝርዝርን አሳይ"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"የሥራ መገለጫ የቁልፍ ሰሌዳዎች እና መሣሪያዎች"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"ለ<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> አዲስ ቁልፍ ይምረጡ፦"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"የአካላዊ ቁልፍ ሰሌዳ ተደራሽነት"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ተለጣፊ ቁልፎች፣ አንጥር ቁልፎች፣ የመዳፊት ቁልፎች"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"የሚደጋገሙ አዝራሮች"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ከመድገም በፊት አዘግይ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"የድግግሞሽ ፍጥነት"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"አንድ አዝራር እስከሚለቀቅ ድረስ ቁምፊውን ለመደጋገም አዝራሩን ተጭነው ይያዙ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"የ<xliff:g id="IME_LABEL">%s</xliff:g> አቀማመጥ"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ነባሪ"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ራስ-ሰር፦ <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"የኃይል አጠቃቀም አስተካክል"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"የታከሉ አካታቾች"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"መተግበሪያዎች በመደበኝነት እያሄዱ ናቸው"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ባትሪውን መተካት ይመከራል"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"የባትሪ አቅም እና የኃይል መሙላት አፈጻጸም ተቀንሰዋል እና ባትሪን መተካት ይመከራል።"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"የባትሪ ደረጃ ዝቅተኛ ነው"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"የባትሪ ዕድሜን ለማራዘም የባትሪ ቆጣቢን ያብሩ"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"የባትሪ ዕድሜን ያሻሽሉ"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"የዚህ ቪፒኤን ግንኙነት ይቋረጥ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ግንኙነት አቋርጥ"</string>
<string name="vpn_version" msgid="6344167191984400976">"ስሪት"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ሥሪት <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPNን እርሳ"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"አሁን ያለው VPN ይተካ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ሁልጊዜ-የበራ VPN ይቀናበር?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"«9 ጠዋት - 5 ከሰዓት የሥራ ቀናት»"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"የቀን መቁጠሪያ ክስተቶች"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ገቢር ነው}=2{{mode_1} እና {mode_2} ገቢር ናቸው}=3{{mode_1}፣ {mode_2} እና {mode_3} ገቢር ናቸው}one{{mode_1}፣ {mode_2} እና # ተጨማሪ ገቢር ናቸው}other{{mode_1}፣ {mode_2} እና # ተጨማሪ ገቢር ናቸው}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ሁነታ በራስ ሰር መብራት ይችላል}one{# ሁነታ በራስ ሰር መብራት ይችላል}other{# ሁነታዎች በራስ ሰር መብራት ይችላሉ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{አትረብሽ}=1{{mode_1}}=2{{mode_1}፣ {mode_2}}one{{mode_1}፣ {mode_2}፣ {mode_3}}other{{mode_1}፣ {mode_2}፣ {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"በርቷል"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"አልተቀናበረም"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ተሰናክሏል"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"በአጭር ጊዜ ውስጥ ብዙ ማሳወቂያዎች ሲያገኙ መሣሪያዎ ለ2 ደቂቃዎች ያህል የድምፅ መጠኑን ይቀንሳል እና ማንቂያዎችን ያሳንሳል። ጥሪዎች፣ ማንቂያዎች እና የቅድሚያ ውይይቶች ተጽዕኖ አያድርባቸውም። \n\nበረጋ ማለቱ ወቅት የደረሱ ማሳወቂያዎች ከማያ ገፁ አናት ላይ ወደታች በመጎተት ሊገኙ ይችላሉ።"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"የሥራ መገለጫዎች ላይ ይተግብሩ"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ለሥራ መገለጫ መተግበሪያዎች ያመልክቱ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"የምናባዊ ዕውነታ አጋዥ አገልግሎቶች"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ምንም የተጫኑ መተግበሪያዎች እንደ የምናባዊ ዕውነታ አጋዥ አገልግሎቶች ሆነው እንዲሄዱ አልጠየቁም።"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"ለ<xliff:g id="SERVICE">%1$s</xliff:g> የምናባዊ ዕውነታ መዳረሻ ይፈቀድለት?"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ዥረት ያዳምጡ"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"በ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ለማዳመጥ የኦዲዮ ዥረት QR ኮድ ይቃኙ"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"እያጋሩ እያለ የይለፍ ቃልን ማርተዕ አልተቻለም። የይለፍ ቃሉን ለመቀየር በቅድሚያ የድምፅ ማጋራትን ያጥፉ።"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"የይለፍ ቃልዎ 4-16 ቁምፊዎችን መያዝ እና ፊደላት፣ ቁጥሮች እና ምልክቶችን ብቻ መጠቀም አለበት"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"የQR ኮድ መቃኛ"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"እገዛ ይፈልጋሉ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ቅንብሮች ውስጥ ይፈልጉ"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"መሣሪያ ብቻ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"አዳዲስ ዕውቂያዎች በመለያ አይሰምሩም"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ዕውቂያዎች ወደ መሣሪያዎ ይቀመጣሉ እና በነባሪ ከመለያዎ ጋር ይሰምራሉ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ምንም ነባሪ አልተቀናበረም"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ነባሪ መለያውን በማቀናበር ላይ ስህተት"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ምንም ነባሪ አልተቀናበረም"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"መሣሪያ ብቻ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ለመጀመር መለያ ያክሉ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ለመፈለግ ክበብ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"በማያ ገፅዎ ላይ ያለውን ይዘት በመጠቀም ለመፈለግ የመነሻ አዝራሩን ወይም የአሰሳ መያዣውን ይንኩ እና ይያዙ።"</string>
</resources>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
index 9ed661b..11636c3 100644
--- a/res/values-ar/arrays.xml
+++ b/res/values-ar/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"حقيبة يد"</item>
+ <item msgid="184985872234062767">"مبنى كلاسيكي"</item>
+ <item msgid="9189550412466785530">"مبنى سكني"</item>
+ <item msgid="2142527562511049422">"فقاعة تفسيرية كلامية"</item>
+ <item msgid="2548100558260478605">"مجموعة من الأشخاص"</item>
+ <item msgid="2270003903304578284">"مصباح كهربائي"</item>
+ <item msgid="4793496619091161864">"تقويم"</item>
+ <item msgid="5673625795644364100">"عدم الإزعاج"</item>
+ <item msgid="1423820834865831361">"شخص يجري"</item>
+ <item msgid="2037298830718732608">"غولف"</item>
+ <item msgid="2197835014443491074">"دمبل في صالة رياضية"</item>
+ <item msgid="2730180105015616518">"سباحة"</item>
+ <item msgid="2666922823253345958">"شخص يتنزه في الطبيعة"</item>
+ <item msgid="8234880356472211396">"شخص يرمي كرة"</item>
+ <item msgid="4642980625253001443">"شخص يركل"</item>
+ <item msgid="4324795269518833500">"ذراع التحكّم في الألعاب"</item>
+ <item msgid="7789966425125441125">"لوحة ألوان الرسام"</item>
+ <item msgid="663512680597461570">"ندفة ثلج"</item>
+ <item msgid="7952183800501346803">"مظلة شاطئ"</item>
+ <item msgid="799139025758265891">"أدوات ورشة عمل"</item>
+ <item msgid="8112685757657659269">"بيانو"</item>
+ <item msgid="3861584909935022342">"بكرة فيلم"</item>
+ <item msgid="5827426100157335512">"كتاب"</item>
+ <item msgid="8585828346253128384">"زهرة لوتس"</item>
+ <item msgid="8788370542815300188">"Person\'s mind"</item>
+ <item msgid="7287354964767553293">"سمّاعات رأس"</item>
+ <item msgid="2530059623783800987">"تلفزيون"</item>
+ <item msgid="5307182323469376758">"قطار"</item>
+ <item msgid="4903790544026923026">"سيارة"</item>
+ <item msgid="5010405583912314582">"شوكة وسكينة"</item>
+ <item msgid="8939998598599064900">"سلة تسوّق"</item>
+ <item msgid="3379605903308731893">"طفل"</item>
+ <item msgid="7808668968550293112">"مخلب حيوان"</item>
+ <item msgid="1000692647524056504">"شارة النجمة"</item>
+ <item msgid="8270261073421676502">"شخصان"</item>
+ <item msgid="5767782819651505460">"نجمة"</item>
+ <item msgid="4368451291862729334">"قلب"</item>
+ <item msgid="2613199102208419986">"منزل"</item>
+ <item msgid="3022279986430275040">"نصف قمر"</item>
+ <item msgid="5421089790869483206">"ساعة"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index c185743..898efb2 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"إقران جهاز جديد"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"بلوتوث"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"التفعيل تلقائيًا غدًا"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"عند إيقاف البلوتوث، يتم تفعيله مرة أخرى في اليوم التالي"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"إقران السماعة اليمنى"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"إقران السماعة اليسرى"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"إقران السماعة الأخرى"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"إيقاف ميزة Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"يؤدي هذا الخيار إلى إيقاف ميزة Bluetooth LE audio إذا كان الجهاز متوافقًا مع إمكانيات جهاز الصوت المنخفض الطاقة."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"وضع Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"تفعيل الخيار \"معاينة واجهة المستخدم لميزة Bluetooth LE Audio Broadcast\""</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"يتيح هذا الخيار معاينة واجهة المستخدِم لميزة LE Audio Sharing، بما في ذلك ميزة \"مشاركة الصوت\" الشخصية والبث الخاص"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"إظهار خيار تفعيل LE Audio أو إيقافه في تفاصيل الجهاز"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"استبعاد القائمة المسموح بها لتطبيق Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"استخدِم تطبيق LE Audio تلقائيًا حتى إذا لم يتم التأكّد من توافق الجهاز الملحق مع معايير القائمة المسموح بها."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ضبط التاريخ والوقت تلقائيًا باستخدام إشارة الشبكة والإشارة اللاسلكية"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"المنطقة الزمنية التلقائية"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ضبط التاريخ والوقت تلقائيًا استنادًا إلى شبكات الجوّال القريبة منك"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"يمكن ضبط التاريخ والوقت تلقائيًا باستخدام الموقع الجغرافي لجهازك، إذا كان متاحًا"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"استخدام التنسيق التلقائي المحلي"</string>
<string name="date_time_24hour" msgid="286679379105653406">"استخدام تنسيق ٢٤ ساعة"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"الوقت"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ارفع إصبعك ثم المس زر الاستشعار مرة أخرى."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"يتعذّر استخدام أداة استشعار بصمة الإصبع"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"يُرجى التواصل مع مقدِّم خدمات إصلاح."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"فتح الجهاز ببصمة الإصبع حتى عندما تكون الشاشة مطفأة"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"يمكنك استخدام ميزة \"فتح الجهاز ببصمة الإصبع\" حتى عندما تكون الشاشة مطفأة"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"الشاشة مطفأة، فتح الجهاز"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"المزيد من إعدادات الأمان"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"قفل ملف العمل، والتشفير، وغير ذلك"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"التشفير، وبيانات الاعتماد، وغير ذلك"</string>
@@ -925,7 +930,7 @@
<string name="show_hdr_sdr_ratio" msgid="4188007289024955585">"عرض نسبة نطاق HDR أو نطاق SDR"</string>
<string name="show_hdr_sdr_ratio_summary" msgid="986292785096013733">"عرض نسبة نطاق HDR أو نطاق SDR الحالية"</string>
<string name="nfc_quick_toggle_title" msgid="3607620705230351666">"الاتصال القصير المدى (NFC)"</string>
- <string name="nfc_secure_settings_title" msgid="4906958426927741485">"يجب فتح قفل الجهاز لاستخدام تقنية الاتصال القصير المدى (NFC)"</string>
+ <string name="nfc_secure_settings_title" msgid="4906958426927741485">"يجب فتح قفل الجهاز لاستخدام اتصال NFC"</string>
<string name="android_beam_settings_title" msgid="2797963824490671295">"شعاع Android"</string>
<string name="android_beam_on_summary" msgid="6067720758437490896">"جاهز لنقل محتوى التطبيق عبر الاتصالات القريبة المدى (NFC)"</string>
<string name="android_beam_off_summary" msgid="5693961375631325042">"إيقاف"</string>
@@ -1306,7 +1311,7 @@
<string name="dark_ui_text" msgid="4392646155331126666">"يستخدم \"المظهر الداكن\" خلفية سوداء لتوفير طاقة البطارية والحفاظ عليها لفترة أطول في بعض الشاشات. لا يتم تفعيل الجداول الزمنية لعمل \"المظهر الداكن\" إلا بعد قفل الشاشة."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"يتبع وضع \"المظهر الداكن\" حاليًا الجدول الزمني لوضع \"وقت النوم\"."</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"إعدادات وضع \"وقت النوم\""</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{يمكن لـ \"الأوضاع\" تفعيل \"المظهر الداكن\" أيضًا}=1{يمكن لوضع \"{mode_1}\" تفعيل \"المظهر الداكن\" أيضًا}=2{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" تفعيل \"المظهر الداكن\" أيضًا}=3{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" ووضع \"{mode_3}\" تفعيل \"المظهر الداكن\" أيضًا}few{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" و# أوضاع أخرى تفعيل \"المظهر الداكن\" أيضًا}many{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" و# وضعًا آخر تفعيل \"المظهر الداكن\" أيضًا}other{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" و# وضع آخر تفعيل \"المظهر الداكن\" أيضًا}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{\"الأوضاع\" يمكنها تفعيل \"المظهر الداكن\" أيضًا}=1{يمكن لوضع \"{mode_1}\" تفعيل \"المظهر الداكن\" أيضًا}=2{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" تفعيل \"المظهر الداكن\" أيضًا}=3{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" ووضع \"{mode_3}\" تفعيل \"المظهر الداكن\" أيضًا}few{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" و# أوضاع أخرى تفعيل \"المظهر الداكن\" أيضًا}many{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" و# وضعًا آخر تفعيل \"المظهر الداكن\" أيضًا}other{يمكن لوضع \"{mode_1}\" ووضع \"{mode_2}\" و# وضع آخر تفعيل \"المظهر الداكن\" أيضًا}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"إعدادات \"الأوضاع\""</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"زيادة تعتيم الشاشة"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"السماح للجهاز بزيادة تعتيم الشاشة أكثر من المعتاد"</string>
@@ -1950,23 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"تتجاهل لوحة المفاتيح الضغطات المتكررة بسرعة على المفتاح نفسه"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"حدّ تجاهُل النقرات المتكرّرة"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"اختَر المدة الزمنية التي تتجاهل فيها لوحة المفاتيح الضغطات المتكرّرة على المفاتيح"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 ثانية"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 ثانية"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 ثانية"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 ثانية"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 ثانية"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 ثانية"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"مخصّصة"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"قيمة مخصّصة"</string>
<string name="slow_keys" msgid="2891452895499690837">"المفاتيح البطيئة"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"تضبط هذه الميزة المهلة قبل أن يعمل المفتاح عند الضغط عليه"</string>
<string name="sticky_keys" msgid="7317317044898161747">"تثبيت المفاتيح"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"اضغط على مفتاح واحد في كل مرة للحصول على الاختصارات بدلاً من الضغط باستمرار على المفاتيح معًا"</string>
<string name="mouse_keys" msgid="6237254627808525540">"مفاتيح الماوس"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"استخدام مفاتيح الماوس"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"يمكنك استخدام لوحة المفاتيح للتحكّم في المؤشر"</string>
- <!-- no translation found for mouse_reverse_vertical_scrolling (154907817154779952) -->
- <skip />
- <!-- no translation found for mouse_reverse_vertical_scrolling_summary (3386655598642587942) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button (3028204969091057207) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button_summary (3276638019321067902) -->
- <skip />
+ <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"الانتقال العكسي عبر الماوس"</string>
+ <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"يمكنك الانتقال للأعلى لتحريك محتوى الصفحة للأسفل"</string>
+ <string name="mouse_swap_primary_button" msgid="3028204969091057207">"تبديل الزرَّين الأيمن والأيسر"</string>
+ <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"يمكنك استخدام زر الماوس الأيسر كزر الماوس الأيمن"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"مفاتيح الماوس في \"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>\""</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"يمكنك استخدام مفاتيح <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> لتحريك مؤشّر الماوس"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"يمكنك استخدام مفتاح <xliff:g id="CLICK_LABEL">%s</xliff:g> للنقر على الزر الأساسي للماوس"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"يمكنك استخدام مفتاح <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> للضغط مع الاستمرار على الزر الأساسي للماوس"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"يمكنك استخدام مفتاح <xliff:g id="RELEASE_LABEL">%s</xliff:g> لتحرير الزر الأساسي للماوس"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"يمكنك استخدام مفتاح <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> لتبديل وضع التمرير. وسيؤدي هذا إلى جعل مفاتيح <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> تنتقل إلى الأعلى أو الأسفل أو اليسار أو اليمين"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"يمكنك استخدام مفتاح <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> للنقر على الزر الثانوي للماوس"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"اختصارات لوحة المفاتيح"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"إظهار قائمة الاختصارات"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"لوحات مفاتيح وأدوات ملف العمل"</string>
@@ -1981,8 +1992,8 @@
<string name="trackpad_touchpad_gesture_title" msgid="7568052847609914436">"إيماءات لوحة اللمس"</string>
<string name="trackpad_touchpad_gesture_summary" msgid="6256074591395359124">"تخصيص إيماءات التنقّل الفردية في لوحة اللمس"</string>
<string name="trackpad_reverse_scrolling_title" msgid="422877284529360866">"عكس اتجاه التنقّل"</string>
- <string name="trackpad_reverse_scrolling_summary" msgid="6048648562887499036">"يتحرّك المحتوى للأعلى عندما تمرِّر سريعًا للأسفل."</string>
- <string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"النقر بزر الماوس الأيمن باستخدام أسفل يمين لوحة اللمس"</string>
+ <string name="trackpad_reverse_scrolling_summary" msgid="6048648562887499036">"يتحرّك المحتوى للأعلى عندما تمرِّر سريعًا للأسفل"</string>
+ <string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"النقر أسفل يمين لوحة اللمس"</string>
<string name="trackpad_bottom_right_tap_summary" msgid="4467915480282133447">"انقر أسفل يمين لوحة اللمس للحصول على مزيد من الخيارات"</string>
<string name="trackpad_pointer_speed" msgid="7786579408631352625">"سرعة المؤشر"</string>
<string name="pointer_fill_style" msgid="8794616790175016092">"لون المؤشر"</string>
@@ -2035,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"اختيار مفتاح جديد لـ \"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>\":"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"تسهيل استخدام لوحة المفاتيح الخارجية"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ميزة \"تثبيت المفاتيح\" وميزة \"تجاهُل النقرات المتكرّرة\" ومفاتيح الماوس"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"تكرار الحرف الذي يكتبه المفتاح"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"مدة التأخير قبل التكرار"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"معدّل التكرار"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"اضغط مع الاستمرار على أحد المفاتيح لتكرار الحرف الذي يكتبه هذا المفتاح إلى أن ترفع إصبعك عنه"</string>
<string name="ime_label_title" msgid="8994569521516807168">"التنسيق <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"تلقائي"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"تلقائي: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2447,8 +2454,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"معاينة"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"خيارات عادية"</string>
<string name="captioning_locale" msgid="5533303294290661590">"اللغة"</string>
- <!-- no translation found for captioning_text_size (5764254558945371745) -->
- <skip />
+ <string name="captioning_text_size" msgid="5764254558945371745">"حجم نص الترجمة والشرح"</string>
<string name="captioning_preset" msgid="4174276086501638524">"نمط الشرح"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"خيارات مخصصة"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"لون الخلفية"</string>
@@ -2575,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ضبط استخدام الطاقة"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"الحزم المضمنة"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"التطبيقات تعمل بشكل طبيعي"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"يُنصح باستبدال البطارية"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"انخفضت سعة البطارية وأداء الشحن، ويُنصح باستبدال البطارية."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"مستوى شحن البطارية منخفض"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"يمكنك تفعيل خيار \"توفير شحن البطارية\" لإطالة عمر البطارية."</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"إطالة عمر البطارية"</string>
@@ -2992,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"هل تريد قطع الاتصال بهذه شبكة VPN؟"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"قطع الاتصال"</string>
<string name="vpn_version" msgid="6344167191984400976">"الإصدار"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"الإصدار <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"نسيان شبكة VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"هل تريد استبدال شبكة VPN الحالية؟"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"هل تريد تشغيل شبكة VPN باستمرار؟"</string>
@@ -3416,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"أيام الأسبوع من 9 صباحًا إلى 5 بعد الظهر\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"أحداث التقويم"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{تمّ تفعيل الوضع \"{mode_1}\"}=2{تمّ تفعيل الوضعَين \"{mode_1}\" و\"{mode_2}\"}=3{تمّ تفعيل الأوضاع \"{mode_1}\" و\"{mode_2}\" و\"{mode_3}\"}few{تمّ تفعيل الوضعَين \"{mode_1}\" و\"{mode_2}\" و# أوضاع أخرى}many{تمّ تفعيل الوضعَين \"{mode_1}\" و\"{mode_2}\" و# وضعًا آخرًا}other{تمّ تفعيل الوضعَين \"{mode_1}\" و\"{mode_2}\" و# وضع آخر}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{يمكن تفعيل وضع واحد تلقائيًا}two{يمكن تفعيل وضعَين تلقائيًا}few{يمكن تفعيل # أوضاع تلقائيًا}many{يمكن تفعيل # وضعًا تلقائيًا}other{يمكن تفعيل # وضع تلقائيًا}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{عدم الإزعاج}=1{{mode_1}}=2{\"{mode_1}\" و\"{mode_2}\"}few{\"{mode_1}\" و\"{mode_2}\" و\"{mode_3}\"}many{\"{mode_1}\" و\"{mode_2}\" و\"{mode_3}\"}other{\"{mode_1}\" و\"{mode_2}\" و\"{mode_3}\"}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"مفعَّل"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"لم يتم ضبط الوضع"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"غير مفعَّل"</string>
@@ -3720,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"حينما تتلقّى الكثير من الإشعارات خلال وقت قصير، سيتم خفض مستوى صوت الجهاز وتقليل ظهور التنبيهات لمدة تصل إلى دقيقتين. ولن تتأثر المكالمات والمنبّهات والمحادثات ذات الأولوية بتلك الإجراءات. \n\nيمكنك العثور على الإشعارات المُرسلة إليك أثناء فترة تخفيض الإشعارات الصوتية والاهتزاز من خلال سحب الشاشة من أعلى لأسفل."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"التطبيق على ملفات العمل"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"يسري على تطبيقات ملف العمل"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"خدمات تحسّن تجربة الواقع الافتراضي"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"لم تطلب أي تطبيقات مثبَّتة أن يتم تشغيلها كخدمات تحسّن تجربة الواقع الافتراضي."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"هل تريد السماح لخدمة \"<xliff:g id="SERVICE">%1$s</xliff:g>\" بالوصول إلى خدمة الواقع الافتراضي؟"</string>
@@ -5040,7 +5057,7 @@
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"الوصول إلى المساعد الرقمي"</string>
<string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"الوصول إلى قائمة زر التشغيل"</string>
<string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"للاستخدام، عليك ضبط قفل الشاشة أولاً."</string>
- <string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"قائمة زر التشغيل:\nاضغط على زر التشغيل وزر رفع مستوى الصوت في نفس الوقت"</string>
+ <string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"قائمة زر التشغيل:\nاضغط على زر التشغيل وزر رفع مستوى الصوت في الوقت نفسه"</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"منع الرنين:\nاضغط على أحد زرَّي التحكّم بمستوى الصوت لاستخدام الاختصار."</string>
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"مدة الضغط مع الاستمرار"</string>
<string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"يمكنك تعديل حساسية الضغطة من خلال اختيار مدة الضغط مع الاستمرار على زر التشغيل"</string>
@@ -5164,7 +5181,7 @@
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"استخدام ميزة \"تصحيح الأخطاء اللاسلكي\""</string>
<string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"استخدام الإعدادات المفضّلة لبرنامج تشغيل الرسومات"</string>
<string name="night_light_main_switch_title" msgid="3428298022467805219">"استخدام ميزة \"الإضاءة الليلية\""</string>
- <string name="nfc_main_switch_title" msgid="6295839988954817432">"استخدام الاتصال القصير المدى (NFC)"</string>
+ <string name="nfc_main_switch_title" msgid="6295839988954817432">"استخدام اتصال NFC"</string>
<string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"استخدام ميزة \"السطوع التكيُّفي\""</string>
<string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"استخدام ميزة \"الاتصال عبر Wi-Fi\""</string>
<string name="default_see_all_apps_title" msgid="7481113230662612178">"عرض كل التطبيقات"</string>
@@ -5468,6 +5485,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"الاستماع إلى البث"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"عليك أن تمسح ضوئيًا رمز الاستجابة السريعة للبث الصوتي للاستماع إليه باستخدام \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"لا يمكن تعديل كلمة المرور أثناء المشاركة. ولتعديلها، عليك أولاً إيقاف ميزة \"مشاركة الصوت\"."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"يجب أن تحتوي كلمة المرور على 4 إلى 16 حرفًا، وأن تتضمّن أحرفًا وأرقامًا ورموزًا فقط"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"الماسح الضوئي لرمز الاستجابة السريعة"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"هل أنت بحاجة إلى مساعدة؟"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"البحث في \"الإعدادات\""</string>
@@ -5476,10 +5494,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"الجهاز فقط"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"لن تتم مزامنة جهات الاتصال الجديدة مع أحد الحسابات"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"سيتم حفظ جهات الاتصال على جهازك ومزامَنتها مع حسابك تلقائيًا"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"لم يتم ضبط حساب تلقائي"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"حدث خطأ أثناء ضبط الحساب التلقائي"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"لم يتم ضبط حساب تلقائي"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"الجهاز فقط"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"يُرجى إضافة حساب للبدء"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"دائرة البحث"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"انقر مع الاستمرار على زر الشاشة الرئيسية أو مؤشر التنقُّل للبحث باستخدام المحتوى الذي يظهر على شاشتك."</string>
</resources>
diff --git a/res/values-as/arrays.xml b/res/values-as/arrays.xml
index 20c6a8d..992508f 100644
--- a/res/values-as/arrays.xml
+++ b/res/values-as/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ব্ৰিফকেছ"</item>
+ <item msgid="184985872234062767">"ক্লাছিকেল ভৱন"</item>
+ <item msgid="9189550412466785530">"এপাৰ্টমেণ্ট ভৱন"</item>
+ <item msgid="2142527562511049422">"কথনৰ বাবল"</item>
+ <item msgid="2548100558260478605">"লোকসকলৰ গোট"</item>
+ <item msgid="2270003903304578284">"লাইটৰ বাল্ব"</item>
+ <item msgid="4793496619091161864">"কেলেণ্ডাৰ"</item>
+ <item msgid="5673625795644364100">"অসুবিধা নিদিব ম’ড"</item>
+ <item msgid="1423820834865831361">"দৌৰি থকা ব্যক্তি"</item>
+ <item msgid="2037298830718732608">"গল্ফ"</item>
+ <item msgid="2197835014443491074">"ব্যায়ামাগাৰৰ ডাম্বেল"</item>
+ <item msgid="2730180105015616518">"সাঁতোৰা"</item>
+ <item msgid="2666922823253345958">"পাহাৰ বগাই থকা ব্যক্তি"</item>
+ <item msgid="8234880356472211396">"বল দলিয়াই থকা ব্যক্তি"</item>
+ <item msgid="4642980625253001443">"গোৰ মাৰি থকা ব্যক্তি"</item>
+ <item msgid="4324795269518833500">"গে’ম নিয়ন্ত্ৰক"</item>
+ <item msgid="7789966425125441125">"শিল্পীৰ ৰঙৰ পেলেট"</item>
+ <item msgid="663512680597461570">"তুষাৰ কণিকা"</item>
+ <item msgid="7952183800501346803">"সমুদ্ৰতীৰৰ ছাতি"</item>
+ <item msgid="799139025758265891">"কৰ্মশালাৰ সঁজুলি"</item>
+ <item msgid="8112685757657659269">"পিয়ান’"</item>
+ <item msgid="3861584909935022342">"ফিল্মৰ ৰীল"</item>
+ <item msgid="5827426100157335512">"কিতাপ"</item>
+ <item msgid="8585828346253128384">"পদুম ফুল"</item>
+ <item msgid="8788370542815300188">"ব্যক্তিৰ মন"</item>
+ <item msgid="7287354964767553293">"হেডফ’ন"</item>
+ <item msgid="2530059623783800987">"টিভি"</item>
+ <item msgid="5307182323469376758">"ৰে’ল"</item>
+ <item msgid="4903790544026923026">"গাড়ী"</item>
+ <item msgid="5010405583912314582">"কাঁটাচামুচ আৰু ছুৰী কটাৰী"</item>
+ <item msgid="8939998598599064900">"শ্বপিং কাৰ্ট"</item>
+ <item msgid="3379605903308731893">"শিশু"</item>
+ <item msgid="7808668968550293112">"জন্তুৰ হাতোৰা"</item>
+ <item msgid="1000692647524056504">"তৰাৰ বেজ"</item>
+ <item msgid="8270261073421676502">"দুগৰাকী লোক"</item>
+ <item msgid="5767782819651505460">"তৰাচিহ্ন"</item>
+ <item msgid="4368451291862729334">"হৃদয়"</item>
+ <item msgid="2613199102208419986">"ঘৰ"</item>
+ <item msgid="3022279986430275040">"অৰ্ধ-চন্দ্ৰ"</item>
+ <item msgid="5421089790869483206">"ঘড়ী"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 6fa8b0e..081480f 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"নতুন ডিভাইচ পেয়াৰ কৰক"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ব্লুটুথ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"কাইলৈ স্বয়ংক্ৰিয়ভাৱে অন কৰক"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"যদি আপুনি ব্লুটুথ অফ কৰে, তেন্তে পাছদিনা ই পুনৰ অন হয়"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"সোঁ কাণখন পেয়াৰ কৰক"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"বাওঁ কাণখন পেয়াৰ কৰক"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"নিজৰ অন্য কাণখন পেয়াৰ কৰক"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ব্লুটুথ LE অডিঅ’ অক্ষম কৰক"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ডিভাইচটোৱে LE অডিঅ’ হাৰ্ডৱেৰ ক্ষমতাসমূহ সমৰ্থন কৰিলে ই ব্লুটুথ LE অডিঅ’ সুবিধাসমূহ অক্ষম কৰে।"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ব্লুটুথ LE অডিঅ’ ম’ড"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ব্লুটুথ LE অডিঅ’ ব্ৰডকাষ্ট UIৰ পূৰ্বদৰ্শন সক্ষম কৰক"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"ব্যক্তিগত অডিঅ’ শ্বেয়াৰিং আৰু ব্যক্তিগত সম্প্ৰচাৰকে ধৰি LE অডিঅ’ শ্বেয়াৰিং UIৰ পূৰ্বদৰ্শন সক্ষম কৰে"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ডিভাইচৰ সবিশেষত LE অডিঅ’ৰ ট’গল দেখুৱাওক"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ব্লুটুথ LE অডিঅ’ৰ অনুমতি দিয়া সূচী বাইপাছ কৰক"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE অডিঅ’ৰ পৰিধীয় ডিভাইচে অনুমতি দিয়া সূচীৰ যোগ্যতাৰ মাপকাঠী মানি চলিছে বুলি সত্যাপন নকৰিলেও ডিফ’ল্ট হিচাপে LE অডিঅ’ ব্যৱহাৰ কৰক।"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"আপোনাৰ নেটৱৰ্ক আৰু বেতাঁৰ ছিগনেল ব্যৱহাৰ কৰি স্বয়ংক্ৰিয়ভাৱে ছেট কৰক"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"স্বয়ংক্ৰিয় সময় মণ্ডল"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"আপোনাৰ নিকটৱৰ্তী ম’বাইল নেটৱৰ্ক অনুযায়ী স্বয়ংক্ৰিয়ভাৱে ছেট কৰক"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"উপলব্ধ হ’লে আপোনাৰ ডিভাইচৰ অৱস্থান ব্যৱহাৰ কৰি স্বয়ংক্ৰিয়ভাৱে ছেট কৰক"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"স্থানীয় ডিফ’ল্ট ব্যৱহাৰ কৰক"</string>
<string name="date_time_24hour" msgid="286679379105653406">"২৪ ঘণ্টীয়া সজ্জা ব্যৱহাৰ কৰক"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"সময়"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"আঙুলিটো আঁতৰাওক আৰু ছেন্সৰটো আকৌ স্পৰ্শ কৰক"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ফিংগাৰপ্ৰিণ্ট ছেন্সৰ ব্যৱহাৰ কৰিব নোৱাৰি"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"মেৰামতি সেৱা প্ৰদানকাৰী কোনো প্ৰতিষ্ঠানলৈ যাওক।"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"স্ক্ৰীনখন অফ হৈ আছে ফিংগাৰপ্ৰিণ্ট আনলক"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"স্ক্ৰীনখন অফ থকা অৱস্থাতো ফিংগাৰপ্ৰিণ্ট আনলক ব্যৱহাৰ কৰক"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"স্ক্ৰীনখন অফ হৈ আছে, আনলক কৰক"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"সুৰক্ষা সম্পৰ্কীয় অধিক ছেটিং"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"কৰ্মস্থানৰ প্ৰ’ফাইলৰ লক, এনক্ৰিপশ্বন আৰু বহুতো"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"এনক্ৰিপশ্বন, ক্ৰেডেনশ্বিয়েল আৰু বহুতো"</string>
@@ -564,7 +569,7 @@
<string name="private_space_title" msgid="1752064212078238723">"প্ৰাইভেট স্পে\'চ"</string>
<string name="private_space_summary" msgid="2274405892301976238">"ব্যক্তিগত এপ্ লক কৰি লুকুৱাই ৰাখক"</string>
<string name="private_space_description" msgid="4059594203775816136">"ব্যক্তিগত এপ্সমূহ আপুনি লুকুৱাই ৰাখিব বা লক কৰিব পৰা এটা পৃথক স্পে’চত ৰাখক"</string>
- <string name="private_space_lock_title" msgid="7230836881433350526">"ব্যক্তিগত স্পে’চৰ লক"</string>
+ <string name="private_space_lock_title" msgid="7230836881433350526">"প্ৰাইভেট স্পে’চৰ লক"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"আপুনি আপোনাৰ ডিভাইচটো আনলক কৰিবলৈ ব্যৱহাৰ কৰা একেটা পদ্ধতি ব্যৱহাৰ কৰি আপোনাৰ প্ৰাইভেট স্পে\'চ আনলক কৰিব পাৰে অথবা অন্য কোনো লক বাছনি কৰিব পাৰে"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"ডিভাইচৰ স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string>
<string name="private_space_biometric_title" msgid="3934339826674553174">"মুখাৱয়ব আৰু ফিংগাৰপ্ৰিণ্টৰ দ্বাৰা আনলক কৰা"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"কীব’ৰ্ডে একেটা কী ক্ষিপ্ৰতাৰে বাবে বাৰে টিপাটো আওকাণ কৰে"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"বাউন্স কীৰ সীমা"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"সেই সময় অৱধি বাছনি কৰক যেতিয়া আপোনাৰ কীব’ৰ্ডে বাৰে বাৰে কী টিপাটো আওকাণ কৰে"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"০.২ ছেকেণ্ড"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"০.৪ ছেকেণ্ড"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"০.৬ ছেকেণ্ড"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"০.২ ছেকেণ্ড"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"০.৪ ছেকেণ্ড"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"০.৬ ছেকেণ্ড"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"কাষ্টম"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"কাষ্টম মান"</string>
<string name="slow_keys" msgid="2891452895499690837">"ধীৰ গতিৰ কী"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"সক্ৰিয় কৰিবলৈ এটা কী টিপাৰ বাবে লগা সময় মিলায়"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ষ্টিকী কী"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"একেলগে কীসমূহ টিপি ধৰি থকাৰ সলনি শ্বৰ্টকাটৰ বাবে এবাৰত এটা কী টিপক"</string>
<string name="mouse_keys" msgid="6237254627808525540">"মাউছ কীসমূহ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"মাউছৰ কীসমূহ ব্যৱহাৰ কৰক"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"পইণ্টাৰ নিয়ন্ত্ৰণ কৰিবলৈ আপোনাৰ কীব’ৰ্ড ব্যৱহাৰ কৰক"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"মাউছ ওলোটাকৈ স্ক্ৰ’ল কৰাৰ সুবিধা"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"পৃষ্ঠাটো তললৈ নিবলৈ ওপৰলৈ স্ক্ৰ’ল কৰক"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"বাওঁ আৰু সোঁফালৰ বুটাম সলনা-সলনি কৰক"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"মাউছৰ বাওঁফালৰ বুটামটো আপোনাৰ সোঁফালৰ হিচাপে ব্যৱহাৰ কৰক"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>ৰ বাবে মাউছৰ কী"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"মাউছৰ পইণ্টাৰটো লৰচৰ কৰিবলৈ <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> কীসমূহ ব্যৱহাৰ কৰক"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"প্ৰাথমিক মাউছৰ বুটামটোত ক্লিক কৰিবলৈ <xliff:g id="CLICK_LABEL">%s</xliff:g> কীটো ব্যৱহাৰ কৰক"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"প্ৰাথমিক মাউছৰ বুটামটোত টিপি কিছু সময় ধৰি থাকিবলৈ <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> কীটো ব্যৱহাৰ কৰক"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"প্ৰাথমিক মাউছৰ বুটামটো এৰি দিবলৈ কৰিবলৈ <xliff:g id="RELEASE_LABEL">%s</xliff:g> কীটো ব্যৱহাৰ কৰক"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"স্ক্ৰ’ল ম’ডটো ট’গল কৰিবলৈ <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> কীটো ব্যৱহাৰ কৰক। এইটোৱে <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>ক ভিউটো ওপৰলৈ, তললৈ, বাওঁফালে বা সোঁফালে স্ক্ৰ’ল কৰিবলৈ দিব"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"গৌণ মাউছৰ বুটামটোত ক্লিক কৰিবলৈ <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> কীটো ব্যৱহাৰ কৰক"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"কীব’ৰ্ডৰ শ্বৰ্টকাটসমূহ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"শ্বৰ্টকাটৰ সূচী দেখুৱাওক"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"কৰ্মস্থানৰ প্ৰ’ফাইল আৰু সঁজুলি"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>ৰ বাবে এটা নতুন চাবি বাছনি কৰক:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"কায়িক কীব’ৰ্ডৰ সাধ্য সুবিধা"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ষ্টিকী কী, বাউন্স কী, মাউছ কী"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"কী পুনৰাবৃত্তি কৰক"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"পুনৰাবৃত্তিৰ পূৰ্বে হোৱা বিলম্ব"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"পুনৰাবৃত্তিৰ হাৰ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"কীটো এৰি নিদিয়ালৈকে কোনো কীৰ বৰ্ণটো পুনৰাবৃত্তি কৰিবলৈ সেই কীটো টিপি ধৰক"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> লে’আউট"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ডিফ\'ল্ট"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"স্বয়ংক্ৰিয়: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"পাৱাৰৰ ব্যৱহাৰ খাপ খুৱাওক"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"পেকেজসমূহ অন্তৰ্ভুক্ত আছে"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"এপ্সমূহ স্বাভাৱিকভাৱে চলি আছে"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"বেটাৰী সলনি কৰিবলৈ চুপাৰিছ কৰা হৈছে"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"বেটাৰীৰ বহনক্ষমতা আৰু চাৰ্জিঙৰ কাৰ্যদক্ষতা হ্ৰাস হৈছে আৰু বেটাৰী সলনি কৰিবলৈ চুপাৰিছ কৰা হৈছে।"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"বেটাৰী কমিছে"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"বেটাৰীৰ জীৱনকাল বৃদ্ধি কৰিবলৈ বেটাৰী সঞ্চয়কাৰী অন কৰক"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"বেটাৰীৰ জীৱনকাল উন্নত কৰক"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"এই ভিপিএনটোৰ সৈতে সংযোগ বিচ্ছিন্ন কৰিবনে?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"সংযোগ বিচ্ছিন্ন কৰক"</string>
<string name="vpn_version" msgid="6344167191984400976">"সংস্কৰণ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"সংস্কৰণ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"ভিপিএন পাহৰক"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"পূৰ্বৰ ভিপিএনটো সলনি কৰেনে?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ভিপিএনক যিকোনো সময়ত অন থকা অবস্থাত ছেট কৰিবনে?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"কৰ্মদিনত পুৱা ৯ বজা - সন্ধিয়া ৫ বজা\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"কেলেণ্ডাৰৰ অনুষ্ঠান"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} সক্ৰিয় আছে}=2{{mode_1} আৰু {mode_2} সক্ৰিয় আছে}=3{{mode_1}, {mode_2}, আৰু {mode_3} সক্ৰিয় আছে}one{{mode_1}, {mode_2}, আৰু # টা সক্ৰিয় আছে}other{{mode_1}, {mode_2}, আৰু # টা সক্ৰিয় আছে}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{১ টা ম’ড স্বয়ংক্ৰিয়ভাৱে অন হ’ব পাৰে}one{# টা ম’ড স্বয়ংক্ৰিয়ভাৱে অন হ’ব পাৰে}other{# টা ম’ড স্বয়ংক্ৰিয়ভাৱে অন হ’ব পাৰে}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{অসুবিধা নিদিব ম’ড}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"অন আছে"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"ছেট কৰা হোৱা নাই"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"অক্ষম কৰা আছে"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"আপুনি কম সময়ৰ ভিতৰতে বহুতো জাননী পালে, আপোনাৰ ডিভাইচটোৱে নিজৰ ভলিউম কমাব আৰু ২ মিনিটলৈকে সতৰ্কবাৰ্তাসমূহ মিনিমাইজ কৰিব। কল, এৰ্লাম আৰু অগ্ৰাধিকাৰপ্ৰাপ্ত বাৰ্তালাপত প্ৰভাৱ নপৰে। \n\nকুলডাউনৰ সময়ত পোৱা জাননী স্ক্ৰীনখনৰ একেবাৰে ওপৰৰ পৰা তললৈ টানি পাব পাৰি।"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"কৰ্মস্থানৰ প্ৰ’ফাইলত প্ৰয়োগ কৰক"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"কৰ্মস্থানৰ প্ৰ’ফাইলৰ এপত প্ৰয়োগ কৰক"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"ভিআৰ সহায়ক সেৱা"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ইনষ্টল কৰি থোৱা কোনো এপে ভিআৰ সহায়ক সেৱা হিচাপে চলাবলৈ অনুৰোধ কৰা নাই।"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR সেৱাক <xliff:g id="SERVICE">%1$s</xliff:g>ৰ এক্সেছ দিবনে?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ষ্ট্ৰীম শুনক"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ৰ জৰিয়তে শুনিবলৈ অডিঅ’ ষ্ট্ৰীমৰ কিউআৰ ক’ড এটা স্কেন কৰক"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"শ্বেয়াৰ কৰি থকা সময়ত পাছৱৰ্ড সম্পাদনা কৰিব নোৱাৰি। পাছৱৰ্ডটো সলনি কৰিবলৈ, প্ৰথমে অডিঅ’ শ্বেয়াৰিং অফ কৰক।"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"আপোনাৰ পাছৱৰ্ডটোত ৪-১৬ টা বৰ্ণসংখ্যা থাকিবই লাগিব আৰু সেইটোত কেৱল বৰ্ণ, সংখ্যা আৰু চিহ্ন ব্যৱহাৰ কৰিব পাৰি"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"কিউআৰ ক’ড স্কেনাৰ"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"সহায় লাগে নেকি?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"সন্ধানৰ ছেটিংসমূহ"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"ডিভাইচ মাত্ৰ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"নতুন সম্পৰ্কসমূহ একাউণ্টৰ সৈতে ছিংক কৰা নহ’ব"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"সম্পৰ্কসমূহ আপোনাৰ ডিভাইচত ছেভ কৰা হ’ব আৰু ডিফ’ল্টভাৱে আপোনাৰ একাউণ্টত ছিংক কৰা হ’ব"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"কোনো ডিফ\'ল্ট ছেট কৰা হোৱা নাই"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ডিফ’ল্ট একাউণ্ট ছেট কৰোঁতে আসোঁৱাহ হৈছে"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"কোনো ডিফ’ল্ট ছেট কৰা হোৱা নাই"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"ডিভাইচ মাত্ৰ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"আৰম্ভ কৰিবলৈ এটা একাউণ্ট যোগ দিয়ক"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"সন্ধান কৰিবৰ বাবে বৃত্ত"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"আপোনাৰ স্ক্ৰীনত থকা সমলটো ব্যৱহাৰ কৰি সন্ধান কৰিবলৈ গৃহ বুটামটো বা নেভিগেশ্বন হেণ্ডেল স্পৰ্শ কৰি ধৰি ৰাখক।"</string>
</resources>
diff --git a/res/values-az/arrays.xml b/res/values-az/arrays.xml
index dd513d4..6293141 100644
--- a/res/values-az/arrays.xml
+++ b/res/values-az/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Portfel"</item>
+ <item msgid="184985872234062767">"Klassik bina"</item>
+ <item msgid="9189550412466785530">"Yaşayış binası"</item>
+ <item msgid="2142527562511049422">"Danışıq qabarcığı"</item>
+ <item msgid="2548100558260478605">"İnsan qrupu"</item>
+ <item msgid="2270003903304578284">"Elektrik lampası"</item>
+ <item msgid="4793496619091161864">"Təqvim"</item>
+ <item msgid="5673625795644364100">"Narahat Etməyin"</item>
+ <item msgid="1423820834865831361">"Qaçan insan"</item>
+ <item msgid="2037298830718732608">"Qolf"</item>
+ <item msgid="2197835014443491074">"İdman zalı qanteli"</item>
+ <item msgid="2730180105015616518">"Üzgüçülük"</item>
+ <item msgid="2666922823253345958">"Haykinq edən insan"</item>
+ <item msgid="8234880356472211396">"Top atan insan"</item>
+ <item msgid="4642980625253001443">"Təpik vuran insan"</item>
+ <item msgid="4324795269518833500">"Oyun kontrolleri"</item>
+ <item msgid="7789966425125441125">"Rəssamın rəng palitrası"</item>
+ <item msgid="663512680597461570">"Qar uçqunu"</item>
+ <item msgid="7952183800501346803">"Çimərlik çətiri"</item>
+ <item msgid="799139025758265891">"Emalatxana alətləri"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Kinolent"</item>
+ <item msgid="5827426100157335512">"Kitab"</item>
+ <item msgid="8585828346253128384">"Lotus çiçəyi"</item>
+ <item msgid="8788370542815300188">"İnsan zehni"</item>
+ <item msgid="7287354964767553293">"Qulaqlıqlar"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Qatar"</item>
+ <item msgid="4903790544026923026">"Avtomobil"</item>
+ <item msgid="5010405583912314582">"Çəngəl-bıçaq"</item>
+ <item msgid="8939998598599064900">"Səbət"</item>
+ <item msgid="3379605903308731893">"Uşaq"</item>
+ <item msgid="7808668968550293112">"Heyvan pəncəsi"</item>
+ <item msgid="1000692647524056504">"Ulduz nişanı"</item>
+ <item msgid="8270261073421676502">"İki insan"</item>
+ <item msgid="5767782819651505460">"Ulduz"</item>
+ <item msgid="4368451291862729334">"Ürək"</item>
+ <item msgid="2613199102208419986">"Ev"</item>
+ <item msgid="3022279986430275040">"Yarım ay"</item>
+ <item msgid="5421089790869483206">"Saat"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 3b6a0b3..ef62080 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Cihaz əlavə edin"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Sabah avtomatik aktiv edin"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Sağ qulaqlığı birləşdirin"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Sol qulaqlığı birləşdirin"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Digər qulaqlığı birləşdirin"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE audionu deaktiv edin"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Cihaz LE audio avadanlıq imkanlarını dəstəkləyirsə, Bluetooth LE audio funksiyasını deaktiv edir."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio rejimi"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio Yayım üzrə istifadəçi interfeysi önizləməsini aktiv edin"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Şəxsi audio paylaşma və şəxsi yayım da daxil olmaqla LE Audio Paylaşım üzrə istifadəçi interfeysi önizləməsini aktivləşdirir"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE audio açarı görünsün: Cihaz detalları"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio üzrə icazə verilənlər siyahısına qoşulmayın"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio periferik cihazının icazə verilənlər siyahısı üzrə meyarlara cavab verdiyi doğrulanmasa da, defolt olaraq LE Audio istifadə edin."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Şəbəkə və simsiz siqnallarınızdan istifadə edərək avtomatik təyin edin"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Avtomatik saat qurşağı"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Yaxınlıqdakı mobil şəbəkələrə əsasən avtomatik təyin edin"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Mümkünsə, cihaz məkanı vasitəsilə avtomatik təyin edin"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Regional defolt ayarlar tətbiq olunsun"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 saat formatından istifadə et"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Vaxt"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Barmağınızı qaldırın, sonra sensora təkrar toxunun"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Barmaq izi sensorunu istifadə etmək olmur"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Servis mərkəzinə gedin."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ekran sönülü olduqda Barmaqla Kiliddən Açma"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Ekran sönülü olduqda belə, Barmaqla Kiliddən Açma funksiyasından istifadə edin"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ekran sönülüdür, Kilidi açın"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Digər güvənlik ayarları"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"İş profili kilidi, şifrələmə və s."</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Şifrələmə, giriş məlumatları və s."</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klaviatura eyni düymənin təkrarən basılmasını nəzərə almır"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Sıçrayan klaviş üzrə hədd"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Klaviaturanızın təkrarlanan düymə basılmalarını nəzərə almayacağı müddəti seçin"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Fərdi"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"fərdi qiymət"</string>
<string name="slow_keys" msgid="2891452895499690837">"Asta düymələr"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Düyməyə basmağın aktivləşdirilməsi üçün tələb olunan vaxtı tənzimləyir"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Əvəzedici düymələr"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Qısayollar üçün düymələri birlikdə basıb saxlamaq əvəzinə hər dəfə bir düyməyə basın"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Maus düymələri"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Maus düymələrindən istifadə edin"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Poynteri idarə etmək üçün klaviaturadan istifadə edin"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Mausun geri sürüşdürülməsi"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Səhifəni aşağı hərəkət etdirmək üçün yuxarı sürüşdürün"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Sol və sağ düymələri dəyişin"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Mausun sol düyməsini sağ kimi istifadə edin"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> üçün maus düymələri"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Maus göstəricisini hərəkət etdirmək üçün <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> düymələrindən istifadə edin"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Əsas maus düyməsinə klikləmək üçün <xliff:g id="CLICK_LABEL">%s</xliff:g> düyməsindən istifadə edin"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Əsas maus düyməsinə basıb saxlamaq üçün <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> düyməsindən istifadə edin"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Əsas maus düyməsini buraxmaq üçün <xliff:g id="RELEASE_LABEL">%s</xliff:g> düyməsindən istifadə edin"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Sürüşdürmə rejimini dəyişmək üçün <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> düyməsindən istifadə edin. Bu, <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> düymələrinin görünüşü yuxarı, aşağı, sola və ya sağa sürüşdürməsini təmin edəcək"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"İkinci dərəcəli maus düyməsinə klikləmək üçün <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> düyməsindən istifadə edin"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Klaviatura qısayolları"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Qısayolların siyahısını göstərin"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"İş profili klaviaturaları və alətlər"</string>
@@ -1995,7 +2011,7 @@
<string name="trackpad_touch_gesture" msgid="8641725062131922497">"Taçped jestlərini öyrənin"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"trekped, trek ped, maus, kursor, sürüşdürün, çəkin, sağ düymə ilə toxunun, klikləyin, poynter"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"sağ düymə ilə toxunun, basın"</string>
- <string name="gesture_title_go_home" msgid="3682238648647225933">"Əsas səhifəyə qayıdın"</string>
+ <string name="gesture_title_go_home" msgid="3682238648647225933">"Əsas səhifəyə keçin"</string>
<string name="gesture_summary_go_home" msgid="6409031586904205741">"Taçpedin istənilən yerində üç barmağınızla yuxarı sürüşdürün"</string>
<string name="gesture_title_go_back" msgid="6619462058488419802">"Geri qayıdın"</string>
<string name="gesture_summary_go_back" msgid="4981604277892236888">"Üç barmağınızla soldan və ya sağdan sürüşdürün"</string>
@@ -2011,7 +2027,7 @@
<string name="gesture_button_done" msgid="6387900351203032188">"Hazırdır"</string>
<string name="trackpad_go_back_title" msgid="5312164160947491440">"Geri qayıdın"</string>
<string name="trackpad_go_back_summary" msgid="4201901101085902768">"Üç barmaqla sola və ya sağa sürüşdürün"</string>
- <string name="trackpad_go_home_title" msgid="2146525662148291552">"Əsas səhifəyə qayıdın"</string>
+ <string name="trackpad_go_home_title" msgid="2146525662148291552">"Əsas səhifəyə keçin"</string>
<string name="trackpad_go_home_summary" msgid="2222744701528360887">"Üç barmaqla yuxarı sürüşdürün"</string>
<string name="trackpad_recent_apps_title" msgid="8195970908411585445">"Son tətbiqlər"</string>
<string name="trackpad_recent_apps_summary" msgid="2685092851677573794">"Üç barmaqla yuxarı sürüşdürüb saxlayın"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> üçün yeni açar seçin:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Fiziki klaviatura əlçatanlığı"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Əvəzedici düymələr, sıçrama düymələri, maus düymələri"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Düymələri təkrarlayın"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Təkrardan əvvəlki gecikmə"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Təkrar sürəti"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Düymə buraxılana qədər simvolu təkrarlamaq üçün düyməni basıb saxlayın"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> düzəni"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Defolt"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Avtomatik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Enerji istifadəsini idarə edin"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Daxil edilmiş paketlər"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Tətbiqlər normal işləyir"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Batareyanın dəyişdirilməsi tövsiyə olunur"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Batareyanın tutumu və doldurma performansı azalır və batareyanın dəyişdirilməsi tövsiyə olunur."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Enerji qurtarır"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Enerjiyə qənaət etmək üçün qənaət rejimini aktivləşdirin"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Batareya ömrünü artırın"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Bu VPN bağlantısı kəsilsin?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Bağlantını kəsin"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versiya"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versiya <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN\'i unudun"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Mövcud VPN əvəz edilsin?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Hər zaman aktiv VPN quraşdırılsın?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"09:00 - 17:00 həftəiçi\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Təqvim tədbirləri"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} aktivdir}=2{{mode_1} və {mode_2} aktivdir}=3{{mode_1}, {mode_2} və {mode_3} aktivdir}other{{mode_1}, {mode_2} və daha # rejim aktivdir}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 rejim avtomatik işə düşə bilər}other{# rejim avtomatik işə düşə bilər}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Narahat Etməyin}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AKTİV"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ayarlanmayıb"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Deaktiv"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Qısa müddətdə çoxlu bildiriş alanda cihaz 2 dəqiqəyədək səsi azaldacaq və xəbərdarlıqları minimuma endirəcək. Zənglər, alarmlar və prioritet söhbətlər təsirə məruz qalmır. \n\nFasilə zamanı qəbul edilən bildirişləri ekranın yuxarısından aşağı çəkərək tapmaq olar."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"İş profillərinə tətbiq edin"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"İş profili tətbiqlərinə tətbiq edin"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR köməkçi xidmətləri"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Heç bir tətbiq VR köməkçi xidmətləri kimi çalışma sorğusu göndərməyib."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR xidmətinə <xliff:g id="SERVICE">%1$s</xliff:g> üçün girişə icazə verilsin?"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Yayımı dinləyin"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə dinləmək üçün audio yayımı QR kodunu skanlayın"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Paylaşarkən parolu redaktə etmək olmur. Parolu dəyişmək üçün əvvəlcə audio paylaşmanı deaktiv edin."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Parolunuz 4-16 simvoldan ibarət olmalıdır və yalnız hərf, rəqəm və simvollardan istifadə edilməlidir"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR kod skaneri"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Kömək lazımdır?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Axtarış Ayarları"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Yalnız cihaz"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Yeni kontaktlar hesab ilə sinxronlaşdırılmayacaq"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontaktlar cihazınızda saxlanılacaq və defolt olaraq hesabınız ilə sinxronlaşdırılacaq"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Defolt ayarlanmayıb"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Defolt hesabı ayarlayarkən xəta baş verdi"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Defolt ayarlanmayıb"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Yalnız cihaz"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Başlamaq üçün hesab əlavə edin"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Dairəyə alaraq axtarın"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Ekrandakı kontentdən istifadə edərək axtarış etmək üçün Əsas ekran düyməsinə və ya naviqasiya tutacağına basıb saxlayın."</string>
</resources>
diff --git a/res/values-b+sr+Latn/arrays.xml b/res/values-b+sr+Latn/arrays.xml
index 4ddf543..0a97d19 100644
--- a/res/values-b+sr+Latn/arrays.xml
+++ b/res/values-b+sr+Latn/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktovka"</item>
+ <item msgid="184985872234062767">"Klasična zgrada"</item>
+ <item msgid="9189550412466785530">"Stambena zgrada"</item>
+ <item msgid="2142527562511049422">"Oblačić"</item>
+ <item msgid="2548100558260478605">"Grupa ljudi"</item>
+ <item msgid="2270003903304578284">"Sijalica"</item>
+ <item msgid="4793496619091161864">"Kalendar"</item>
+ <item msgid="5673625795644364100">"Ne uznemiravaj"</item>
+ <item msgid="1423820834865831361">"Osoba koja trči"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Teg za teretanu"</item>
+ <item msgid="2730180105015616518">"Plivanje"</item>
+ <item msgid="2666922823253345958">"Osoba koja pešači"</item>
+ <item msgid="8234880356472211396">"Osoba koja baca loptu"</item>
+ <item msgid="4642980625253001443">"Osoba koja šutira"</item>
+ <item msgid="4324795269518833500">"Kontroler za igre"</item>
+ <item msgid="7789966425125441125">"Paleta boja umetnika"</item>
+ <item msgid="663512680597461570">"Pahulja"</item>
+ <item msgid="7952183800501346803">"Suncobran"</item>
+ <item msgid="799139025758265891">"Alat iz radionice"</item>
+ <item msgid="8112685757657659269">"Klavir"</item>
+ <item msgid="3861584909935022342">"Rolna filma"</item>
+ <item msgid="5827426100157335512">"Knjiga"</item>
+ <item msgid="8585828346253128384">"Cvet lotosa"</item>
+ <item msgid="8788370542815300188">"Ljudski mozak"</item>
+ <item msgid="7287354964767553293">"Slušalice"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Voz"</item>
+ <item msgid="4903790544026923026">"Automobil"</item>
+ <item msgid="5010405583912314582">"Viljuška i nož"</item>
+ <item msgid="8939998598599064900">"Kolica za kupovinu"</item>
+ <item msgid="3379605903308731893">"Dete"</item>
+ <item msgid="7808668968550293112">"Šapa životinje"</item>
+ <item msgid="1000692647524056504">"Značka sa zvezdicom"</item>
+ <item msgid="8270261073421676502">"Dve osobe"</item>
+ <item msgid="5767782819651505460">"Zvezda"</item>
+ <item msgid="4368451291862729334">"Srce"</item>
+ <item msgid="2613199102208419986">"Kuća"</item>
+ <item msgid="3022279986430275040">"Polumesec"</item>
+ <item msgid="5421089790869483206">"Sat"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 780caf2..dd5b3b2 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Uparite novi uređaj"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatski uključi sutra"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Ako isključite Bluetooth, ponovo će se uključiti sledećeg dana"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Upari desno uvo"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Upari levo uvo"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Uparite drugo uvo"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Onemogući Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Onemogućava funkciju Bluetooth LE audio ako uređaj podržava mogućnosti LE audio hardvera."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio režim"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Omogući pregled korisničkog interfejsa za Bluetooth LE Audio emitovanje"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Omogućava pregled korisničkog interfejsa za Bluetooth LE Audio, uključujući deljenje ličnih audio snimaka i privatno emitovanje"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE Audio prekidač u detaljima o uređaju"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Zaobiđi Bluetooth LE Audio listu dozvoljenih"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Podrazumevano koristi LE Audio čak i ako nije potvrđeno da LE Audio periferni uređaj zadovoljava kriterijume liste dozvoljenih."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Automatsko podešavanje pomoću mreže i bežičnih signala"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatska vremenska zona"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Automatsko podešavanje na osnovu mobilnih mreža u blizini"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Automatsko podešavanje pomoću lokacije uređaja, ako je dostupna"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Koristi podrazumevanu vrednost za lokalitet"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Koristi 24-časovni format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Vreme"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Podignite prst, pa ponovo dodirnite senzor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Ne možete da koristite senzor za otisak prsta"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Posetite dobavljača za popravke."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Otključavanje otiskom prsta kada je ekran isključen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Koristite otključavanje otiskom prsta čak i kada je ekran isključen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Isključen ekran, otključavanje"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Još bezbednosnih podešavanja"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Zaključavanje poslovnog profila, šifrovanje i drugo"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifrovanje, akreditivi i drugo"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tastatura zanemaruje brze pritiske istog tastera koji se ponavljaju"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Prag za duži odziv tastera"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Odaberite koliko dugo tastatura zanemaruje ponavljane pritiske tastera"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 sek"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 sek"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 sek"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 sek"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 sek"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 sek"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Prilagođeno"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"prilagođena vrednost"</string>
<string name="slow_keys" msgid="2891452895499690837">"Spori tasteri"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Prilagodite vreme za aktiviranje tastera posle pritiska"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Lepljivi tasteri"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Pritiskajte jedan po jedan taster da biste koristili prečice umesto da istovremeno držite tastere"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Tasteri miša"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Koristite tastere miša"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Kontrolišite pokazivač pomoću tastature"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Obrnuto skrolovanje mišem"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Skrolujte nagore da biste pomerili stranicu nadole"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Zamenite dugmad nalevo i nadesno"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Koristite levi taster miša kao desni"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tasteri miša za: <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Koristite tastere <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> da biste pomerili pokazivač miša"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Koristite taster <xliff:g id="CLICK_LABEL">%s</xliff:g> da biste kliknuli na primarno dugme miša"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Koristite taster <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> da biste pritisnuli i zadržali primarni taster miša"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Koristite taster <xliff:g id="RELEASE_LABEL">%s</xliff:g> da biste oslobodili primarno dugme miša"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Koristite taster <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> da biste uključili ili isključili režim skrolovanja. Tako ćete pomoću tastera <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> skrolovati prikaz nagore, nadole, ulevo ili udesno"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Koristite taster <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> da biste kliknuli na sekundarno dugme miša"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Tasterske prečice"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Prikazuje listu prečica"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastature i alatke za poslovni profil"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Odaberite novi taster za <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Pristupačnost fizičke tastature"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Lepljivi tasteri, duži odziv tastera, tasteri miša"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Ponavljanje tastera"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Odlaganje pre ponavljanja"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Brzina ponavljanja"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pritisnite i zadržite taster da biste ponavljali unos znaka sve dok ne pustite taster"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Raspored <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Podrazumevano"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatski: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2415,8 +2426,8 @@
<string name="accessibility_description_state_stopped" msgid="5364752492861199133">"Ova usluga nije ispravna."</string>
<string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"Prečice za pristupačnost"</string>
<string name="enable_quick_setting" msgid="6648073323202243604">"Prikaži u Brzim podešavanjima"</string>
- <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Crvena/zelena, delimično slepilo za zelenu"</string>
- <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Crvena/zelena, delimično slepilo za crvenu"</string>
+ <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Crveno-zeleno, delimično slepilo za zelenu"</string>
+ <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Crveno-zeleno, delimično slepilo za crvenu"</string>
<string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Plavo-žuto"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Sivilo"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Intenzitet"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Prilagođavanje korišćenja napajanja"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Sadržani paketi"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikacije rade uobičajeno"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Preporučujemo zamenu baterije"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Kapacitet baterije i učinak punjenja su smanjeni i preporučujemo zamenu baterije."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nizak nivo napunjenosti baterije"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Uključite uštedu baterije da biste produžili trajanje baterije"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Produžite trajanje baterije"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Želite li da prekinete vezu sa ovim VPN-om?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Prekini vezu"</string>
<string name="vpn_version" msgid="6344167191984400976">"Verzija"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Zaboravi VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Želite li da zamenite postojeći VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Želite li da podesite uvek uključeni VPN?"</string>
@@ -3406,12 +3418,12 @@
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Napravite svoj režim"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Dobijajte obaveštenja samo od važnih osoba i aplikacija"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Podesite raspored"</string>
- <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Raspored zasnovan na"</string>
+ <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Osnova rasporeda"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"Dan i vreme"</string>
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"9:00–17:00 radnim danima"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Događaji u kalendaru"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Aktivan je {mode_1}}=2{Aktivni su {mode_1} i {mode_2}}=3{Aktivni su {mode_1}, {mode_2} i {mode_3}}one{Aktivni su {mode_1}, {mode_2} i još # režim}few{Aktivni su {mode_1}, {mode_2} i još # režima}other{Aktivni su {mode_1}, {mode_2} i još # režima}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 režim može da se uključuje automatski}one{# režim može da se uključuje automatski}few{# režima mogu da se uključuju automatski}other{# režima može da se uključuje automatski}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne uznemiravaj}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"UKLJUČENO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nije podešeno"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Onemogućeno"</string>
@@ -3434,7 +3446,7 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Izmeni"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Rasporedi"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Raspored"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Kada se isključuje automatski"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Kada se uključuje automatski"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Raspored događaja"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Uključite tokom događaja za"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Kada je odgovor na poziv"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kada primite mnogo obaveštenja u kratkom periodu, uređaj će utišati zvuk i smanjiti broj upozorenja na najviše dva minuta. To ne utiče na pozive, alarme ni prioritetne konverzacije. \n\nObaveštenja koja dobijete tokom utišavanja možete da pronađete povlačenjem nadole od vrha ekrana."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Primeni na poslovne profile"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Primenite na aplikacije poslovnog profila"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Usluge pomagača za virtuelnu realnost"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nijedna instalirana aplikacija nije zahtevala da se pokrene kao usluga pomagača za virtuelnu realnost."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Dozvoljavate pristup usluzi virtuelne realnosti za <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5460,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Slušajte strim"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skenirajte QR kôd audio strima da biste slušali pomoću: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Lozinka ne može da se menja tokom deljenja. Da biste promenili lozinku, prvo isključite deljenje zvuka."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Lozinka mora da sadrži od 4 do 16 znakova i može da sadrži samo slova, brojeve i simbole"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Skener QR koda"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Treba vam pomoć?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Podešavanja pretrage"</string>
@@ -5468,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Samo uređaj"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Novi kontakti se neće sinhronizovati sa nalogom"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakti se podrazumevano čuvaju na uređaju i sinhronizuju sa nalogom"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nije podešen podrazumevani nalog"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Greška pri podešavanju podrazumevanog naloga"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nije podešen podrazumevani nalog"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Samo uređaj"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Dodajte nalog da biste započeli"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Pretraga zaokruživanjem"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Dodirnite i zadržite dugme Početak ili marker za kretanje da biste pretraživali pomoću sadržaja na ekranu."</string>
</resources>
diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml
index efe6260..896e9e7 100644
--- a/res/values-be/arrays.xml
+++ b/res/values-be/arrays.xml
@@ -200,7 +200,7 @@
<item msgid="346101114322879720">"доступ да паведамленняў"</item>
<item msgid="4760681822601767255">"камера"</item>
<item msgid="2172823594140104317">"запісваць аўдыё"</item>
- <item msgid="5612873260709742213">"прайграць аўдыё"</item>
+ <item msgid="5612873260709742213">"прайграць аўдыя"</item>
<item msgid="2027206403725749996">"счытаць буфер абмену"</item>
<item msgid="5643742956725663156">"змяніць буфер абмену"</item>
<item msgid="7362845549479684378">"мультымедыйныя кнопкі"</item>
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Партфель"</item>
+ <item msgid="184985872234062767">"Класічны будынак"</item>
+ <item msgid="9189550412466785530">"Шматкватэрны дом"</item>
+ <item msgid="2142527562511049422">"Бурбалка з тэкстам"</item>
+ <item msgid="2548100558260478605">"Група людзей"</item>
+ <item msgid="2270003903304578284">"Лямпачка"</item>
+ <item msgid="4793496619091161864">"Каляндар"</item>
+ <item msgid="5673625795644364100">"Не турбаваць"</item>
+ <item msgid="1423820834865831361">"Чалавек бяжыць"</item>
+ <item msgid="2037298830718732608">"Гольф"</item>
+ <item msgid="2197835014443491074">"Трэнажорная гантэль"</item>
+ <item msgid="2730180105015616518">"Плаванне"</item>
+ <item msgid="2666922823253345958">"Чалавек у паходзе"</item>
+ <item msgid="8234880356472211396">"Чалавек кідае мяч"</item>
+ <item msgid="4642980625253001443">"Чалавек б’е нагой"</item>
+ <item msgid="4324795269518833500">"Гульнявы кантролер"</item>
+ <item msgid="7789966425125441125">"Палітра мастака"</item>
+ <item msgid="663512680597461570">"Сняжынка"</item>
+ <item msgid="7952183800501346803">"Пляжны парасон"</item>
+ <item msgid="799139025758265891">"Інструменты майстэрні"</item>
+ <item msgid="8112685757657659269">"Піяніна"</item>
+ <item msgid="3861584909935022342">"Кінаплёнка"</item>
+ <item msgid="5827426100157335512">"Кніга"</item>
+ <item msgid="8585828346253128384">"Кветка лотаса"</item>
+ <item msgid="8788370542815300188">"Розум чалавека"</item>
+ <item msgid="7287354964767553293">"Навушнікі"</item>
+ <item msgid="2530059623783800987">"Тэлевізар"</item>
+ <item msgid="5307182323469376758">"Цягнік"</item>
+ <item msgid="4903790544026923026">"Аўтамабіль"</item>
+ <item msgid="5010405583912314582">"Відэлец і нож"</item>
+ <item msgid="8939998598599064900">"Каляска для пакупак"</item>
+ <item msgid="3379605903308731893">"Дзіця"</item>
+ <item msgid="7808668968550293112">"Лапа жывёлы"</item>
+ <item msgid="1000692647524056504">"Значок зоркі"</item>
+ <item msgid="8270261073421676502">"Два чалавекі"</item>
+ <item msgid="5767782819651505460">"Зорка"</item>
+ <item msgid="4368451291862729334">"Сэрца"</item>
+ <item msgid="2613199102208419986">"Дом"</item>
+ <item msgid="3022279986430275040">"Паўмесяц"</item>
+ <item msgid="5421089790869483206">"Гадзіннік"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 8f8232b..0beef3f 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Спалучыць новую прыладу"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Аўтаматычна ўключыць заўтра"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Калі выключыць Bluetooth, ён уключыцца на наступны дзень"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Спалучыць справа"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Спалучыць злева"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Спалучыце для іншага вуха"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Адключыць Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Адключае функцыю Bluetooth LE audio, калі прылада падтрымлівае апаратнае забеспячэнне LE audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Рэжым Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Уключыць перадпрагляд інтэрфейсу для Bluetooth LE Audio Broadcast"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Уключае перадпрагляд інтэрфейсу абагульвання LE Audio, у тым ліку абагульвання асабістага аўдыя і прыватнай трансляцыі"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Паказ пераключальніка LE audio у Звестках пра прыладу"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Абыходзіць белы спіс Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Выкарыстоўваць LE Audio стандартна, нават калі перыферыйная прылада LE Audio не адпавядае крытэрыям белага спіса."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Задаваць аўтаматычна, выкарыстоўваючы сігналы сеткі і бесправадныя сігналы прылады"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Аўтавызначэнне часавага пояса"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Задаваць аўтаматычна па даных бліжэйшых мабільных сетак"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Задаваць аўтаматычна па месцазнаходжанні прылады, калі яно вызначаецца"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Выкарыстоўваць стандартныя рэгіянальныя налады"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Выкарыстоўваць 24-гадзінны фармат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Час"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Падыміце палец, потым дакраніцеся да сканера зноў"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Не ўдалося скарыстаць сканер адбіткаў пальцаў"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Звярніцеся ў сэрвісны цэнтр."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Разблакіроўка адбіткам пальца пры выключаным экране"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Разблакіроўка адбіткам пальца працуе нават пры выключаным экране"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Экран выключаны, разблакіраваць"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Іншыя налады бяспекі"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Блакіроўка працоўнага профілю, шыфраванне і іншыя дзеянні"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шыфраванне, уліковыя даныя і іншыя звесткі"</string>
@@ -1337,7 +1342,7 @@
<string name="ambient_display_screen_title" msgid="8615947016991429325">"Неактыўны рэжым экрана"</string>
<string name="ambient_display_category_triggers" msgid="1216640141609270011">"Калі паказваць"</string>
<string name="doze_title" msgid="1523090408230862316">"Абуджаць экран апавяшчэннямі"</string>
- <string name="doze_summary" msgid="8252867381522942804">"Цёмны экран уключаецца, калі прыходзяць новыя апавяшчэнні"</string>
+ <string name="doze_summary" msgid="8252867381522942804">"Калі экран цёмны, ён уключаецца, каб паказаць новыя апавяшчэнні"</string>
<string name="doze_always_on_title" msgid="7326245192352868477">"Заўсёды паказваць час і даныя"</string>
<string name="doze_always_on_summary" msgid="509097829739647852">"Павышанае выкарыстанне зараду"</string>
<string name="force_bold_text" msgid="4620929631102086716">"Паўтлусты шрыфт"</string>
@@ -1631,7 +1636,7 @@
<string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Дазвольце праграмам і сэрвісам шукаць прылады паблізу, нават калі Bluetooth выключаны. Гэту функцыю можна выкарыстоўваць для паляпшэння працы геасэрвісаў."</string>
<string name="location_services_preference_title" msgid="604317859531782159">"Службы геалакацыі"</string>
<string name="location_services_screen_title" msgid="5640002489976602476">"Службы геалакацыі"</string>
- <string name="location_time_zone_detection_toggle_title" msgid="720338048522014712">"Вызначаць часавы пояс па даным аб месцазнаходжанні"</string>
+ <string name="location_time_zone_detection_toggle_title" msgid="720338048522014712">"Вызначаць часавы пояс па даных аб месцазнаходжанні"</string>
<string name="location_time_zone_detection_status_title" msgid="8903495354385600423">"Не ўдалося задаць часавы пояс аўтаматычна"</string>
<string name="location_time_zone_detection_status_summary_degraded_by_settings" msgid="6198939835335841106"></string>
<string name="location_time_zone_detection_status_summary_blocked_by_settings" msgid="5276280770344278768">"Вызначэнне месцазнаходжання або службы геалакацыі выключаны"</string>
@@ -1950,23 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Хуткія паўторныя націсканні адной і той жа клавішы ігнаруюцца"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Ігнараванне паўторнага націскання"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Выберыце час, на працягу якога паўторныя націсканні адной і той жа клавішы будуць ігнаравацца"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 с"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 с"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 с"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 с"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 с"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 с"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Карыстальніцкае значэнне"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"карыстальніцкае значэнне"</string>
<string name="slow_keys" msgid="2891452895499690837">"Запавольванне рэакцыі на націсканне"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Адрэгулюйце час, неабходны для актывацыі націскання клавішы"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Заліпанне клавіш"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Замест таго каб утрымліваць усе клавішы са спалучэння, націскайце іх па адной"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Кнопкі мышы"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Клавішы кіравання мышшу"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Выкарыстоўваць клавішы мышшы"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Выкарыстоўвайце клавіятуру, каб кіраваць паказальнікам"</string>
- <!-- no translation found for mouse_reverse_vertical_scrolling (154907817154779952) -->
- <skip />
- <!-- no translation found for mouse_reverse_vertical_scrolling_summary (3386655598642587942) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button (3028204969091057207) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button_summary (3276638019321067902) -->
- <skip />
+ <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Адваротная прагортка мышшу"</string>
+ <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Калі прагортваць уверх, старонка будзе перамяшчацца ўніз"</string>
+ <string name="mouse_swap_primary_button" msgid="3028204969091057207">"Замена месцамі функцый левай і правай кнопак"</string>
+ <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Прызначце для левай кнопкі мышы функцыі правай"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Клавішы кіравання мышшу \"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>\""</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Каб перамясціць паказальнік мышы, скарыстайце клавішы <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Каб націснуць асноўную кнопку мышы, скарыстайце клавішу <xliff:g id="CLICK_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Каб націснуць і ўтрымліваць асноўную кнопку мышы, скарыстайце клавішу <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Каб адпусціць асноўную кнопку мышы, скарыстайце клавішу <xliff:g id="RELEASE_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Каб пераключыць рэжым гартання, скарыстайце клавішу <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>. Клавішамі <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> можна будзе гартаць уверх, уніз, улева і ўправа"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Каб націснуць дадатковую кнопку мышы, скарыстайце клавішу <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Гарачыя клавішы"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Паказаць спіс спалучэнняў клавіш"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Клавіятуры і інструменты працоўнага профілю"</string>
@@ -2035,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Выберыце новы ключ для \"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>\":"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Спецыяльныя магчымасці з выкарыстаннем фізічнай клавіятуры"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Заліпанне клавіш, ігнараванне паўторнага націскання, клавішы мышы"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Паўторны ўвод сімвала"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Затрымка перад паўторам"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Частата паўтораў"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Паўтараць увод сімвала, пакуль клавіша націснута"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Раскладка \"<xliff:g id="IME_LABEL">%s</xliff:g>\""</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Стандартная"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Аўтаматычна: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2447,8 +2454,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"Перадпрагляд"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"Стандартныя опцыі"</string>
<string name="captioning_locale" msgid="5533303294290661590">"Мова"</string>
- <!-- no translation found for captioning_text_size (5764254558945371745) -->
- <skip />
+ <string name="captioning_text_size" msgid="5764254558945371745">"Памер субцітраў"</string>
<string name="captioning_preset" msgid="4174276086501638524">"Стыль субцітраў"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"Карыстальніцкія параметры"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"Колер фону"</string>
@@ -2575,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Адрэгуляваць спажыванне энергіі"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Уключаныя пакеты"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Праграмы працуюць нармальна"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Рэкамендуецца замяніць акумулятар"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Ёмістасць акумулятара і прадукцыйнасць зарадкі знізіліся. Рэкамендуецца замяніць акумулятар."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Нізкі ўзровень зараду акумулятара"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Уключыце Эканомію зараду, каб павялічыць час працы ад акумулятара"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Павялічце час працы ад акумулятара"</string>
@@ -2992,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Адключыць гэту VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Адключыць"</string>
<string name="vpn_version" msgid="6344167191984400976">"Версія"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Версія <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Забыць VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Замяніць існуючую VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Наладзіць заўсёды ўключаную VPN?"</string>
@@ -3095,7 +3102,7 @@
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Праграмы і даныя гэтага гасцявога сеанса будуць выдалены, і ўсе будучыя звесткі пра дзеянні госця будуць выдаляцца падчас кожнага выхаду з гасцявога рэжыму"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"выдаліць, госць, актыўнасць, прыбраць, даныя, наведвальнік, сцерці даныя"</string>
<string name="enable_guest_calling" msgid="4620657197834392094">"Дазволіць госцю ажыццяўляць выклікі"</string>
- <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Госць атрымае доступ да гісторыі выклікаў."</string>
+ <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Госць атрымае доступ да гісторыі выклікаў"</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"Уключыць тэлефонныя выклікі і SMS"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"Зрабіць гэтага карыстальніка адміністратарам"</string>
<string name="user_remove_user" msgid="8468203789739693845">"Выдаліць карыстальніка"</string>
@@ -3416,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"з 9:00 да 17:00 па будных днях\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Падзеі ў календары"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Рэжым \"{mode_1}\" актыўны}=2{Рэжымы \"{mode_1}\" і \"{mode_2}\" актыўныя}=3{Рэжымы \"{mode_1}\", \"{mode_2}\" і \"{mode_3}\" актыўныя}one{Рэжымы \"{mode_1}\", \"{mode_2}\" і яшчэ # актыўныя}few{Рэжымы \"{mode_1}\", \"{mode_2}\" і яшчэ # актыўныя}many{Рэжымы \"{mode_1}\", \"{mode_2}\" і яшчэ # актыўныя}other{Рэжымы \"{mode_1}\", \"{mode_2}\" і яшчэ # актыўныя}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Можна аўтаматычна ўключыць 1 рэжым}one{Можна аўтаматычна ўключыць # рэжым}few{Можна аўтаматычна ўключыць # рэжымы}many{Можна аўтаматычна ўключыць # рэжымаў}other{Можна аўтаматычна ўключыць # рэжыму}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Не турбаваць}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}many{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"УКЛЮЧАНА"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Не зададзена"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Адключана"</string>
@@ -3720,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Калі вам будзе прыходзіць многа апавяшчэнняў за кароткі час, прылада паменшыць іх гучнасць і абмяжуе абвесткі на перыяд да 2 хвілін. Гэта не закране выклікі, будзільнікі і прыярытэтныя размовы. \n\nКаб праглядзець апавяшчэнні, атрыманыя ў перыяд зніжэння гучнасці, правядзіце пальцам уніз ад верхняга краю экрана."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Прымяніць да працоўных профіляў"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Прымяняць да праграм працоўнага профілю"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Дапаможныя VR-сэрвісы"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Усталяваныя праграмы не запытвалі выканання ў якасці дапаможных VR-сэрвісаў."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Дазволіць сэрвісу віртуальнай рэальнасці (VR) доступ да <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5466,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Слухаць плынь"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Адсканіруйце QR-код аўдыяплыні для праслухоўвання на прыладзе \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Калі ажыццяўляецца абагульванне, змяняць пароль нельга. Каб змяніць пароль, выключыце абагульванне аўдыя."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Пароль павінен змяшчаць ад 4 да 16 сімвалаў і складацца толькі з літар, лічбаў і знакаў"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Сканер QR-кодаў"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Патрабуецца дапамога?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Шукаць у наладах"</string>
@@ -5474,10 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Толькі прылада"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Новыя кантакты не будуць сінхранізавацца з уліковым запісам"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Кантакты будуць стандартна захоўвацца на прыладзе і сінхранізавацца з уліковым запісам"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Стандарт не вызначаны"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Падчас вызначэння стандартнага ўліковага запісу адбылася памылка"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Стандартны ўліковы запіс не вызначаны"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Толькі прылада"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Каб пачаць, дадайце ўліковы запіс"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Абвесці для пошуку"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Каб запусціць пошук з выкарыстаннем змесціва экрана, націсніце і ўтрымлівайце кнопку галоўнага экрана або маркер навігацыі."</string>
</resources>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
index 79c9305..b736ea3 100644
--- a/res/values-bg/arrays.xml
+++ b/res/values-bg/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Куфарче"</item>
+ <item msgid="184985872234062767">"Класическа сграда"</item>
+ <item msgid="9189550412466785530">"Жилищна сграда"</item>
+ <item msgid="2142527562511049422">"Балонче за реч"</item>
+ <item msgid="2548100558260478605">"Група хора"</item>
+ <item msgid="2270003903304578284">"Електрическа крушка"</item>
+ <item msgid="4793496619091161864">"Календар"</item>
+ <item msgid="5673625795644364100">"Не безпокойте"</item>
+ <item msgid="1423820834865831361">"Бягащ човек"</item>
+ <item msgid="2037298830718732608">"Голф"</item>
+ <item msgid="2197835014443491074">"Гира за фитнес"</item>
+ <item msgid="2730180105015616518">"Плуване"</item>
+ <item msgid="2666922823253345958">"Човек на пешеходен туризъм"</item>
+ <item msgid="8234880356472211396">"Човек, хвърлящ топка"</item>
+ <item msgid="4642980625253001443">"Ритащ човек"</item>
+ <item msgid="4324795269518833500">"Контролер за игри"</item>
+ <item msgid="7789966425125441125">"Цветова палитра на художник"</item>
+ <item msgid="663512680597461570">"Снежинка"</item>
+ <item msgid="7952183800501346803">"Плажен чадър"</item>
+ <item msgid="799139025758265891">"Инструменти за работилница"</item>
+ <item msgid="8112685757657659269">"Пиано"</item>
+ <item msgid="3861584909935022342">"Филмов видеоколаж"</item>
+ <item msgid="5827426100157335512">"Книга"</item>
+ <item msgid="8585828346253128384">"Лотос"</item>
+ <item msgid="8788370542815300188">"Човешки ум"</item>
+ <item msgid="7287354964767553293">"Слушалки"</item>
+ <item msgid="2530059623783800987">"Телевизор"</item>
+ <item msgid="5307182323469376758">"Влак"</item>
+ <item msgid="4903790544026923026">"Автомобил"</item>
+ <item msgid="5010405583912314582">"Вилица и нож"</item>
+ <item msgid="8939998598599064900">"Пазарска кошница"</item>
+ <item msgid="3379605903308731893">"Дете"</item>
+ <item msgid="7808668968550293112">"Лапа на животно"</item>
+ <item msgid="1000692647524056504">"Значка със звезда"</item>
+ <item msgid="8270261073421676502">"Двама души"</item>
+ <item msgid="5767782819651505460">"Звезда"</item>
+ <item msgid="4368451291862729334">"Сърце"</item>
+ <item msgid="2613199102208419986">"Къща"</item>
+ <item msgid="3022279986430275040">"Полумесец"</item>
+ <item msgid="5421089790869483206">"Часовник"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index c580331..5b41ecd 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Сдвояване на ново устройство"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Автоматично включване утре"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Дясно ухо: Сдвояване"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Ляво ухо: Сдвояване"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Сдвояване на другото ухо"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Деактивиране на Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Деактивира Bluetooth LE Audio, ако устройството поддържа хардуер с възможност за LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Режим за Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Активиране на визуализацията на потребителския интерфейс за предаване чрез Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Активира визуализацията на потребителския интерфейс за споделяне чрез LE Audio, включително споделяне на персонално аудио и частно предаване"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Показване на превключват. за LE Audio в подробн. за у-вото"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Заобикаляне на списъка на разрешените устройства с Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Използване на LE Audio по подразбиране дори ако не е потвърдено, че периферното устройство с LE Audio отговаря на критериите на списъка на разрешените устройства."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Автоматично задаване чрез мрежата и безжичните сигнали"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Автоматична часова зона"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Автоматично задаване въз основа на мобилните мрежи в близост до вас"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Автоматично задаване чрез местоположението на устройството ви, ако е налице"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Използване на стандартния формат за локала"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-часов формат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Час"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Вдигнете пръста, след което докоснете сензора отново"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Сензорът за отпечатъци не може да се използва"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Посетете оторизиран сервиз."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Отключване с отпечатък при изключен екран"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Използване на функцията за отключване с отпечатък дори когато екранът е изключен"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Изключен екран, отключване"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Още настройки за сигурност"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Заключване на служебен потребителски профил, шифроване и др."</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифроване, идентификационни данни и др."</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Клавиатурата игнорира бързите повтарящи се натискания на един и същ клавиш"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Игнор. на многокр. натискане (праг)"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Изберете периода от време, през който клавиатурата ви ще игнорира повтарящите се натискания на даден клавиш"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 сек"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 сек"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 сек"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 сек"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 сек"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 сек"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Персонализирано"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"персонализирана стойност"</string>
<string name="slow_keys" msgid="2891452895499690837">"Забавяне на сигнала от клавишите"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Коригира времето, необходимо за активиране след натискане на даден клавиш"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Фиксирани клавиши"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Натискайте клавишите от съответните комбинации един по един, вместо да ги задържате заедно"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Бутони на мишката"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Използване на бутоните на мишката"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Използвайте клавиатурата, за да управлявате курсора"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Обратно превъртане с мишката"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Превъртете нагоре, за да преместите страницата надолу"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Размяна на левия и десния бутон"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Използвайте левия бутон на мишката като десен"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Бутони на мишката за <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Използвайте клавишите <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>, за да местите курсора на мишката"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Използвайте клавиша <xliff:g id="CLICK_LABEL">%s</xliff:g>, за да кликнете с основния бутон на мишката"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Използвайте клавиша <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>, за да натиснете и задържите основния бутон на мишката"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Използвайте клавиша <xliff:g id="RELEASE_LABEL">%s</xliff:g>, за да освободите основния бутон на мишката"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Използвайте клавиша <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>, за да превключвате режима на превъртане. По този начин клавишите <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ще превключват изгледа нагоре, надолу, наляво или надясно"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Използвайте клавиша <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>, за да кликнете с вторичния бутон на мишката"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Клавишни комбинации"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Показване на списък с клавишните комбинации"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Клавиатури и инструменти за служебния потр. профил"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Изберете нов ключ за <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Достъпност чрез физическата клавиатура"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Фиксирани клавиши, игнориране на многократни натискания, бутони на мишката"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Повтаряне на клавишите"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Забавяне преди повтаряне"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Честота на повторение"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Задържане на клавиш с цел повтаряне на съответния знак, докато клавишът не бъде пуснат"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Подредба: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"По подразбиране"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автоматично: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2237,7 +2249,7 @@
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"Докоснете бутона за достъпност <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> в долната част на екрана. За превключване между функциите докоснете и задръжте бутона за достъпност."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Плъзнете пръст нагоре от долната част на екрана. За превключване между функциите плъзнете пръст нагоре и задръжте.}other{Плъзнете # пръста нагоре от долната част на екрана. За превключване между функциите плъзнете # пръста нагоре и задръжте.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"Още опции"</annotation></string>
- <string name="footer_learn_more_content_description" msgid="8843798273152131341">"Научете повече за <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
+ <string name="footer_learn_more_content_description" msgid="8843798273152131341">"Научете повече за: <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"Бързи настройки"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{Плъзнете пръст надолу от горната част на екрана}other{Плъзнете # пръста надолу от горната част на екрана}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{Плъзнете пръст надолу от горната част на екрана. Този пряк път ще бъде налице, след като завършите настройването на устройството.}other{Плъзнете # пръста надолу от горната част на екрана. Този пряк път ще бъде налице, след като завършите настройването на устройството.}}"</string>
@@ -2413,7 +2425,7 @@
<string name="accessibility_summary_state_disabled" msgid="9173234532752799694">"Изкл."</string>
<string name="accessibility_summary_state_stopped" msgid="2343602489802623424">"Услугата не работи. Докоснете за информация."</string>
<string name="accessibility_description_state_stopped" msgid="5364752492861199133">"Услугата не функционира правилно."</string>
- <string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"Преки пътища към достъпността"</string>
+ <string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"Преки пътища за достъпност"</string>
<string name="enable_quick_setting" msgid="6648073323202243604">"Показване в „Бързи настройки“"</string>
<string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Червено-зелено, нарушено възприем. на зелено"</string>
<string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Червено-зелено, нарушено възприем. на червено"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Настройване на захранването"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Включени пакети"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Приложенията работят нормално"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Препоръчва се подмяна на батерията"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Капацитетът на батерията и ефективността на зареждане са намалени. Препоръчва се подмяна на батерията."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Нивото на батерията е ниско"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Включете режима за запазване на батерията, за да удължите живота ѝ"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Удължаване на живота на батерията"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Да се прекрати ли връзката с тази виртуална частна мрежа (VPN)?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Прекратяване на връзката"</string>
<string name="vpn_version" msgid="6344167191984400976">"Версия"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Версия <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Забравяне на вирт. частна мрежа (VPN)"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Да се замени ли съществуващата VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Да се зададе ли винаги включена виртуална частна мрежа (VPN)?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„9:00 – 17:00 ч. в делнични дни“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Събития в календара"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Режимът „{mode_1}“ е активен}=2{Режимите „{mode_1}“ и „{mode_2}“ са активни}=3{Режимите „{mode_1}“, „{mode_2}“ и „{mode_3}“ са активни}other{Режимите „{mode_1}“, „{mode_2}“ и още # са активни}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режим може да се включва автоматично}other{# режима могат да се включват автоматично}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Не безпокойте}=1{{mode_1}}=2{{mode_1} и {mode_2}}other{{mode_1}, {mode_2} и {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ВКЛ."</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Не е зададено"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Деактивирано"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Когато получавате много известия за кратък период от време, устройството ви ще намали силата на звука си и ще сведе до минимум сигналите за период до две минути. Обажданията, будилниците и разговорите с приоритет няма да бъдат засегнати. \n\nПолучените по време на периода на изчакване известия могат да бъдат намерени, като плъзнете надолу от горната част на екрана."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Прилагане към служебните потребителски профили"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Прилагане за приложенията в служебния потребителски профил"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Помощни услуги за VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Никое инсталирано приложение не е заявило да се изпълнява като помощна услуга за VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Искате ли <xliff:g id="SERVICE">%1$s</xliff:g> да има достъп като услуга за VR?"</string>
@@ -5028,7 +5051,7 @@
<string name="system_default_app_subtext" msgid="5212055189703164839">"Стандартно за системата"</string>
<string name="default_app_none" msgid="5420632042222036264">"Няма"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"Този избор вече не е валиден. Опитайте отново."</string>
- <string name="power_menu_setting_name" msgid="2394440932633137229">"Натиснете и задръжте бутона за захранване"</string>
+ <string name="power_menu_setting_name" msgid="2394440932633137229">"Натискане и задържане на бутона за захранване"</string>
<string name="power_menu_long_press_category_title" msgid="1051146091093775002">"За достъп натиснете и задръжте бутона за захранване"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Меню за включване/изключване"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Дигитален асистент"</string>
@@ -5271,7 +5294,7 @@
<string name="aspect_ratio_summary" msgid="4056406351663726494">"Изпробвайте ново съотношение за показване на това приложение, ако то не е оптимизирано за устройството ви <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Изпробвайте ново съотношение за показване на това приложение, ако то не е оптимизирано за устройството ви <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Някои приложения може да не са оптимизирани за определени съотношения."</string>
<string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Изпробвайте ново съотношение за показване на приложение, ако то не е оптимизирано за устройството ви <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Изпробвайте ново съотношение за показване на приложение, ако то не е оптимизирано за устройството ви <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Някои приложения може да не са оптимизирани за определени съотношения."</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Изпробвайте ново съотношение за показване на приложение, ако то не е оптимизирано за устройството ви <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Някои приложения може да не са оптимизирани за определени съотношения."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"Предложени приложения"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"Промен. прил."</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Стандартно за приложението"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Слушане на потока"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Сканирайте QR кода за даден аудиопоток, за да го слушате на <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Паролата не може да се редактира по време на споделяне. За да я промените, първо изключете функцията за споделяне на звука."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Паролата ви трябва да съдържа 4 – 16 знака и могат да се използват само букви, цифри и символи"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Скенер за QR кодове"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Нуждаете се от помощ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Търсене в настройките"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Само на устройството"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Новите контакти няма да се синхронизират с профил"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"По подразбиране контактите ще се запазват на устройството ви и ще се синхронизират с профила ви"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Няма профил по подразбиране"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Грешка при задаването на стандартния профил"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Няма стандартен профил"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Само чрез устройството"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"За да започнете, добавете профил"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Търсене с ограждане"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Докоснете и задръжте бутона „Начало“ или манипулатора за навигация, за да потърсите съдържанието на екрана."</string>
</resources>
diff --git a/res/values-bn/arrays.xml b/res/values-bn/arrays.xml
index 7cfa000..d260c02 100644
--- a/res/values-bn/arrays.xml
+++ b/res/values-bn/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ব্রিফকেস"</item>
+ <item msgid="184985872234062767">"ক্লাসিক্যাল বিল্ডিং"</item>
+ <item msgid="9189550412466785530">"অ্যাপার্টমেন্ট বিল্ডিং"</item>
+ <item msgid="2142527562511049422">"স্পিচ বাবল"</item>
+ <item msgid="2548100558260478605">"লোকজনের গ্রুপ"</item>
+ <item msgid="2270003903304578284">"লাইট বাল্ব"</item>
+ <item msgid="4793496619091161864">"ক্যালেন্ডার"</item>
+ <item msgid="5673625795644364100">"বিরক্ত করবে না"</item>
+ <item msgid="1423820834865831361">"দৌড়াচ্ছেন এমন ব্যক্তি"</item>
+ <item msgid="2037298830718732608">"গল্ফ খেলা"</item>
+ <item msgid="2197835014443491074">"জিম ডাম্বেল"</item>
+ <item msgid="2730180105015616518">"সাঁতার কাটা"</item>
+ <item msgid="2666922823253345958">"হাইকিং করছেন এমন ব্যক্তি"</item>
+ <item msgid="8234880356472211396">"বল ছুঁড়ছেন এমন ব্যক্তি"</item>
+ <item msgid="4642980625253001443">"কিক মারছেন এমন ব্যক্তি"</item>
+ <item msgid="4324795269518833500">"গেম কন্ট্রোলার"</item>
+ <item msgid="7789966425125441125">"শিল্পীর জন্য রঙের প্যালেট"</item>
+ <item msgid="663512680597461570">"বরফের কণা"</item>
+ <item msgid="7952183800501346803">"বিচ আমব্রেলা"</item>
+ <item msgid="799139025758265891">"ওয়ার্কশপ টুল"</item>
+ <item msgid="8112685757657659269">"পিয়ানো"</item>
+ <item msgid="3861584909935022342">"ফিল্ম রিল"</item>
+ <item msgid="5827426100157335512">"বই"</item>
+ <item msgid="8585828346253128384">"পদ্ম ফুল"</item>
+ <item msgid="8788370542815300188">"ব্যক্তির মন"</item>
+ <item msgid="7287354964767553293">"হেডফোন"</item>
+ <item msgid="2530059623783800987">"টিভি"</item>
+ <item msgid="5307182323469376758">"ট্রেন"</item>
+ <item msgid="4903790544026923026">"গাড়ি"</item>
+ <item msgid="5010405583912314582">"কাঁটা চামচ ও ছুরি"</item>
+ <item msgid="8939998598599064900">"শপিং কার্ট"</item>
+ <item msgid="3379605903308731893">"বাচ্চা"</item>
+ <item msgid="7808668968550293112">"পশুর পাঞ্জা"</item>
+ <item msgid="1000692647524056504">"স্টার ব্যাজ"</item>
+ <item msgid="8270261073421676502">"দুজন ব্যক্তি"</item>
+ <item msgid="5767782819651505460">"স্টার"</item>
+ <item msgid="4368451291862729334">"হার্ট"</item>
+ <item msgid="2613199102208419986">"বাড়ি-ঘর"</item>
+ <item msgid="3022279986430275040">"হাফ-মুন"</item>
+ <item msgid="5421089790869483206">"ঘড়ি"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index d701343..2f95e3e 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"নতুন ডিভাইস পেয়ার করুন"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ব্লুটুথ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"আগামীকাল অটোমেটিক চালু হয়ে যাবে"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"আপনি ব্লুটুথ বন্ধ করে দিলে, পরের দিন সেটি আবার চালু হয়ে যায়"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ডান কানে পেয়ার করুন"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"বাঁ কানে পেয়ার করুন"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"অন্য হিয়ারিং এড পেয়ার করুন"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ব্লুটুথ LE অডিও বন্ধ করুন"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ডিভাইসে LE অডিও হার্ডওয়্যার কাজ করলে, ব্লুটুথ LE অডিও ফিচার বন্ধ করে।"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ব্লুটুথ LE অডিও মোড"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ব্লুটুথ LE অডিও ব্রডকাস্ট UI প্রিভিউ চালু করুন"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"LE অডিও শেয়ারিং প্রিভিউ সহ ব্যক্তিগত অডিও শেয়ারিং এবং ব্যক্তিগত ব্রডকাস্ট চালু করে"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ডিভাইসের বিবরণে LE অডিও টগল দেখুন"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ব্লুটুথ LE অডিও-এর সাদাতালিকা বাইপাস করুন"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE অডিও-এর সাদাতালিকার শর্ত পূর্ণ করতে LE অডিও-এর পেরিফেরাল যাাচাই করা না হলেও ডিফল্ট হিসেবে LE অডিও ব্যবহার করুন।"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"আপনার নেটওয়ার্ক ও ওয়্যারলেস সিগন্যাল ব্যবহার করে অটোমেটিক সেট করুন"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"অটোমেটিক টাইম জোন"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"আপনার কাছাকাছি মোবাইল নেটওয়ার্কের উপর নির্ভর করে অটোমেটিক সেট করুন"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"উপলভ্য থাকলে, আপনার ডিভাইসের লোকেশন ব্যবহার করে অটোমেটিক সেট করুন"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"লোকেল ডিফল্ট ব্যবহার করুন"</string>
<string name="date_time_24hour" msgid="286679379105653406">"২৪ ঘন্টার ফর্ম্যাট ব্যবহার করুন"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"সময়"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"আঙ্গুল তুলুন, তারপরে আবার সেন্সরে স্পর্শ করুন"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ফিঙ্গারপ্রিন্ট সেন্সর ব্যবহার করা যাচ্ছে না"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"এটি সারাতে পারবেন এমন কারওর কাছে যান।"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"স্ক্রিন-বন্ধ থাকা অবস্থায় \'ফিঙ্গারপ্রিন্ট আনলক\' ফিচার ব্যবহার করুন"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"\'ফিঙ্গারপ্রিন্ট আনলক\' ফিচার ব্যবহার করুন, এমনকি স্ক্রিন বন্ধ করা থাকলেও"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"স্ক্রিন-বন্ধ, আনলক করুন"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"আরও নিরাপত্তা সেটিংস"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"অফিস প্রোফাইল লক, এনক্রিপশন এবং আরও অনেক কিছু"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"এনক্রিপশন, ক্রেডেনশিয়াল এবং আরও অনেক কিছু"</string>
@@ -1303,7 +1308,7 @@
<string name="dark_ui_summary_on_auto_mode_custom" msgid="2526935680241734784">"<xliff:g id="ID_1">%1$s</xliff:g> টার সময় নিজে থেকে বন্ধ হবে"</string>
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"ঘুমানোর সময় অটোমেটিক বন্ধ হয়ে যাবে"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"<xliff:g id="ID_1">%1$s</xliff:g> শেষ হলে বন্ধ হবে"</string>
- <string name="dark_ui_text" msgid="4392646155331126666">"ব্যাটারি যাতে অনেক্ষণ চলতে পারে সেই জন্য গাঢ় থিম কিছু স্ক্রিনে কালো রঙয়ের ব্যাকগ্রাউন্ড ব্যবহার করে। গাঢ় থিমের সময়সূচি আপনার স্ক্রিনটি বন্ধ না হওয়া পর্যন্ত চালু হওয়ার জন্য অপেক্ষা করে।"</string>
+ <string name="dark_ui_text" msgid="4392646155331126666">"ব্যাটারি যাতে অনেকক্ষণ চলতে পারে সেই জন্য গাঢ় থিম কিছু স্ক্রিনে কালো রঙয়ের ব্যাকগ্রাউন্ড ব্যবহার করে। গাঢ় থিমের সময়সূচি আপনার স্ক্রিনটি বন্ধ না হওয়া পর্যন্ত চালু হওয়ার জন্য অপেক্ষা করে।"</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"ডার্ক থিম বর্তমানে আপনার বেডটাইম মোডের শিডিউল অনুযায়ী চালু বা বন্ধ হয়"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"বেডটাইম মোডের সেটিংস"</string>
<string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{এছাড়া, মোড, ডার্ক থিম চালু করতে পারে}=1{এছাড়া, {mode_1} ডার্ক থিম চালু করে}=2{এছাড়া, {mode_1} ও {mode_2} ডার্ক থিম চালু করে}=3{এছাড়া, {mode_1}, {mode_2} ও {mode_3} ডার্ক থিম চালু করে}one{{mode_1}, {mode_2} ও আরও #টি মোড ডার্ক থিম চালু করে}other{{mode_1}, {mode_2} ও আরও #টি মোড ডার্ক থিম চালু করে}}"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"একই \'কী\' দ্রুত বারবার প্রেস করলে কীবোর্ড তা উপেক্ষা করে"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"বাউন্স কী থ্রেশহোল্ড"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"আপনার কীবোর্ড কতক্ষণ পর্যন্ত কোনও একটি \'কী\' বারবার প্রেস করার ঘটনাকে উপেক্ষা করে সেই সময়সীমা বেছে নিন"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"০.২ সেকেন্ড"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"০.৪ সেকেন্ড"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"০.৬ সেকেন্ড"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"০.২ সেকেন্ড"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"০.৪ সেকেন্ড"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"০.৬ সেকেন্ড"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"কাস্টম"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"কাস্টম ভ্যালু"</string>
<string name="slow_keys" msgid="2891452895499690837">"স্লো \'কী\'"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"কোনও কী প্রেস করলে সেটি অ্যাক্টিভেট হতে যে সময় লাগে তা অ্যাডজাস্ট করে নেয়"</string>
<string name="sticky_keys" msgid="7317317044898161747">"স্টিকি \'কী\'"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"শর্টকাটের জন্য কীগুলি একসাথে ধরে রাখার পরিবর্তে একবারে একটি কী প্রেস করুন"</string>
<string name="mouse_keys" msgid="6237254627808525540">"মাউস \'কী\'"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"মাউস \'কী\' ব্যবহার করুন"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"পয়েন্টার নিয়ন্ত্রণ করতে আপনার কীবোর্ড ব্যবহার করুন"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"মাউস উল্টো দিকে স্ক্রল করা"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"পৃষ্ঠা নিচের দিকে নামাতে উপরের দিকে স্ক্রল করুন"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"বাঁদিক ও ডানদিকের বোতাম অদলবদল করুন"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"মাউসের বাঁদিকের বোতামটিকে ডানদিকের বোতাম হিসেবে ব্যবহার করুন"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>-এর জন্য মাউস \'কী\'"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"মাউস পয়েন্টার সরাতে <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> \'কী\' ব্যবহার করুন"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"প্রাথমিক মাউসের বোতাম ক্লিক করতে, <xliff:g id="CLICK_LABEL">%s</xliff:g> \'কী\' ব্যবহার করুন"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"প্রাথমিক মাউসের বোতাম প্রেস করে ধরে রাখতে, <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> \'কী\' ব্যবহার করুন"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"প্রাথমিক মাউসের রিলিজ করতে, <xliff:g id="RELEASE_LABEL">%s</xliff:g> \'কী\' ব্যবহার করুন"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"স্ক্রল মোড টগল করতে, <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> \'কী\' ব্যবহার করুন। এর ফলে <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> \'কী\' ব্যবহার করে উপরে, নিচে, বাঁদিকে অথবা ডানদিকে স্ক্রল করে দেখা যাবে"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"সেকেন্ডারি মাউসের বোতাম ক্লিক করতে, <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> \'কী\' ব্যবহার করুন"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"কীবোর্ড শর্টকাট"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"শর্টকাটের তালিকা দেখান"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"অফিসের প্রোফাইলের কীবোর্ড ও টুল"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>-এর জন্য নতুন \'কী\' বেছে নিন:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ফিজিক্যাল কীবোর্ডের অ্যাক্সেসিবিলিটি"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"স্টিকি কী, বাউন্স কী, মাউস কী"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"\'কী\' রিপিট করুন"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"রিপিট হওয়ার আগে বিলম্ব"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"রিপিটের হার"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"\'কী\' রিলিজ না হওয়া পর্যন্ত কোনও \'কী\'-এর অক্ষর রিপিট করতে সেই \'কী\' প্রেস করে ধরে থাকুন"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> লেআউট"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ডিফল্ট"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"অটোমেটিক: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"বিদ্যুতের ব্যবহার সামঞ্জস্য করুন"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"অন্তর্ভুক্ত প্যাকেজগুলি"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"অ্যাপগুলি স্বাভাবিকভাবে কাজ করছে"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ব্যাটারি পাল্টানোর জন্য সাজেস্ট করা হয়েছে"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ব্যাটারির ক্ষমতা ও চার্জিং পারফর্ম্যান্স কমে গেছে এবং ব্যাটারি পাল্টানোর জন্য সাজেস্ট করা হয়েছে।"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ব্যাটারির লেভেল কমে গেছে"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ব্যাটারির আয়ু বাড়াতে ব্যাটারি সেভার চালু করুন"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ব্যাটারির আয়ু বাড়ান"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"এই VPN থেকে ডিসকানেক্ট করবেন?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ডিসকানেক্ট করুন"</string>
<string name="vpn_version" msgid="6344167191984400976">"ভার্সন"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ভার্সন <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN সরিয়ে দিন"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"বিদ্যমান VPN প্রতিস্থাপন করতে চান?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"সর্বদা-চালু VPN সেট করতে চান?"</string>
@@ -3089,7 +3101,7 @@
<string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"অতিথি অ্যাক্টিভিটি মুছবেন?"</string>
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"এই অতিথি সেশন থেকে এখন অ্যাপ এবং ডেটা মুছে দেওয়া হবে ও আপনি প্রত্যেকবার \'অতিথি মোড\' ছেড়ে বেরিয়ে আসার সময় পরবর্তী সব অতিথি অ্যাক্টিভিটি মুছে যাবে"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"মোছা, অতিথি, অ্যাক্টিভিটি, সরানো, ডেটা, দর্শক, মোছা"</string>
- <string name="enable_guest_calling" msgid="4620657197834392094">"গেস্টদের ফোন কল করতে দিন"</string>
+ <string name="enable_guest_calling" msgid="4620657197834392094">"অতিথিদের ফোন কল করতে দিন"</string>
<string name="enable_guest_calling_summary" msgid="4748224917641204782">"কলের ইতিহাস এই অতিথির সাথে শেয়ার করা হবে"</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"ফোন কল এবং এসএমএস চালু করবেন?"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"এই ব্যবহারকারীকে অ্যাডমিন করুন"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"কাজের দিন ৯ AM - ৫ PM\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"ক্যালেন্ডার ইভেন্ট"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} চালু আছে}=2{{mode_1} ও {mode_2} চালু আছে}=3{{mode_1}, {mode_2} ও {mode_3} চালু আছে}one{{mode_1}, {mode_2} ও আরও #টি মোড চালু আছে}other{{mode_1}, {mode_2} ও আরও #টি মোড চালু আছে}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{১টি মোড অটোমেটিক চালু হতে পারে}one{#টি মোড অটোমেটিক চালু হতে পারে}other{#টি মোড অটোমেটিক চালু হতে পারে}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{বিরক্ত করবে না}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"চালু আছে"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"সেট করা নেই"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"বন্ধ করা হয়েছে"</string>
@@ -3686,10 +3698,10 @@
<string name="nls_feature_read_title" msgid="7629713268744220437">"আপনার বিজ্ঞপ্তি পড়তে পারে"</string>
<string name="nls_feature_read_summary" msgid="1064698238110273593">"এটি আপনার পরিচিতি, মেসেজ ও ফটোর মতো ব্যক্তিগত তথ্য সহ বিজ্ঞপ্তি পড়তে পারে।"</string>
<string name="nls_feature_reply_title" msgid="7925455553821362039">"এটি মেসেজের উত্তর দিতে পারে"</string>
- <string name="nls_feature_reply_summary" msgid="4492543411395565556">"এটি বিজ্ঞপ্তি স্নুজ বা বাতিল করা ও কলের উত্তর দেওয়া সহ বিজ্ঞপ্তিতে দেখানো বোতামের উপর অ্যাকশন এবং মেসেজের উত্তর দিতে পারে।"</string>
+ <string name="nls_feature_reply_summary" msgid="4492543411395565556">"এটি বিজ্ঞপ্তি স্নুজ বা বাতিল করা ও কলের উত্তর দেওয়া সহ বিজ্ঞপ্তিতে দেখানো বোতামের উপর অ্যাকশন নিতে এবং মেসেজের উত্তর দিতে পারে।"</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"এটি সেটিংসে পরিবর্তন করতে পারে"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"এটি \'বিরক্ত করবে না\' চালু বা বন্ধ করতে এবং সেই সম্পর্কিত সেটিংসে পরিবর্তন করতে পারে।"</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"এটি মোড ম্য়ানেজ করে চালু করতে ও সম্পর্কিত সেটিংস পরিবর্তন করতে পারে।"</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"এটি মোড ম্যানেজ করে চালু করতে ও সম্পর্কিত সেটিংস পরিবর্তন করতে পারে।"</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"আপনি <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>-এর জন্য বিজ্ঞপ্তির অ্যাক্সেস বন্ধ করলে, \'বিরক্ত করবে না\'-এর অ্যাক্সেসও বন্ধ হয়ে যেতে পারে৷"</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"আপনি যদি <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>-এর জন্য বিজ্ঞপ্তির অ্যাক্সেস বন্ধ করেন, মোডের অ্যাক্সেসও বন্ধ হতে পারে।"</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"বন্ধ করুন"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"আপনি অল্প সময়ের মধ্যে একসঙ্গে অনেকগুলি বিজ্ঞপ্তি পেলে আপনার ডিভাইস নিজের ভলিউম এবং সতর্কবার্তা সর্বাধিক ২ মিনিটের জন্য কমিয়ে দেবে। কল, অ্যালার্ম ও গুরুত্বপূর্ণ কথোপকথনের উপরে এর কোনও প্রভাব পড়ে না। \n\nস্ক্রিনের একেবারে উপর থেকে নিচের দিকে টেনে নামালে কুলডাউনের সময়ে পাওয়া বিজ্ঞপ্তি দেখতে পাওয়া যায়।"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"অফিস প্রোফাইলে প্রয়োগ করুন"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"অফিস প্রোফাইল অ্যাপে প্রয়োগ করুন"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"ভিআর(VR) সহায়তাকারী পরিষেবা"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"VR সহায়তাকারী পরিষেবা হিসেবে চলার জন্য কোনও অ্যাপ ইনস্টল করা নেই৷"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> এর জন্য (ভিআর)VR পরিষেবার অ্যাক্সেসের অনুমতি দেবেন?"</string>
@@ -3830,7 +3852,7 @@
<string name="zen_mode_calls" msgid="7653245854493631095">"কল"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"কল"</string>
<string name="zen_mode_calls_header" msgid="8379225445095856726">"যে কলগুলি \'বিরক্ত করবে না\' মোড এড়িয়ে নিজের কাজ করতে পারে"</string>
- <string name="zen_mode_calls_footer" msgid="2008079711083701243">"কল আসলে রিং বাজবে কিনা তা নিশ্চিত করতে ডিভাইসটি রিং হওয়ার মোডে সেট করা আছে কিনা"</string>
+ <string name="zen_mode_calls_footer" msgid="2008079711083701243">"কল আসলে রিং বাজবে কিনা তা নিশ্চিত করতে ডিভাইসটি রিং হওয়ার মোডে সেট করা আছে কিনা দেখুন"</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>’-এর জন্য ইনকামিং কল ব্লক করা হয়েছে। আপনার বন্ধুবান্ধব, পরিবারের সদস্য অথবা অন্য পরিচিতিরা যাতে আপনার সাথে যোগাযোগ করতে পারেন তার জন্য আপনি সেটিংস অ্যাডজাস্ট করে নিতে পারেন।"</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"তারা চিহ্নিত পরিচিতি"</string>
<string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{কেউ নেই}=1{{contact_1}}=2{{contact_1} এবং {contact_2}}=3{{contact_1}, {contact_2} এবং {contact_3}}one{{contact_1}, {contact_2} এবং অন্যান্য #জন}other{{contact_1}, {contact_2} এবং অন্যান্য #জন}}"</string>
@@ -3888,7 +3910,7 @@
<string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"অ্যাপ যোগ করুন"</string>
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"সব বিজ্ঞপ্তি"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"কিছু বিজ্ঞপ্তি"</string>
- <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"এমনকী আপনি অ্যাপগুলিকে বিরক্ত করতে না দিলেও বেছে নেওয়া লোকজন আপনার সাথে যোগাযোগ করতে পারবেন"</string>
+ <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"আপনি অ্যাপগুলিকে বিরক্ত করতে না দিলেও বেছে নেওয়া লোকজন আপনার সাথে যোগাযোগ করতে পারবেন"</string>
<string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{কোনও অ্যাপই বাধা দিতে পারবে না}=1{{app_1} বাধা দিতে পারবে}=2{{app_1} ও {app_2} বাধা দিতে পারবে}=3{{app_1}, {app_2} ও {app_3} বাধা দিতে পারবে}one{{app_1}, {app_2}, ও #টি অ্যাপ বাধা দিতে পারবে}other{{app_1}, {app_2}, ও #টি অ্যাপ বাধা দিতে পারবে}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"অ্যাপ"</string>
<string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"যে বিজ্ঞপ্তিগুলি \'বিরক্ত করবে না\' মোড এড়িয়ে নিজের কাজ করতে পারে"</string>
@@ -4597,7 +4619,7 @@
<string name="app_info_storage_title" msgid="4076977173803093808">"স্টোরেজ ব্যবহার হয়েছে"</string>
<string name="webview_uninstalled_for_user" msgid="627352948986275488">"(ইউজার <xliff:g id="USER">%s</xliff:g> এর জন্য আনইনস্টল হয়েছে)"</string>
<string name="webview_disabled_for_user" msgid="5809886172032644498">"(ইউজার <xliff:g id="USER">%s</xliff:g> এর জন্য অক্ষম হয়েছে)"</string>
- <string name="autofill_app" msgid="7595308061826307921">"আটোফিল পরিষেবা"</string>
+ <string name="autofill_app" msgid="7595308061826307921">"অটোফিল পরিষেবা"</string>
<string name="default_autofill_app" msgid="372234803718251606">"ডিফল্ট অটোফিল পরিষেবা"</string>
<string name="autofill_passwords" msgid="6708057251459761083">"পাসওয়ার্ড"</string>
<string name="credman_chosen_app_title" msgid="7735183808067729319">"পছন্দের পরিষেবা"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"স্ট্রিম শুনুন"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-এর মাধ্যমে শুনতে অডিও স্ট্রিম QR কোড স্ক্যান করুন"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"শেয়ারিং চলাকালীন পাসওয়ার্ড এডিট করতে পারবেন না। পাসওয়ার্ড পরিবর্তন করতে, প্রথমে অডিও শেয়ারিং বন্ধ করুন।"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"আপনার পাসওয়ার্ডে অবশ্যই ৪-১৬টি অক্ষর থাকতে হবে এবং শুধু বর্ণ, সংখ্যা ও চিহ্ন ব্যবহার করতে হবে"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR কোড স্ক্যানার"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"সাহায্য প্রয়োজন?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"সেটিংস সার্চ করুন"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"শুধুমাত্র ডিভাইস"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"অ্যাকাউন্টের সাথে নতুন পরিচিতি সিঙ্ক হবে না"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"সাধারণত, পরিচিতি আপনার ডিভাইসে সেভ হবে এবং আপনার অ্যাকাউন্টের সাথে সিঙ্ক হবে"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"কোনও ডিফল্ট অ্যাকাউন্ট সেট করা নেই"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ডিফল্ট অ্যাকাউন্ট সেট করার সময় কোনও সমস্যা হয়েছে"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"কোনও ডিফল্ট অ্যাকাউন্ট সেট করা নেই"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"শুধুমাত্র ডিভাইস"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"শুরু করতে একটি অ্যাকাউন্ট যোগ করুন"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"খোঁজার জন্য সার্কেল বানান"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"আপনার স্ক্রিনে কন্টেন্ট ব্যবহার করে সার্চ করতে হোম বোতাম বা নেভিগেশন হ্যান্ডেল টাচ করে ধরে রাখুন।"</string>
</resources>
diff --git a/res/values-bs/arrays.xml b/res/values-bs/arrays.xml
index dcf6051..7fc43fb 100644
--- a/res/values-bs/arrays.xml
+++ b/res/values-bs/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktovka"</item>
+ <item msgid="184985872234062767">"Klasična zgrada"</item>
+ <item msgid="9189550412466785530">"Stambena zgrada"</item>
+ <item msgid="2142527562511049422">"Govorni oblačić"</item>
+ <item msgid="2548100558260478605">"Grupa osoba"</item>
+ <item msgid="2270003903304578284">"Sijalica"</item>
+ <item msgid="4793496619091161864">"Kalendar"</item>
+ <item msgid="5673625795644364100">"Ne ometaj"</item>
+ <item msgid="1423820834865831361">"Osoba trči"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Bučica za teretanu"</item>
+ <item msgid="2730180105015616518">"Plivanje"</item>
+ <item msgid="2666922823253345958">"Osoba pješači"</item>
+ <item msgid="8234880356472211396">"Osoba baca loptu"</item>
+ <item msgid="4642980625253001443">"Osoba udara"</item>
+ <item msgid="4324795269518833500">"Kontroler za igre"</item>
+ <item msgid="7789966425125441125">"Slikarska paleta"</item>
+ <item msgid="663512680597461570">"Pahuljica"</item>
+ <item msgid="7952183800501346803">"Suncobran"</item>
+ <item msgid="799139025758265891">"Alati radionice"</item>
+ <item msgid="8112685757657659269">"Klavir"</item>
+ <item msgid="3861584909935022342">"Filmska traka"</item>
+ <item msgid="5827426100157335512">"Knjiga"</item>
+ <item msgid="8585828346253128384">"Cvijet lotosa"</item>
+ <item msgid="8788370542815300188">"Um osobe"</item>
+ <item msgid="7287354964767553293">"Slušalice"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Voz"</item>
+ <item msgid="4903790544026923026">"Automobil"</item>
+ <item msgid="5010405583912314582">"Viljuška i nož"</item>
+ <item msgid="8939998598599064900">"Kolica za kupovinu"</item>
+ <item msgid="3379605903308731893">"Dijete"</item>
+ <item msgid="7808668968550293112">"Šapa"</item>
+ <item msgid="1000692647524056504">"Značka sa zvjezdicom"</item>
+ <item msgid="8270261073421676502">"Dvije osobe"</item>
+ <item msgid="5767782819651505460">"Zvijezda"</item>
+ <item msgid="4368451291862729334">"Srce"</item>
+ <item msgid="2613199102208419986">"Kuća"</item>
+ <item msgid="3022279986430275040">"Polumjesec"</item>
+ <item msgid="5421089790869483206">"Sat"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 43c643d..3f50651 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Uparite novi uređaj"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatski uključi sutra"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Ako isključite Bluetooth, uključit će se ponovo sljedećeg dana"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Upari desno uho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Upari lijevo uho"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Uparite drugo uho"</string>
@@ -113,13 +114,15 @@
<string name="bluetooth_pairing_page_title" msgid="3403981358823707692">"Uparite novi uređaj"</string>
<string name="bluetooth_disable_a2dp_hw_offload" msgid="5942913792817797541">"Onemogući rasterećenje Bluetootha A2DP"</string>
<string name="bluetooth_disable_le_audio_hw_offload" msgid="4656853795514691257">"Onemogući rasterećenje Bluetootha LE audio"</string>
- <string name="bluetooth_disable_hw_offload_dialog_title" msgid="6001142380445276918">"Ponovo pokrenuti?"</string>
+ <string name="bluetooth_disable_hw_offload_dialog_title" msgid="6001142380445276918">"Ponovo pokrenuti uređaj?"</string>
<string name="bluetooth_disable_hw_offload_dialog_message" msgid="1524373895333698779">"Da promijenite ovu postavku, potrebno je ponovo pokrenuti uređaj."</string>
<string name="bluetooth_disable_hw_offload_dialog_confirm" msgid="5594859658551707592">"Ponovo pokreni"</string>
<string name="bluetooth_disable_hw_offload_dialog_cancel" msgid="3663690305043973720">"Otkaži"</string>
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Onemogući Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Onemogućava funkciju Bluetooth LE Audio ako uređaj podržava mogućnosti hardvera za LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Način rada Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Omogući pregled korisničkog interfejsa za emitiranje putem Bluetooth LE Audija"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Omogućava pregled korisničkog interfejsa za dijeljenje putem LE Audija, uključujući dijeljenje ličnog zvuka i privatno emitiranje"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Prikaži prekidač za LE Audio u detaljima o uređaju"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Zaobiđi Listu dozvoljenih za Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Koristite LE Audio prema zadanim postavkama čak i ako nije potvrđeno da LE Audio periferni uređaj ispunjava kriterije Liste dozvoljenih."</string>
@@ -243,15 +246,14 @@
<string name="airplane_mode" msgid="3196085857882526817">"Način rada u avionu"</string>
<string name="wireless_networks_settings_title" msgid="8557542379234105369">"Bežična veza i mreže"</string>
<string name="roaming" msgid="3055365654530847985">"Roming"</string>
- <string name="roaming_enable" msgid="7845716016861535340">"Povezivanje na usluge prijenosa podataka u romingu"</string>
- <string name="roaming_disable" msgid="729512894708689604">"Povezivanje na usluge prijenosa podataka u romingu"</string>
+ <string name="roaming_enable" msgid="7845716016861535340">"Povezivanje na usluge prenosa podataka u romingu"</string>
+ <string name="roaming_disable" msgid="729512894708689604">"Povezivanje na usluge prenosa podataka u romingu"</string>
<string name="roaming_warning" msgid="7703647889040229013">"Mogu nastati troškovi rominga."</string>
<string name="date_time_auto" msgid="1759599045100040686">"Automatski datum i vrijeme"</string>
<string name="date_time_auto_summary" msgid="8294938565417729698">"Automatsko postavljanje putem mreže i bežičnih signala"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatska vremenska zona"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Automatsko postavljanje na osnovu mobilnih mreža u blizini"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Automatsko postavljanje putem lokacije uređaja, ako je dostupna"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Koristi zadani format jezika/zemlje"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Koristi 24-satni format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Vrijeme"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Podignite prst, zatim ponovo dodirnite senzor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Nije moguće koristiti senzor za otisak prsta"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Posjetite pružaoca usluga za popravke."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Otključavanje isključenog ekrana otiskom prsta"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Koristite otključavanje otiskom prsta čak i kada je ekran isključen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Isključen ekran, otključavanje"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Više postavki sigurnosti"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Zaključavanje radnog profila, šifriranje i drugo"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifriranje, akreditivi i drugo"</string>
@@ -927,7 +932,7 @@
<string name="nfc_quick_toggle_title" msgid="3607620705230351666">"NFC"</string>
<string name="nfc_secure_settings_title" msgid="4906958426927741485">"Zahtijevaj otključavanje uređaja za NFC"</string>
<string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
- <string name="android_beam_on_summary" msgid="6067720758437490896">"Spremno za prijenos sadržaja aplikacije putem NFC-a"</string>
+ <string name="android_beam_on_summary" msgid="6067720758437490896">"Spremno za prenos sadržaja aplikacije putem NFC-a"</string>
<string name="android_beam_off_summary" msgid="5693961375631325042">"Isključeno"</string>
<string name="nfc_disabled_summary" msgid="8737797364522502351">"Nije dostupno jer je NFC isključen"</string>
<string name="android_beam_explained" msgid="5684416131846701256">"Kada je uključena ova funkcija, možete emitirati sadržaj aplikacije na drugi uređaj koji podržava NFC približavanjem uređaja jedan drugome. Naprimjer, možete emitirati web stranice, videozapise s YouTubea, kontakte i drugo.\n\nSamo približite uređaje jedan drugome (u pravilu, poleđinu uz poleđinu) a zatim dodirnite svoj ekran. Aplikacija će sama prepoznati šta treba emitirati."</string>
@@ -951,8 +956,8 @@
<string name="wifi_install_credentials" msgid="5192903644606839972">"Instaliraj certifikate"</string>
<string name="wifi_scan_notify_text" msgid="7163137260385995873">"Radi poboljšanja preciznosti lokacije, aplikacije i usluge i dalje mogu skenirati WiFi mreže bilo kada, čak i kada je WiFi isključen. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji. Ovo možete izmijeniti u <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>postavkama Skeniranja WiFi mreže<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
<string name="wifi_scan_notify_text_scanning_off" msgid="7439201783168213149">"Radi poboljšanja preciznosti lokacije, uključite skeniranje WiFi mreža u <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>postavkama Skeniranja WiFi mreže<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
- <string name="wifi_cellular_data_fallback_title" msgid="2844653839490977040">"Automatsko prebacivanje na prijenos podataka na mobilnoj mreži"</string>
- <string name="wifi_cellular_data_fallback_summary" msgid="7039944853033554386">"Korištenje prijenosa podataka na mobilnoj mreži kada WiFi mreža nema pristup internetu. Mogu nastati troškovi prijenosa podataka."</string>
+ <string name="wifi_cellular_data_fallback_title" msgid="2844653839490977040">"Automatsko prebacivanje na prenos podataka na mobilnoj mreži"</string>
+ <string name="wifi_cellular_data_fallback_summary" msgid="7039944853033554386">"Korištenje prenosa podataka na mobilnoj mreži kada WiFi mreža nema pristup internetu. Mogu nastati troškovi prenosa podataka."</string>
<string name="wifi_add_network" msgid="4178564862173751181">"Dodajte mrežu"</string>
<string name="wifi_configure_settings_preference_title" msgid="2536725796700696566">"Postavke za WiFi"</string>
<string name="wifi_configure_settings_preference_summary_wakeup_on" msgid="7822368955551467382">"WiFi se uključuje ponovo automatski"</string>
@@ -984,7 +989,7 @@
<string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Ukoliko ruter ne emitira ID mreže, ali biste se ubuduće željeli povezati na njega, možete postaviti mrežu kao skrivenu.\n\nNa taj način može biti ugrožena sigurnost jer će telefon redovno emitirati signal da pronađe mrežu.\n\nPostavljenjem mreže kao skrivene neće se promijeniti postavke vašeg rutera."</string>
<string name="wifi_signal" msgid="4442182285304271424">"Jačina signala"</string>
<string name="wifi_status" msgid="5349199188871002778">"Status"</string>
- <string name="tx_wifi_speed" msgid="2368986629172050673">"Brzina prijenosa veze"</string>
+ <string name="tx_wifi_speed" msgid="2368986629172050673">"Brzina prenosa veze"</string>
<string name="rx_wifi_speed" msgid="5167966079215111232">"Brzina primanja veze"</string>
<string name="wifi_speed" msgid="6562147734565434513">"Brzina veze"</string>
<string name="wifi_frequency" msgid="3120998420184702834">"Frekvencija"</string>
@@ -1070,7 +1075,7 @@
<string name="partial_connectivity_text" msgid="8874614799723694554">"Neke aplikacije i usluge možda neće raditi zbog ograničene povezivosti. Ipak koristiti?"</string>
<string name="no_internet_access_remember" msgid="5113610157731269258">"Ne pitaj me više za ovu mrežu"</string>
<string name="lost_internet_access_title" msgid="9032463989950384698">"WiFi mreža nije povezana na internet"</string>
- <string name="lost_internet_access_text" msgid="1535911323549496789">"Možete se prebaciti na mobilnu mrežu kad god je Wi‑Fi veza loša. Mogu nastati troškovi prijenosa podataka."</string>
+ <string name="lost_internet_access_text" msgid="1535911323549496789">"Možete se prebaciti na mobilnu mrežu kad god je Wi‑Fi veza loša. Mogu nastati troškovi prenosa podataka."</string>
<string name="lost_internet_access_switch" msgid="7935665847081706202">"Prebaci na mobilnu mrežu"</string>
<string name="lost_internet_access_cancel" msgid="1981171269794585284">"Ostani na WiFi mreži"</string>
<string name="lost_internet_access_persist" msgid="6813604557672782197">"Nemoj više prikazivati"</string>
@@ -1362,11 +1367,11 @@
<string name="sim_enter_ok" msgid="3401715290135787531">"Uredu"</string>
<string name="sim_enter_cancel" msgid="2001859323724961490">"Otkaži"</string>
<string name="sim_change_data_title" msgid="4663239438584588847">"Koristiti <xliff:g id="CARRIER">%1$s</xliff:g> za mobilne podatke?"</string>
- <string name="sim_change_data_message" msgid="3046178883369645132">"Koristite <xliff:g id="CARRIER2_0">%2$s</xliff:g> za prijenos podataka na mobilnoj mreži. Ako se prebacite na operatera <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> se više neće koristiti za prijenos podataka na mobilnoj mreži."</string>
+ <string name="sim_change_data_message" msgid="3046178883369645132">"Koristite <xliff:g id="CARRIER2_0">%2$s</xliff:g> za prenos podataka na mobilnoj mreži. Ako se prebacite na operatera <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> se više neće koristiti za prenos podataka na mobilnoj mreži."</string>
<string name="sim_change_data_ok" msgid="4922114750417276560">"Koristi <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="sim_preferred_message" msgid="4894337280925553873">"<xliff:g id="NEW_SIM">%1$s</xliff:g> je sada primarni SIM"</string>
- <string name="enable_auto_data_switch_dialog_title" msgid="3563043560556718994">"Poboljšati pokrivenost prijenosa pod.?"</string>
- <string name="enable_auto_data_switch_dialog_message" msgid="5777287241521946883">"Dozvolite uređaju da se automatski prebaci na operatera <xliff:g id="BACKUP_CARRIER">%1$s</xliff:g> za prijenos podataka na mobilnoj mreži kada ima bolju dostupnost."</string>
+ <string name="enable_auto_data_switch_dialog_title" msgid="3563043560556718994">"Poboljšati pokrivenost prenosa pod.?"</string>
+ <string name="enable_auto_data_switch_dialog_message" msgid="5777287241521946883">"Dozvolite uređaju da se automatski prebaci na operatera <xliff:g id="BACKUP_CARRIER">%1$s</xliff:g> za prenos podataka na mobilnoj mreži kada ima bolju dostupnost."</string>
<string name="auto_data_switch_dialog_managed_profile_warning" msgid="6839438290079866605">\n\n"Pozivi, poruke i mrežni saobraćaj mogu biti vidljivi vašoj organizaciji."</string>
<string name="wrong_pin_code_pukked" msgid="3414172752791445033">"PIN za SIM je netačan. Za otključavanje uređaja sada morate kontaktirati svog operatera."</string>
<string name="wrong_pin_code" msgid="8124222991071607958">"{count,plural, =1{PIN kôd za SIM je netačan. Imate još # pokušaj prije nego što budete morali kontaktirati mobilnog operatera da vam otključa uređaj.}one{PIN kôd za SIM je netačan. Imate još # pokušaj.}few{PIN kôd za SIM je netačan. Imate još # pokušaja.}other{PIN kôd za SIM je netačan. Imate još # pokušaja.}}"</string>
@@ -1405,7 +1410,7 @@
<string name="scanning_status_text_off" msgid="4002352668313705132">"Isključeno"</string>
<string name="status_meid_number" msgid="6040380838489162650">"MEID"</string>
<string name="status_icc_id" msgid="7995690631650006970">"ICCID"</string>
- <string name="status_data_network_type" msgid="3689772955330665876">"Vrsta mreže za prijenos podataka"</string>
+ <string name="status_data_network_type" msgid="3689772955330665876">"Vrsta mreže za prenos podataka"</string>
<string name="status_voice_network_type" msgid="8700356693062562884">"Vrsta mreže za glasovne pozive"</string>
<string name="status_latest_area_info" msgid="8288488664620741734">"Informacije o operateru"</string>
<string name="status_data_state" msgid="525196229491743487">"Stanje mobilne mreže"</string>
@@ -1601,8 +1606,8 @@
<string name="usb_tethering_button_text" msgid="7364633823180913777">"Dijeljenje internetske veze putem USB-a"</string>
<string name="bluetooth_tether_checkbox_text" msgid="6108398414967813545">"Dijeljenje internetske veze putem Bluetootha"</string>
<string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"Dijeljenje internetske veze putem Etherneta"</string>
- <string name="tethering_footer_info" msgid="6782375845587483281">"Koristite pristupnu tačku i Dijeljenje internetske veze da omogućite internet drugim uređajima putem veze za prijenos podataka na mobilnoj mreži. Aplikacije također mogu kreirati pristupne tačke za dijeljenje sadržaja s uređajima u blizini."</string>
- <string name="tethering_footer_info_sta_ap_concurrency" msgid="2079039077487477676">"Koristite pristupnu tačku i dijeljenje internetske veze da omogućite internet drugim uređajima putem WiFi-ja ili prijenosa podataka na mobilnoj mreži. Aplikacije također mogu kreirati pristupne tačke za dijeljenje sadržaja s uređajima u blizini."</string>
+ <string name="tethering_footer_info" msgid="6782375845587483281">"Koristite pristupnu tačku i Dijeljenje internetske veze da omogućite internet drugim uređajima putem veze za prenos podataka na mobilnoj mreži. Aplikacije također mogu kreirati pristupne tačke za dijeljenje sadržaja s uređajima u blizini."</string>
+ <string name="tethering_footer_info_sta_ap_concurrency" msgid="2079039077487477676">"Koristite pristupnu tačku i dijeljenje internetske veze da omogućite internet drugim uređajima putem WiFi-ja ili prenosa podataka na mobilnoj mreži. Aplikacije također mogu kreirati pristupne tačke za dijeljenje sadržaja s uređajima u blizini."</string>
<string name="tethering_help_button_text" msgid="2823655011510912001">"Pomoć"</string>
<string name="network_settings_title" msgid="4663717899931613176">"Mobilna mreža"</string>
<string name="sms_application_title" msgid="4791107002724108809">"Aplikacija za SMS"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tastatura zanemaruje brzo ponavljane pritiske iste tipke"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Prag zanemarivanja slučajnih pritisaka"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Odaberite vrijeme u kojem će tastatura zanemarivati ponovljene pritiske tipki"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Prilagođeno"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"prilagođena vrijednost"</string>
<string name="slow_keys" msgid="2891452895499690837">"Sporo reagiranje tipki"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Podešava vrijeme potrebno za aktiviranje pritiskanja tipke"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Ljepljive tipke"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Za prečice pritišćite jednu po jednu tipku umjesto da ih istovremeno zadržavate"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Tipke miša"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Koristi tipke miša"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Koristite tastaturu da upravljate pokazivačem"</string>
- <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Obrnuto pomicanje pomoću miša"</string>
- <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Pomičite se prema gore za pomicanje stranice prema dolje"</string>
- <string name="mouse_swap_primary_button" msgid="3028204969091057207">"Zamjena lijeve i desne tipke"</string>
- <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Upotrebljavajte lijevu tipku miša kao desnu"</string>
+ <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Obrnuto klizanje mišem"</string>
+ <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Kliznite nagore da pomjerite stranicu nadolje"</string>
+ <string name="mouse_swap_primary_button" msgid="3028204969091057207">"Zamijeni lijevo i desno dugme"</string>
+ <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Koristite lijevo dugme miša kao desno dugme"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tipke miša – <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Upotrijebite tipku <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> da pomaknete pokazivač miša"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Upotrijebite tipku <xliff:g id="CLICK_LABEL">%s</xliff:g> da kliknete na primarno dugme miša"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Upotrijebite tipku <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> da pritisnete i zadržite primarno dugme miša"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Upotrijebite tipku <xliff:g id="RELEASE_LABEL">%s</xliff:g> da pustite primarno dugme miša"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Upotrijebite tipku <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> da uključite/isključite način rada za klizanje. Ovo će omogućiti klizanje pregledom nagore, nadolje, ulijevo ili udesno pomoću tipki <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Upotrijebite tipku <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> da kliknete na sekundarno dugme miša"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Prečice tastature"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Prikaz liste prečica"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastatura i alati radnog profila"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Odaberite novu tipku za \"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>\":"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Pristupačnost fizičke tastature"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Ljepljive tipke, tipke s dužim odzivom i tipke miša"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Ponavljaj tipke"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Odgodi prije ponavljanja"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Brzina ponavljanja"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Zadržite tipku da ponavljate njen znak dok ne pustite tipku"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Raspored: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Zadano"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatski: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2399,11 +2410,11 @@
<string name="accessibility_hearing_device_about_title" msgid="7883758309646288250">"Informacije o slušnim aparatima"</string>
<string name="accessibility_hearing_device_footer_summary" msgid="256061045064940818">"Da pronađete druge slušne aparate koje ne podržava ASHA ni LE Audio, dodirnite opciju "<b>"Uparivanje novog uređaja"</b>" > "<b>"Pogledajte više uređaja"</b></string>
<string name="accessibility_hearing_device_pairing_page_title" msgid="6608901091770850295">"Uparite slušni aparat"</string>
- <string name="accessibility_hearing_device_pairing_intro" msgid="7022201665808166517">"Na ovoj stranici možete upariti slušne aparate s prijenosom zvuka za slušne aparate i LE Audijem. Provjerite je li slušni aparat uključen i spreman za uparivanje."</string>
+ <string name="accessibility_hearing_device_pairing_intro" msgid="7022201665808166517">"Na ovoj stranici možete upariti slušne aparate s prenosom zvuka za slušne aparate i LE Audijem. Provjerite je li slušni aparat uključen i spreman za uparivanje."</string>
<string name="accessibility_found_hearing_devices" msgid="637407580358386553">"Dostupni slušni aparati"</string>
<string name="accessibility_found_all_devices" msgid="7817834722148556520">"Ne vidite slušni aparat?"</string>
<string name="accessibility_list_all_devices_title" msgid="161495343959211216">"Prikaži više uređaja"</string>
- <string name="accessibility_audio_adjustment_title" msgid="1332113739136802997">"Automatsko podešavanje"</string>
+ <string name="accessibility_audio_adjustment_title" msgid="1332113739136802997">"Podešavanje zvuka"</string>
<string name="accessibility_toggle_audio_description_preference_title" msgid="8916473886256061220">"Zvučni opis"</string>
<string name="accessibility_audio_description_summary" msgid="2554789094873781056">"Slušajte opis dešavanja na ekranu za podržane filmove i serije"</string>
<string name="keywords_audio_description" msgid="6202816411593281252">"zvučni opis, zvuk, opis, slaba vidljivost"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Podesite potrošnju energije"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Uključeni paketi"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikacije rade uobičajeno"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Preporučuje se zamjena baterije"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Kapacitet baterije i performanse punjenja su smanjeni, pa preporučujemo zamjenu baterije."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nivo napunjenosti baterije je nizak"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Uključite uštedu baterije da produžite vijek trajanja baterije"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Poboljšajte vijek trajanja baterije"</string>
@@ -2915,7 +2928,7 @@
<string name="account_settings_menu_auto_sync_work" msgid="8561102487795657789">"Automatska sinhronizacija podataka za posao"</string>
<string name="account_settings_menu_auto_sync_private" msgid="2315144351530596228">"Automatski sinhroniziraj privatne podatke"</string>
<string name="data_usage_change_cycle" msgid="4501026427365283899">"Promijeni ciklus…"</string>
- <string name="data_usage_pick_cycle_day" msgid="3548922497494790123">"Dan u mjesecu za poništavanje ciklusa prijenosa podataka:"</string>
+ <string name="data_usage_pick_cycle_day" msgid="3548922497494790123">"Dan u mjesecu za poništavanje ciklusa prenosa podataka:"</string>
<string name="data_usage_empty" msgid="5619908658853726866">"Nijedna apl. nije koristila pod. u ovom periodu."</string>
<string name="data_usage_label_foreground" msgid="8782117644558473624">"Prvi plan"</string>
<string name="data_usage_label_background" msgid="8862781660427421859">"Pozadina"</string>
@@ -2943,17 +2956,17 @@
<string name="data_usage_app_restrict_background_summary" msgid="2997942775999602794">"Omogućite prijenos podataka na mobilnoj mreži u pozadini"</string>
<string name="data_usage_app_restrict_background_summary_disabled" msgid="8213268097024597864">"Za ograničenje pozad. podataka ove aplikacije prvo postavite ogranič. mob. podataka."</string>
<string name="data_usage_app_restrict_dialog_title" msgid="5383874438677899255">"Ograničiti podatke u pozadini?"</string>
- <string name="data_usage_app_restrict_dialog" msgid="5534272311979978297">"Ova funkcija može uzrokovati da aplikacija koja ovisi o pozadinskim podacima prestane raditi kada su dostupne samo mobilne mreže.\n\nPrikladnije kontrole za prijenos podataka možete pronaći među postavkama koje su dostupne unutar aplikacije."</string>
+ <string name="data_usage_app_restrict_dialog" msgid="5534272311979978297">"Ova funkcija može uzrokovati da aplikacija koja ovisi o pozadinskim podacima prestane raditi kada su dostupne samo mobilne mreže.\n\nPrikladnije kontrole za prenos podataka možete pronaći među postavkama koje su dostupne unutar aplikacije."</string>
<string name="data_usage_restrict_denied_dialog" msgid="8599940395497268584">"Ograničavanje prijenosa pozadinskih podataka moguće je samo ako ste postavili ograničenje za prijenos podataka na mobilnoj mreži."</string>
<string name="data_usage_auto_sync_on_dialog_title" msgid="2048411447974361181">"Uključiti autom. sinhr. podataka?"</string>
<string name="data_usage_auto_sync_off_dialog_title" msgid="1783917145440587470">"Isključiti autom. sinhr. podataka?"</string>
- <string name="data_usage_auto_sync_off_dialog" msgid="6523112583569674837">"Ovim će se uštedjeti na prijenosu podataka i potrošnji baterije, ali ćete morati ručno sinhronizirati svaki račun da prikupite najnovije informacije. Također, nećete primati obavještenja kada se izvrše ažuriranja."</string>
+ <string name="data_usage_auto_sync_off_dialog" msgid="6523112583569674837">"Ovim će se uštedjeti na prenosu podataka i potrošnji baterije, ali ćete morati ručno sinhronizirati svaki račun da prikupite najnovije informacije. Također, nećete primati obavještenja kada se izvrše ažuriranja."</string>
<string name="data_usage_cycle_editor_title" msgid="2019035830921480941">"Datum poništavanja ciklusa potrošnje"</string>
<string name="data_usage_cycle_editor_subtitle" msgid="1026234456777365545">"Datum svakog mjeseca:"</string>
<string name="data_usage_cycle_editor_positive" msgid="6110165528024717527">"Postavi"</string>
- <string name="data_usage_warning_editor_title" msgid="5252748452973120016">"Postavite upozorenje o prijenosu podataka"</string>
- <string name="data_usage_limit_editor_title" msgid="8826855902435008518">"Postavite ograničenje prijenosa podataka"</string>
- <string name="data_usage_limit_dialog_title" msgid="2053134451707801439">"Ograničavanje prijenosa podataka"</string>
+ <string name="data_usage_warning_editor_title" msgid="5252748452973120016">"Postavite upozorenje o prenosu podataka"</string>
+ <string name="data_usage_limit_editor_title" msgid="8826855902435008518">"Postavite ograničenje prenosa podataka"</string>
+ <string name="data_usage_limit_dialog_title" msgid="2053134451707801439">"Ograničavanje prenosa podataka"</string>
<string name="data_usage_sweep_warning" msgid="2072854703184614828"><font size="18">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"upozorenje"</font></string>
<string name="data_usage_sweep_limit" msgid="6947019190890086284"><font size="18">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"ograničenje"</font></string>
<string name="data_usage_uninstalled_apps" msgid="9065885396147675694">"Uklonjene aplikacije"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Želite li prekinuti vezu s ovim VPN-om?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Prekini vezu"</string>
<string name="vpn_version" msgid="6344167191984400976">"Verzija"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Zaboravi VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Želite li zamijeniti postojeći VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Želite li postaviti uvijek uključen VPN?"</string>
@@ -3193,13 +3205,13 @@
<string name="regulatory_info_text" msgid="1154461023369976667"></string>
<string name="sim_settings_title" msgid="2254609719033946272">"SIM-ovi"</string>
<string name="sim_cellular_data_unavailable" msgid="4653591727755387534">"Prijenos podataka na mobilnoj mreži je nedostupan"</string>
- <string name="sim_cellular_data_unavailable_summary" msgid="6505871722911347881">"Dodirnite za odabir SIM-a za prijenos podataka"</string>
+ <string name="sim_cellular_data_unavailable_summary" msgid="6505871722911347881">"Dodirnite za odabir SIM-a za prenos podataka"</string>
<string name="sim_calls_always_use" msgid="967857230039768111">"Uvijek koristi ovo za pozive"</string>
- <string name="select_sim_for_data" msgid="2642305487659432499">"Odaberite SIM za prijenos podataka"</string>
+ <string name="select_sim_for_data" msgid="2642305487659432499">"Odaberite SIM za prenos podataka"</string>
<string name="select_sim_for_sms" msgid="5335510076282673497">"Odaberite SIM za SMS"</string>
- <string name="data_switch_started" msgid="6292759843974720112">"Prebacivanje SIM-a za prijenos podataka. Ovo može potrajati do 1 min…"</string>
- <string name="select_specific_sim_for_data_title" msgid="5851980301321577985">"Koristiti operatera <xliff:g id="NEW_SIM">%1$s</xliff:g> za prijenos podataka?"</string>
- <string name="select_specific_sim_for_data_msg" msgid="7401698123430573637">"Ako se prebacite na operatera <xliff:g id="NEW_SIM">%1$s</xliff:g>, <xliff:g id="OLD_SIM">%2$s</xliff:g> se više neće koristiti za prijenos podataka na mobilnoj mreži."</string>
+ <string name="data_switch_started" msgid="6292759843974720112">"Prebacivanje SIM-a za prenos podataka. Ovo može potrajati do 1 min…"</string>
+ <string name="select_specific_sim_for_data_title" msgid="5851980301321577985">"Koristiti operatera <xliff:g id="NEW_SIM">%1$s</xliff:g> za prenos podataka?"</string>
+ <string name="select_specific_sim_for_data_msg" msgid="7401698123430573637">"Ako se prebacite na operatera <xliff:g id="NEW_SIM">%1$s</xliff:g>, <xliff:g id="OLD_SIM">%2$s</xliff:g> se više neće koristiti za prenos podataka na mobilnoj mreži."</string>
<string name="select_specific_sim_for_data_button" msgid="6571935548920603512">"Koristi operatera <xliff:g id="NEW_SIM">%1$s</xliff:g>"</string>
<string name="select_sim_for_calls" msgid="7843107015635189868">"Poziv putem"</string>
<string name="sim_name_hint" msgid="8231524869124193119">"Unesite ime SIM-a"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00–17:00 radnim danima\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Događaji u kalendaru"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Način rada {mode_1} je aktivan}=2{Načini rada {mode_1} i {mode_2} su aktivni}=3{Načini rada {mode_1}, {mode_2} i {mode_3} su aktivni}one{Načini rada {mode_1} i {mode_2} te još # način rada su aktivni}few{Načini rada {mode_1} i {mode_2} te još # načina rada su aktivni}other{Načini rada {mode_1} i {mode_2} te još # načina rada su aktivni}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 način rada se može automatski uključivati}one{# način rada se može automatski uključivati}few{# načina rada se mogu automatski uključivati}other{# načina rada se može automatski uključivati}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne ometaj}=1{{mode_1}}=2{{mode_1} i {mode_2}}one{{mode_1}, {mode_2} i {mode_3}}few{{mode_1}, {mode_2} i {mode_3}}other{{mode_1}, {mode_2} i {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"UKLJUČENO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nije postavljeno"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Onemogućeno"</string>
@@ -3458,8 +3470,8 @@
<string name="mode_grayscale_title" msgid="6027553257331235461">"Nijanse sive"</string>
<string name="mode_grayscale_title_secondary_list" msgid="2662593380253642581">"nijanse sive"</string>
<string name="mode_grayscale_summary" msgid="6682099523626777038">"Promijenite ekran u crno-bijeli"</string>
- <string name="mode_aod_title" msgid="5903435070341237325">"Neka zaslon ostane taman"</string>
- <string name="mode_aod_title_secondary_list" msgid="8268180392811027557">"neka zaslon ostane taman"</string>
+ <string name="mode_aod_title" msgid="5903435070341237325">"Zadržavanje ekrana tamnim"</string>
+ <string name="mode_aod_title_secondary_list" msgid="8268180392811027557">"zadržavanje ekrana tamnim"</string>
<string name="mode_aod_summary" msgid="7516159044827627065">"Onemogućite uvijek uključen ekran"</string>
<string name="mode_wallpaper_title" msgid="5549693923133928374">"Zatamni pozadinsku sliku"</string>
<string name="mode_wallpaper_title_secondary_list" msgid="5034602021811580157">"zatamni pozadinsku sliku"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kada unutar kratkog vremenskog raspona primite mnogo obavještenja, uređaj će smanjiti jačinu zvuka i minimizirati obavještenja do 2 minute. Ovo ne utiče na pozive, alarme i prioritetne razgovore. \n\nObavještenja primljena tokom stišavanja možete pronaći povlačenjem nadolje s vrha ekrana."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Primijeni na poslovne profile"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Primijenite na aplikacije radnog profila"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Usluge pomagača za VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nijedna instalirana aplikacija nije zatražila da bude pokrenuta kao usluga pomagača za VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Dozvoliti pristup usluzi VR-a za uslugu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3936,7 +3958,7 @@
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Ovaj način rada će se možda automatski uključiti na osnovu postavki"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Omogući"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Postavite način rada koji je u skladu s redovnim rasporedom"</string>
- <string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Postavite način rada da sinhronizirate s događajima u kalendaru i odgovorima na pozive"</string>
+ <string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Postavite način rada za sinhronizaciju s događajima u kalendaru i odgovorima na pozive"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"Dizajnirajte opuštajuću rutinu za spavanje. Postavite alarme, zatamnite ekran i blokirajte obavještenja."</string>
<string name="zen_mode_blurb_driving" msgid="1316054379000667305">"Dajte prioritet sigurnosti na putu radi fokusirane vožnje bez ometanja"</string>
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Blokirajte ometanja ili prekide s uređaja radi fokusiranja"</string>
@@ -4086,7 +4108,7 @@
<string name="sharing_remote_bugreport_dialog_message" msgid="3523877008096439251">"Ovaj izvještaj o grešci se dijeli sa vašim IT administratorom. Kontaktirajte ga da dobijete više informacija."</string>
<string name="share_remote_bugreport_action" msgid="7173093464692893276">"Podijelite"</string>
<string name="decline_remote_bugreport_action" msgid="1276509879613158895">"Odbij"</string>
- <string name="usb_use_charging_only" msgid="1743303747327057947">"Nema prijenosa podataka"</string>
+ <string name="usb_use_charging_only" msgid="1743303747327057947">"Nema prenosa podataka"</string>
<string name="usb_use_power_only" msgid="3408055485802114621">"Punjenje povezanog uređaja"</string>
<string name="usb_use_file_transfers" msgid="483915710802018503">"Prijenos fajlova"</string>
<string name="usb_use_photo_transfers" msgid="4641181628966036093">"PTP"</string>
@@ -4099,7 +4121,7 @@
<string name="usb_default_label" msgid="3372838450371060750">"Zadana USB konfiguracija"</string>
<string name="usb_default_info" msgid="167172599497085266">"Kada se poveže drugi uređaj i vaš telefon je otključan, primijenit će se ove postavke. Povežite se samo s pouzdanim uređajima."</string>
<string name="usb_power_title" msgid="5602112548385798646">"Opcije napajanja"</string>
- <string name="usb_file_transfer_title" msgid="2261577861371481478">"Opcije prijenosa fajlova"</string>
+ <string name="usb_file_transfer_title" msgid="2261577861371481478">"Opcije prenosa fajlova"</string>
<string name="usb_pref" msgid="8521832005703261700">"USB"</string>
<string name="usb_preference" msgid="5084550082591493765">"Postavke USB-a"</string>
<string name="usb_control_title" msgid="1946791559052157693">"USB-om upravlja"</string>
@@ -4169,7 +4191,7 @@
<string name="allow_overlay_description" msgid="1607235723669496298">"Dozvolite ovoj aplikaciji da prekrije ostale aplikacije koje koristite. Ova aplikacija će moći vidjeti gdje dodirujete ili promijeniti ono što je prikazano na ekranu."</string>
<string name="media_routing_control_title" msgid="6402800638960066807">"Promjena medijskog izlaza"</string>
<string name="allow_media_routing_control" msgid="4907036637509360616">"Dozvoli aplikaciji da mijenja medijski izlaz"</string>
- <string name="allow_media_routing_description" msgid="8343709701298051207">"Dozvoljava ovoj aplikaciji da odabere koji povezani uređaj reproducira zvuk ili videozapis iz drugih aplikacija. Ako je dozvoljeno, ova aplikacija može pristupiti listi dostupnih uređaja kao što su slušalice i zvučnici te odabrati koji izlazni uređaj se koristi za prijenos ili emitiranje zvuka ili videozapisa."</string>
+ <string name="allow_media_routing_description" msgid="8343709701298051207">"Dozvoljava ovoj aplikaciji da odabere koji povezani uređaj reproducira zvuk ili videozapis iz drugih aplikacija. Ako je dozvoljeno, ova aplikacija može pristupiti listi dostupnih uređaja kao što su slušalice i zvučnici te odabrati koji izlazni uređaj se koristi za prenos ili emitiranje zvuka ili videozapisa."</string>
<string name="manage_external_storage_title" msgid="8024521099838816100">"Pristup svim fajlovima"</string>
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Dozvoli pristup za upravljanje svim fajlovima"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Dozvolite ovoj aplikaciji da čita, mijenja i briše sve fajlove na ovom uređaju ili svim povezanim uređajima za pohranu. Ako to dozvolite, aplikacija može pristupati fajlovima bez vašeg znanja."</string>
@@ -4274,33 +4296,33 @@
<string name="ethernet_data_usage" msgid="4552227880905679761">"Prijenos podataka putem Etherneta"</string>
<string name="wifi" msgid="2932584495223243842">"WiFi"</string>
<string name="ethernet" msgid="4665162609974492983">"Ethernet"</string>
- <string name="cell_data_template" msgid="6077963976103260821">"<xliff:g id="AMOUNT">^1</xliff:g> putem prijenosa podataka"</string>
+ <string name="cell_data_template" msgid="6077963976103260821">"<xliff:g id="AMOUNT">^1</xliff:g> putem prenosa podataka"</string>
<string name="wifi_data_template" msgid="935934798340307438">"<xliff:g id="AMOUNT">^1</xliff:g> WiFi podataka"</string>
<string name="ethernet_data_template" msgid="1429173767445201145">"<xliff:g id="AMOUNT">^1</xliff:g> ethernet podataka"</string>
- <string name="billing_cycle" msgid="6618424022653876279">"Upozorenje o prijenosu pod. i ograničenje"</string>
- <string name="app_usage_cycle" msgid="341009528778520583">"Ciklus prijenosa podataka na mob. mreži"</string>
- <string name="cell_data_warning" msgid="5664921950473359634">"Upozorenje o prijenosu podataka: <xliff:g id="ID_1">^1</xliff:g>"</string>
- <string name="cell_data_limit" msgid="256855024790622112">"Ograničenje prijenosa podataka: <xliff:g id="ID_1">^1</xliff:g>"</string>
- <string name="cell_data_warning_and_limit" msgid="8393200831986035724">"Upozorenje o prijenosu podataka: <xliff:g id="ID_1">^1</xliff:g> / Ograničenje prijenosa podataka: <xliff:g id="ID_2">^2</xliff:g>"</string>
+ <string name="billing_cycle" msgid="6618424022653876279">"Upozorenje o prenosu pod. i ograničenje"</string>
+ <string name="app_usage_cycle" msgid="341009528778520583">"Ciklus prenosa podataka na mob. mreži"</string>
+ <string name="cell_data_warning" msgid="5664921950473359634">"Upozorenje o prenosu podataka: <xliff:g id="ID_1">^1</xliff:g>"</string>
+ <string name="cell_data_limit" msgid="256855024790622112">"Ograničenje prenosa podataka: <xliff:g id="ID_1">^1</xliff:g>"</string>
+ <string name="cell_data_warning_and_limit" msgid="8393200831986035724">"Upozorenje o prenosu podataka: <xliff:g id="ID_1">^1</xliff:g> / Ograničenje prenosa podataka: <xliff:g id="ID_2">^2</xliff:g>"</string>
<string name="operator_warning" msgid="5672761970087591211">"Obračun podataka koji vrši operater se može razlikovati od obračuna koji vrši uređaj"</string>
<string name="non_carrier_data_usage_warning" msgid="4707184871368847697">"Ne obuhvata podatke koje koriste mreže mobilnog operatera"</string>
<string name="data_used_template" msgid="8229342096562327646">"Iskorišteno je <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="set_data_warning" msgid="1685771882794205462">"Postavi upozor. o prij. podat."</string>
- <string name="data_warning" msgid="2925054658166062884">"Upozorenje o prijenosu podataka"</string>
- <string name="data_warning_footnote" msgid="5991901765915710592">"Uređaj mjeri upozorenje o prijenosu podataka i ograničenje prijenosa podataka. Ovo se može razlikovati od mjerenja prijenosa podataka koje vrši mobilni operater."</string>
+ <string name="data_warning" msgid="2925054658166062884">"Upozorenje o prenosu podataka"</string>
+ <string name="data_warning_footnote" msgid="5991901765915710592">"Uređaj mjeri upozorenje o prenosu podataka i ograničenje prenosa podataka. Ovo se može razlikovati od mjerenja prenosa podataka koje vrši mobilni operater."</string>
<string name="set_data_limit" msgid="9010326815874642680">"Postavi ogranič. prij. podat."</string>
- <string name="data_limit" msgid="8731731657513652363">"Ograničenje prijenosa podataka"</string>
+ <string name="data_limit" msgid="8731731657513652363">"Ograničenje prenosa podataka"</string>
<string name="data_usage_template" msgid="3822452362629968010">"<xliff:g id="ID_1">%1$s</xliff:g> iskorišteno <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="configure" msgid="1499586749829665889">"Konfiguracija"</string>
<string name="data_usage_other_apps" msgid="5649047093607329537">"Ostale aplikacije uključene u korištenje"</string>
<string name="data_saver_unrestricted_summary" msgid="559673440849071149">"{count,plural, =1{1 aplikacija smije upotrebljavati neograničeni prijenos podataka na mobilnoj mreži kada je Ušteda podataka uključena}one{# aplikacija smije upotrebljavati neograničeni prijenos podataka na mobilnoj mreži kada je Ušteda podataka uključena}few{# aplikacije smiju upotrebljavati neograničeni prijenos podataka na mobilnoj mreži kada je Ušteda podataka uključena}other{# aplikacija smije upotrebljavati neograničeni prijenos podataka na mobilnoj mreži kada je Ušteda podataka uključena}}"</string>
- <string name="data_usage_title" msgid="4039024073687469094">"Primarni plan prijenosa podataka"</string>
+ <string name="data_usage_title" msgid="4039024073687469094">"Primarni plan prenosa podataka"</string>
<string name="data_usage_wifi_title" msgid="1060495519280456926">"Wi‑Fi podaci"</string>
<string name="data_used_formatted" msgid="7913920278059077938">"Iskorišteno je <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
<string name="data_overusage" msgid="3680477320458707259">"Prekoračenje: <xliff:g id="ID_1">^1</xliff:g>"</string>
<string name="data_remaining" msgid="6316251496381922837">"Još <xliff:g id="ID_1">^1</xliff:g>"</string>
- <string name="data_usage_chart_brief_content_description" msgid="5548074070258881530">"Grafikon koji prikazuje potrošnju prijenosa podataka od <xliff:g id="START_DATE">%1$s</xliff:g> do <xliff:g id="END_DATE">%2$s</xliff:g>."</string>
- <string name="data_usage_chart_no_data_content_description" msgid="5481968839079467231">"Nema potrošnje prijenosa podataka u ovom rasponu datuma"</string>
+ <string name="data_usage_chart_brief_content_description" msgid="5548074070258881530">"Grafikon koji prikazuje potrošnju prenosa podataka od <xliff:g id="START_DATE">%1$s</xliff:g> do <xliff:g id="END_DATE">%2$s</xliff:g>."</string>
+ <string name="data_usage_chart_no_data_content_description" msgid="5481968839079467231">"Nema potrošnje prenosa podataka u ovom rasponu datuma"</string>
<string name="billing_cycle_days_left" msgid="174337287346866400">"{count,plural, =1{Preostao je još # dan}one{Preostao je još # dan}few{Preostala su još # dana}other{Preostalo je još # dana}}"</string>
<string name="billing_cycle_none_left" msgid="1694844019159277504">"Nema preostalog vremena"</string>
<string name="billing_cycle_less_than_one_day_left" msgid="1210202399053992163">"Preostalo je manje od 1 dana"</string>
@@ -4315,8 +4337,8 @@
<string name="data_saver_on" msgid="7848893946018448793">"Uključeno"</string>
<string name="data_saver_off" msgid="5891210864117269045">"Isključeno"</string>
<string name="data_saver_switch_title" msgid="7111538580123722959">"Koristi Uštedu podataka"</string>
- <string name="unrestricted_app_title" msgid="8531936851059106374">"Korištenje neograničenog prijenosa podataka na mobilnoj mreži"</string>
- <string name="unrestricted_app_summary" msgid="8320813971858627624">"Dozvolite pristup neograničenom prijenosu podataka na mobilnoj mreži kada je Ušteda podataka uključena"</string>
+ <string name="unrestricted_app_title" msgid="8531936851059106374">"Korištenje neograničenog prenosa podataka na mobilnoj mreži"</string>
+ <string name="unrestricted_app_summary" msgid="8320813971858627624">"Dozvolite pristup neograničenom prenosu podataka na mobilnoj mreži kada je Ušteda podataka uključena"</string>
<string name="home_app" msgid="6056850504746902747">"Aplikacija za početni ekran"</string>
<string name="suggestion_additional_fingerprints" msgid="4726777300101156208">"Dodajte još jedan otisak prsta"</string>
<string name="suggestion_additional_fingerprints_summary" msgid="2825364645039666674">"Otključajte nekim drugim prstom"</string>
@@ -4771,7 +4793,7 @@
<string name="carrier_settings_title" msgid="6959295328730560529">"Postavke operatera"</string>
<string name="cdma_lte_data_service" msgid="6937443423651347345">"Postavi prijenos podataka"</string>
<string name="mobile_data_settings_title" msgid="3927524078598009792">"Prijenos podataka na mobilnoj mreži"</string>
- <string name="mobile_data_settings_summary" msgid="7323978798199919063">"Pristup prijenosu podataka putem mobilne mreže"</string>
+ <string name="mobile_data_settings_summary" msgid="7323978798199919063">"Pristup prenosu podataka putem mobilne mreže"</string>
<string name="mobile_data_settings_summary_auto_switch" msgid="7851549787645698945">"Telefon će se automatski prebaciti na ovog operatera kada bude u dometu"</string>
<string name="mobile_data_settings_summary_unavailable" msgid="9176513507571883986">"Nije dostupan nijedan SIM"</string>
<string name="calls_preference" msgid="2166481296066890129">"Postavke za pozive"</string>
@@ -4781,7 +4803,7 @@
<string name="default_for_calls" msgid="2788950217176988034">"Zadano za pozive"</string>
<string name="default_for_sms" msgid="1316988329407434771">"Zadano za SMS-ove"</string>
<string name="default_for_calls_and_sms" msgid="8223971369339958151">"Zadano za pozive i SMS-ove"</string>
- <string name="default_for_mobile_data" msgid="3725773640392315626">"Zadano za prijenos mobilnih podataka"</string>
+ <string name="default_for_mobile_data" msgid="3725773640392315626">"Zadano za prenos mobilnih podataka"</string>
<string name="mobile_data_active" msgid="8683694456401350210">"Prijenos mobilnih podataka je aktivan"</string>
<string name="mobile_data_off" msgid="2702029611959308269">"Prijenos mobilnih podataka je isključen"</string>
<string name="subscription_available" msgid="2659722770210403365">"Dostupno"</string>
@@ -4874,7 +4896,7 @@
<string name="sim_onboarding_dialog_starting_title" msgid="4212945803784596345">"Postavite preference SIM-a"</string>
<string name="sim_onboarding_dialog_starting_msg" msgid="8450391476631265209">"Postavite preference mobilne mreže da koristite više SIM-ova na uređaju"</string>
<string name="sim_onboarding_label_sim_title" msgid="273162565849288273">"Označite SIM-ove"</string>
- <string name="sim_onboarding_label_sim_msg" msgid="5105859235219529056">"Vidjet ćete ove oznake prilikom upućivanja poziva, slanja poruka i korištenja prijenosa podataka, kao i u Postavkama"</string>
+ <string name="sim_onboarding_label_sim_msg" msgid="5105859235219529056">"Vidjet ćete ove oznake prilikom upućivanja poziva, slanja poruka i korištenja prenosa podataka, kao i u Postavkama"</string>
<string name="sim_onboarding_label_sim_dialog_title" msgid="5839073125605286120">"Oznaka SIM-a"</string>
<string name="sim_onboarding_label_sim_dialog_label" msgid="9020433985426525185">"Oznaka"</string>
<string name="sim_onboarding_select_sim_title" msgid="5895262188167744055">"Odaberite SIM-ove za korištenje"</string>
@@ -4884,7 +4906,7 @@
<string name="primary_sim_title" msgid="2508161011657571566">"Primarni SIM-ovi"</string>
<string name="primary_sim_calls_title" msgid="4961189133582615685">"Pozivi"</string>
<string name="primary_sim_texts_title" msgid="1287584042733097749">"Poruke"</string>
- <string name="primary_sim_automatic_data_title" msgid="1265528923229642480">"Automatsko prebacivanje na prijenos podataka"</string>
+ <string name="primary_sim_automatic_data_title" msgid="1265528923229642480">"Automatsko prebacivanje na prenos podataka"</string>
<string name="primary_sim_automatic_data_msg" msgid="1612203837010785203">"Koristite prijenos podataka s bilo kojeg SIM-a ovisno o pokrivenosti i dostupnosti"</string>
<string name="sim_action_restart_dialog_title" msgid="3507413479633430120">"Ponovo pokrenite uređaj da koristite 2 SIM-a"</string>
<string name="sim_action_restart_dialog_msg" msgid="4737611046767629774">"Da istovremeno koristite 2 SIM-a, ponovno pokrenite uređaj, a zatim uključite oba SIM-a"</string>
@@ -4913,7 +4935,7 @@
<string name="choose_sim_activating" msgid="6485547671356386998">"Uključivanje<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
<string name="choose_sim_could_not_activate" msgid="866488735834045525">"Uključivanje SIM-a trenutno nije uspjelo"</string>
<string name="switch_sim_dialog_title" msgid="5407316878973237773">"Koristiti operatera <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
- <string name="switch_sim_dialog_text" msgid="7530186862171635464">"Usluge operatera <xliff:g id="CARRIER_NAME">%1$s</xliff:g> će se koristiti za prijenos podataka na mobilnoj mreži, pozive i SMS."</string>
+ <string name="switch_sim_dialog_text" msgid="7530186862171635464">"Usluge operatera <xliff:g id="CARRIER_NAME">%1$s</xliff:g> će se koristiti za prenos podataka na mobilnoj mreži, pozive i SMS."</string>
<string name="switch_sim_dialog_no_switch_title" msgid="809763410787744247">"Nema dostupnih SIM-ova"</string>
<string name="switch_sim_dialog_no_switch_text" msgid="7053939850026876088">"Da kasnije koristite prijenos podataka na mobilnoj mreži, funkcije poziva i SMS, idite u postavke mreže"</string>
<string name="sim_card_label" msgid="6263064316075963775">"SIM"</string>
@@ -5367,7 +5389,7 @@
<string name="audio_sharing_call_audio_description" msgid="6573621048260616924">"Reproduciranje samo na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_sharing_test_sound_title" msgid="6438868185641027763">"Reproducirajte testni zvuk"</string>
<string name="audio_sharing_test_sound_description" msgid="4072462502371937399">"Svako ko sluša treba ovo čuti"</string>
- <string name="audio_sharing_stream_settings_title" msgid="1374391898689242036">"Postavke prijenosa zvuka"</string>
+ <string name="audio_sharing_stream_settings_title" msgid="1374391898689242036">"Postavke prenosa zvuka"</string>
<string name="audio_sharing_stream_name_title" msgid="8156859441897180940">"Naziv"</string>
<string name="audio_sharing_stream_password_title" msgid="7026649168165764602">"Lozinka"</string>
<string name="audio_sharing_stream_compatibility_title" msgid="5690947186724469918">"Poboljšaj kompatibilnost"</string>
@@ -5375,8 +5397,8 @@
<string name="audio_sharing_stream_compatibility_disabled_description" msgid="2586408353546825682">"Isključuje dijeljenje zvuka radi konfiguracije kompatibilnosti"</string>
<string name="audio_sharing_nearby_audio_title" msgid="4795438407040677177">"Slušajte zvuk u blizini"</string>
<string name="audio_sharing_footer_description" msgid="4786942197840271680">"Dijeljenje zvuka podržava Auracast™"</string>
- <string name="audio_sharing_stream_name_dialog_title" msgid="6706027295417556499">"Naziv prijenosa zvuka"</string>
- <string name="audio_sharing_stream_password_dialog_title" msgid="4148196538860845705">"Lozinka prijenosa zvuka"</string>
+ <string name="audio_sharing_stream_name_dialog_title" msgid="6706027295417556499">"Naziv prenosa zvuka"</string>
+ <string name="audio_sharing_stream_password_dialog_title" msgid="4148196538860845705">"Lozinka prenosa zvuka"</string>
<string name="audio_sharing_media_device_group_title" msgid="4850674234590549565">"Drugi medijski uređaji"</string>
<string name="audio_sharing_summary_on" msgid="611197542982323788">"Uključeno"</string>
<string name="audio_sharing_summary_off" msgid="8833198995257547378">"Isključeno"</string>
@@ -5388,8 +5410,8 @@
<string name="audio_sharing_share_with_more_dialog_title" msgid="2840069088858232267">"Dijelite zvuk s drugim uređajem"</string>
<string name="audio_sharing_share_with_button_label" msgid="4146194430380237357">"Dijeli s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_sharing_close_button_label" msgid="2666534149100498574">"Zatvori"</string>
- <string name="audio_sharing_dialog_connect_device_content" msgid="2873230647152283734">"Povežite drugi par kompatibilnih slušalica ili podijelite naziv i lozinku prijenosa s drugom osobom"</string>
- <string name="audio_sharing_dialog_pair_device_content" msgid="3136997898244863470">"Uparite drugi komplet kompatibilnih slušalica ili podijelite QR kôd prijenosa zvuka s drugom osobom"</string>
+ <string name="audio_sharing_dialog_connect_device_content" msgid="2873230647152283734">"Povežite drugi par kompatibilnih slušalica ili podijelite naziv i lozinku prenosa s drugom osobom"</string>
+ <string name="audio_sharing_dialog_pair_device_content" msgid="3136997898244863470">"Uparite drugi komplet kompatibilnih slušalica ili podijelite QR kôd prenosa zvuka s drugom osobom"</string>
<string name="audio_sharing_sharing_label" msgid="1038021053061111508">"Dijeljenje zvuka"</string>
<string name="audio_sharing_pair_button_label" msgid="7987236990273083588">"Uparite novi uređaj"</string>
<string name="audio_sharing_qrcode_button_label" msgid="3207039106555097659">"Prikaži QR kôd"</string>
@@ -5409,18 +5431,18 @@
<string name="audio_sharing_confirm_dialog_title" msgid="7655147122624691167">"Povežite kompatibilan uređaj"</string>
<string name="audio_sharing_comfirm_dialog_content" msgid="3479217934447446066">"Da počnete dijeliti zvuk, prvo povežite slušalice s LE Audijem s telefonom"</string>
<string name="audio_sharing_switch_active_button_label" msgid="3065600513067122124">"Prebaci se na uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="audio_sharing_progress_dialog_start_stream_content" msgid="1152386358063502897">"Pokretanje prijenosa zvuka…"</string>
+ <string name="audio_sharing_progress_dialog_start_stream_content" msgid="1152386358063502897">"Pokretanje prenosa zvuka…"</string>
<string name="audio_sharing_progress_dialog_add_source_content" msgid="2913609550496440710">"Dijeljenje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>…"</string>
<string name="progress_dialog_connect_device_content" msgid="1387370883978461533">"Povezivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>…"</string>
<string name="audio_sharing_retry_dialog_title" msgid="3954529199333866445">"Dijeljenje zvuka nije uspjelo"</string>
<string name="audio_sharing_retry_dialog_content" msgid="6014534433894608834">"Nešto nije uredu. Pokušajte ponovo."</string>
<string name="audio_sharing_incompatible_dialog_title" msgid="4586805264392802115">"Nije moguće dijeliti zvuk s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_sharing_incompatible_dialog_content" msgid="3943223683620405311">"Dijeljenje zvuka funkcionira samo sa slušalicama koje podržavaju LE Audio"</string>
- <string name="audio_streams_category_title" msgid="4878022761829895463">"Povežite se s prijenosom zvuka LE Audio"</string>
- <string name="audio_streams_pref_title" msgid="6320485086288646209">"Prijenosi zvuka u blizini"</string>
- <string name="audio_streams_title" msgid="6617990880383079165">"Prijenosi zvuka"</string>
- <string name="audio_streams_qr_code_summary" msgid="2838923349871884871">"Povežite se s prijenosom zvuka putem QR koda"</string>
- <string name="audio_streams_empty" msgid="8803517701437394982">"U blizini nije pronađen nijed. prijenos zvuka"</string>
+ <string name="audio_streams_category_title" msgid="4878022761829895463">"Povežite se s prenosom zvuka LE Audio"</string>
+ <string name="audio_streams_pref_title" msgid="6320485086288646209">"Prenosi zvuka u blizini"</string>
+ <string name="audio_streams_title" msgid="6617990880383079165">"Prenosi zvuka"</string>
+ <string name="audio_streams_qr_code_summary" msgid="2838923349871884871">"Povežite se s prenosom zvuka putem QR koda"</string>
+ <string name="audio_streams_empty" msgid="8803517701437394982">"U blizini nije pronađen nijed. prenos zvuka"</string>
<string name="audio_streams_disconnect" msgid="1755594831469579161">"Prekini vezu"</string>
<string name="audio_streams_connect" msgid="1955964373102927954">"Poveži"</string>
<string name="audio_streams_qr_code_is_not_valid_format" msgid="4856288389653121830">"Format QR koda nije važeći"</string>
@@ -5429,37 +5451,38 @@
<string name="audio_streams_add_source_failed_state_summary" msgid="3937546443978562322">"Nije se moguće povezati. Pokušajte ponovo."</string>
<string name="audio_streams_connecting_summary" msgid="7237827765572331702">"Povezivanje…"</string>
<string name="audio_streams_dialog_stream_is_not_available" msgid="4032878851270690546">"Prijenos zvuka nije dostupan"</string>
- <string name="audio_streams_is_not_playing" msgid="8480293894696007941">"Prijenos zvuka trenutno ništa ne reproducira"</string>
+ <string name="audio_streams_is_not_playing" msgid="8480293894696007941">"Prenos zvuka trenutno ništa ne reproducira"</string>
<string name="audio_streams_dialog_close" msgid="8177201719298408431">"Zatvori"</string>
<string name="audio_streams_dialog_listen" msgid="7290340191504987685">"Slušajte"</string>
<string name="audio_streams_dialog_retry" msgid="4456843891970998556">"Pokušajte ponovo"</string>
- <string name="audio_streams_dialog_listen_to_audio_stream" msgid="8585253007762261528">"Slušajte prijenos zvuka"</string>
+ <string name="audio_streams_dialog_listen_to_audio_stream" msgid="8585253007762261528">"Slušajte prenos zvuka"</string>
<string name="audio_streams_dialog_control_volume" msgid="7615062686016713544">"Prijenos zvuka će se reproducirati na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Koristite ovaj uređaj da kontrolirate jačinu zvuka."</string>
- <string name="audio_streams_dialog_cannot_listen" msgid="4432257183698209966">"Nije moguće slušati prijenos zvuka"</string>
+ <string name="audio_streams_dialog_cannot_listen" msgid="4432257183698209966">"Nije moguće slušati prenos zvuka"</string>
<string name="audio_streams_dialog_default_device" msgid="6159800303379303266">"povezane kompatibilne slušalice"</string>
- <string name="audio_streams_activity_title" msgid="6766869545769831935">"Prijenosi zvuka"</string>
+ <string name="audio_streams_activity_title" msgid="6766869545769831935">"Prenosi zvuka"</string>
<string name="audio_streams_no_password_summary" msgid="8976357323034830144">"Nema lozinke"</string>
<string name="audio_streams_dialog_learn_more" msgid="6711241053442211345">"Saznajte više"</string>
- <string name="audio_streams_dialog_cannot_play" msgid="1358828316927479091">"Nije moguće reproducirati prijenos zvuka na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="audio_streams_dialog_cannot_play" msgid="1358828316927479091">"Nije moguće reproducirati prenos zvuka na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="audio_streams_listening_now" msgid="4205614429222949176">"Slušate sada"</string>
<string name="audio_streams_present_now" msgid="1128360774541089402">"Pauzirano je putem host računara"</string>
<string name="audio_streams_media_service_notification_leave_broadcast_text" msgid="4938656134300913647">"Prestanite slušati"</string>
<string name="audio_streams_dialog_no_le_device_title" msgid="3931163990976742282">"Povežite kompatibilne slušalice"</string>
<string name="audio_streams_dialog_no_le_device_button" msgid="4484355549428642588">"Poveži uređaj"</string>
- <string name="audio_streams_detail_page_title" msgid="7884132061275273766">"Detalji prijenosa zvuka"</string>
- <string name="audio_streams_qr_code_page_title" msgid="9169570362469544641">"QR kôd prijenosa zvuka"</string>
+ <string name="audio_streams_detail_page_title" msgid="7884132061275273766">"Detalji prenosa zvuka"</string>
+ <string name="audio_streams_qr_code_page_title" msgid="9169570362469544641">"QR kôd prenosa zvuka"</string>
<string name="audio_streams_qr_code_page_password" msgid="7268475614131297060">"Lozinka: <xliff:g id="PASSWORD">%1$s</xliff:g>"</string>
<string name="audio_streams_qr_code_page_description" msgid="1317961663706630428">"Da drugi slušaju prijenos <xliff:g id="STREAM_NAME">%1$s</xliff:g>, mogu povezati kompatibilne slušalice s Android uređajem. Zatim mogu skenirati ovaj QR kôd."</string>
- <string name="audio_streams_main_page_title" msgid="1838380471076527639">"Pronađite prijenos zvuka"</string>
+ <string name="audio_streams_main_page_title" msgid="1838380471076527639">"Pronađite prenos zvuka"</string>
<string name="audio_streams_main_page_subtitle" msgid="3251995732921981539">"Slušajte zvuk koji dijeli uređaj ili Auracast emitiranje u blizini"</string>
<string name="audio_streams_main_page_device_title" msgid="2635744035523908253">"Vaš audio uređaj"</string>
<string name="audio_streams_main_page_no_device_summary" msgid="2936000845397406389">"Povežite kompatibilne slušalice"</string>
- <string name="audio_streams_main_page_scan_section_title" msgid="2778235929304061163">"Prijenosi zvuka u blizini"</string>
+ <string name="audio_streams_main_page_scan_section_title" msgid="2778235929304061163">"Prenosi zvuka u blizini"</string>
<string name="audio_streams_main_page_scan_qr_code_title" msgid="8337270277392468895">"Skenirajte QR kôd"</string>
- <string name="audio_streams_main_page_scan_qr_code_summary" msgid="1991792283368249499">"Počnite slušati skeniranjem QR koda prijenosa"</string>
- <string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Slušajte prijenos"</string>
- <string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skenirajte QR kôd prijenosa zvuka da slušate na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="audio_streams_main_page_scan_qr_code_summary" msgid="1991792283368249499">"Počnite slušati skeniranjem QR koda prenosa"</string>
+ <string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Slušajte prenos"</string>
+ <string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skenirajte QR kôd prenosa zvuka da slušate na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Nije moguće urediti lozinku tokom dijeljenja. Da promijenite lozinku, prvo isključite dijeljenje zvuka."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Lozinka mora sadržavati između 4 i 16 znakova koji su samo slova, brojevi i simboli"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Skener QR koda"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Trebate pomoć?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Pretražite postavke"</string>
@@ -5468,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Samo uređaj"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Novi kontakti se neće sinhronizirati s računom"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakti će se sačuvati na uređaj i sinhronizirati s računom prema zadanim postavkama"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Zadani račun nije postavljen"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Došlo je do greške prilikom postavljanja zadanog računa"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Zadani račun nije postavljen"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Samo uređaj"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Dodajte račun da započnete"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Pretraživanje zaokruživanjem"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Dodirnite i zadržite dugme za početnu stranicu ili ručicu za navigaciju da pretražujete pomoću sadržaja na ekranu."</string>
</resources>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
index e4e125f..a3c9cef 100644
--- a/res/values-ca/arrays.xml
+++ b/res/values-ca/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Maletí"</item>
+ <item msgid="184985872234062767">"Edifici clàssic"</item>
+ <item msgid="9189550412466785530">"Edifici d\'apartaments"</item>
+ <item msgid="2142527562511049422">"Globus"</item>
+ <item msgid="2548100558260478605">"Grup de persones"</item>
+ <item msgid="2270003903304578284">"Bombeta"</item>
+ <item msgid="4793496619091161864">"Calendari"</item>
+ <item msgid="5673625795644364100">"No molestis"</item>
+ <item msgid="1423820834865831361">"Persona corrent"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Pesa de gimnàs"</item>
+ <item msgid="2730180105015616518">"Natació"</item>
+ <item msgid="2666922823253345958">"Persona que fa excursionisme"</item>
+ <item msgid="8234880356472211396">"Persona que llança una pilota"</item>
+ <item msgid="4642980625253001443">"Persona que fa una puntada de peu"</item>
+ <item msgid="4324795269518833500">"Comandament de joc"</item>
+ <item msgid="7789966425125441125">"Paleta de colors d\'artista"</item>
+ <item msgid="663512680597461570">"Floc de neu"</item>
+ <item msgid="7952183800501346803">"Para-sol"</item>
+ <item msgid="799139025758265891">"Eines d\'un taller"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Rodet de pel·lícula"</item>
+ <item msgid="5827426100157335512">"Llibre"</item>
+ <item msgid="8585828346253128384">"Flor de lotus"</item>
+ <item msgid="8788370542815300188">"Ment d\'una persona"</item>
+ <item msgid="7287354964767553293">"Auriculars"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Cotxe"</item>
+ <item msgid="5010405583912314582">"Forquilla i ganivet"</item>
+ <item msgid="8939998598599064900">"Carretó"</item>
+ <item msgid="3379605903308731893">"Infant"</item>
+ <item msgid="7808668968550293112">"Grapa"</item>
+ <item msgid="1000692647524056504">"Insígnia d\'estrella"</item>
+ <item msgid="8270261073421676502">"Dues persones"</item>
+ <item msgid="5767782819651505460">"Estrella"</item>
+ <item msgid="4368451291862729334">"Cor"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Mitja lluna"</item>
+ <item msgid="5421089790869483206">"Rellotge"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 02a5472..2732121 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Vincula un dispositiu nou"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Activa automàticament demà"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Vincula la dreta"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Vincula l\'esquerra"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Vincula l\'altra orella"</string>
@@ -113,13 +115,15 @@
<string name="bluetooth_pairing_page_title" msgid="3403981358823707692">"Vincula un dispositiu nou"</string>
<string name="bluetooth_disable_a2dp_hw_offload" msgid="5942913792817797541">"Desactiva la baixada de maquinari Bluetooth A2DP"</string>
<string name="bluetooth_disable_le_audio_hw_offload" msgid="4656853795514691257">"Desactiva la baixada de maquinari Bluetooth LE Audio"</string>
- <string name="bluetooth_disable_hw_offload_dialog_title" msgid="6001142380445276918">"Vols reiniciar-lo?"</string>
+ <string name="bluetooth_disable_hw_offload_dialog_title" msgid="6001142380445276918">"Vols reiniciar el dispositiu?"</string>
<string name="bluetooth_disable_hw_offload_dialog_message" msgid="1524373895333698779">"Has de reiniciar el dispositiu per canviar aquesta opció."</string>
<string name="bluetooth_disable_hw_offload_dialog_confirm" msgid="5594859658551707592">"Reinicia"</string>
<string name="bluetooth_disable_hw_offload_dialog_cancel" msgid="3663690305043973720">"Cancel·la"</string>
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desactiva Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Desactiva la funció Bluetooth LE Audio si el dispositiu admet les funcions de maquinari d\'LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Mode Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Activa la previsualització de la IU de difusió de Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Activa la previsualització de la IU de compartició de LE Audio, que inclou la compartició d\'àudio personal i la difusió privada"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Botó d\'LE Audio a Detalls del dispositiu"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omet la llista d\'accés permès de Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Utilitza LE Audio de manera predeterminada encara que no s\'hagi verificat si el perifèric d\'LE Audio compleix els criteris de la llista d\'accés permès"</string>
@@ -139,7 +143,7 @@
<string name="stylus_default_notes_app" msgid="4165657465911764628">"Prem el botó del darrere"</string>
<string name="stylus_default_notes_summary_work" msgid="4554643411627934223">"<xliff:g id="APP_NAME">%s</xliff:g> (perfil de treball)"</string>
<string name="stylus_textfield_handwriting" msgid="2363579035338976327">"Escriu als camps de text"</string>
- <string name="stylus_ignore_button" msgid="7734540973145241391">"Ignora la premuda de tots els botons del llapis òptic"</string>
+ <string name="stylus_ignore_button" msgid="7734540973145241391">"Ignora totes les premudes del botó del llapis òptic"</string>
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Llapis òptic"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data i hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Servidor intermediari"</string>
@@ -250,10 +254,9 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Estableix automàticament amb la xarxa i els senyals sense fil"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Zona horària automàtica"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Estableix automàticament segons les xarxes mòbils properes"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Estableix automàticament amb la ubicació del dispositiu, si està disponible"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Utilitza la configuració regional predeterminada"</string>
- <string name="date_time_24hour" msgid="286679379105653406">"Format de 24 hores"</string>
+ <string name="date_time_24hour" msgid="286679379105653406">"Utilitza el format de 24 hores"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Hora"</string>
<string name="time_format_category_title" msgid="7108616745509689991">"Format d\'hora"</string>
<string name="date_time_set_timezone_title" msgid="790404320569600222">"Zona horària"</string>
@@ -295,7 +298,7 @@
<string name="security_settings_title" msgid="6710768415432791970">"Seguretat"</string>
<string name="encryption_and_credential_settings_title" msgid="5856216318961482983">"Encriptació i credencials"</string>
<string name="lockscreen_settings_title" msgid="4086121748092341549">"Pantalla de bloqueig"</string>
- <string name="lockscreen_settings_what_to_show_category" msgid="9205490627927741254">"Què s\'hi mostra"</string>
+ <string name="lockscreen_settings_what_to_show_category" msgid="9205490627927741254">"Què es mostra"</string>
<string name="disabled_by_administrator_summary" msgid="5424846182313851124">"No disponible"</string>
<string name="security_status_title" msgid="6958004275337618656">"Estat de seguretat"</string>
<string name="security_dashboard_summary" msgid="7571035662779425918">"Bloqueig de pantalla, Troba el meu dispositiu, seguretat per a aplicacions"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Aixeca el dit i, a continuació, torna a tocar el sensor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"No es pot utilitzar el sensor d\'empremtes digitals"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visita un proveïdor de reparacions."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueig amb empremta digital amb la pantalla apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Utilitza Desbloqueig amb empremta digital fins i tot quan la pantalla estigui apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Pantalla apagada, desbloqueig"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Més opcions de configuració de seguretat"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueig del perfil de treball, encriptació i més"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encriptació, credencials i més"</string>
@@ -586,7 +592,7 @@
<string name="private_space_face_settings_footer" msgid="7722256209563543711">"Utilitza la cara per desbloquejar l\'espai privat.\n\nTingues en compte el següent:\nNomés pots tenir configurada una cara. Per afegir-ne una altra, suprimeix l\'actual.\n\nSi mires el telèfon, es pot desbloquejar sense voler.\n\nUna altra persona pot desbloquejar l\'espai privat si et posa el dispositiu davant de la cara.\n\nAlgú que s\'assembli molt a tu, com ara un bessó idèntic, pot desbloquejar l\'espai privat."</string>
<string name="private_space_face_settings_require_confirmation_details" msgid="5406498664903812249">"En utilitzar Desbloqueig facial, sol·licita sempre una confirmació"</string>
<string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Formes de desbloqueig"</string>
- <string name="private_space_screen_lock_summary" msgid="394837965365561070">"El mateix bloqueig de pantalla que el del dispositiu"</string>
+ <string name="private_space_screen_lock_summary" msgid="394837965365561070">"El mateix que el bloqueig de pantalla del dispositiu"</string>
<string name="private_space_new_lock_title" msgid="9056139964133004094">"Vols triar un bloqueig nou per a l\'espai privat?"</string>
<string name="private_space_new_lock_message" msgid="3117703578905489206">"Hauràs d\'introduir el PIN, el patró o la contrasenya del dispositiu a la pantalla següent"</string>
<string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloqueja l\'espai privat automàticament"</string>
@@ -626,12 +632,12 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Amaga o bloqueja les aplicacions privades en un espai separat. Utilitza un Compte de Google dedicat per a més seguretat."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Com funciona"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crea un Compte de Google per a l\'espai"</b>\n"Si utilitzes un compte dedicat, t\'ajudarà a evitar que els fitxers, les fotos i els correus electrònics sincronitzats es mostrin fora de l\'espai"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Defineix un bloqueig"</b>\n"Bloqueja l\'espai per evitar que altres persones l\'obrin."</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Defineix un bloqueig"</b>\n"Bloqueja l\'espai per evitar que altres persones l\'obrin"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instal·la aplicacions"</b>\n"Instal·la aplicacions que vulguis mantenir privades a l\'espai"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Nota important"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Les aplicacions s\'aturen quan bloqueges l\'espai"</b>\n"Quan bloquegis l\'espai, les aplicacions de l\'espai s\'aturaran i no en rebràs notificacions"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Els espais privats no són adequats per a les aplicacions que necessiten executar-se en segon pla o enviar notificacions crítiques, com ara aplicacions de medicina. Això és perquè les notificacions i l\'activitat en segon pla s\'aturen quan l\'espai es bloqueja.\n\nLes aplicacions del teu espai privat no apareixeran al gestor de permisos, al tauler de privadesa ni en altres opcions de configuració quan l\'espai privat estigui bloquejat.\n\nL\'espai privat no es pot moure a un dispositiu nou. Caldrà que configuris un altre espai privat si el vols utilitzar en un altre dispositiu.\n\nQualsevol persona que connecti el teu dispositiu a un ordinador o instal·li aplicacions perjudicials al teu dispositiu podria accedir a l\'espai privat."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Els espais privats no són adequats per a les aplicacions que necessiten executar-se en segon pla o enviar notificacions crítiques, com ara aplicacions de medicina. Això és perquè les notificacions i l\'activitat en segon pla s\'aturen quan l\'espai es bloqueja.\n\nLes aplicacions del teu espai privat no apareixeran al gestor de permisos, al tauler de privadesa ni en altres opcions de configuració quan l\'espai privat estigui bloquejat.\n\nL\'espai privat no es pot restaurar en un dispositiu nou. Hauràs de configurar un altre espai si vols utilitzar-lo en un dispositiu diferent.\n\nÉs possible que qualsevol persona que connecti el teu dispositiu a un ordinador o que instal·li aplicacions malicioses al dispositiu pugui accedir a l\'espai privat."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Els espais privats no són adequats per a les aplicacions que necessiten executar-se en segon pla o enviar notificacions crítiques, com ara aplicacions mèdiques. Això és perquè les notificacions i l\'activitat en segon pla s\'aturen quan l\'espai es bloqueja.\n\nLes aplicacions del teu espai privat no apareixeran al gestor de permisos, al tauler de privadesa ni en altres opcions de configuració quan l\'espai privat estigui bloquejat.\n\nL\'espai privat no es pot moure a un dispositiu nou. Caldrà que configuris un altre espai privat si el vols utilitzar en un dispositiu diferent.\n\nQualsevol persona que connecti el teu dispositiu a un ordinador o instal·li aplicacions perjudicials al teu dispositiu podria accedir a l\'espai privat."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Els espais privats no són adequats per a les aplicacions que necessiten executar-se en segon pla o enviar notificacions crítiques, com ara aplicacions mèdiques. Això és perquè les notificacions i l\'activitat en segon pla s\'aturen quan l\'espai es bloqueja.\n\nLes aplicacions del teu espai privat no apareixeran al gestor de permisos, al tauler de privadesa ni en altres opcions de configuració quan l\'espai privat estigui bloquejat.\n\nL\'espai privat no es pot restaurar en un dispositiu nou. Caldrà que configuris un altre espai si vols utilitzar-lo en un dispositiu diferent.\n\nQualsevol persona que connecti el teu dispositiu a un ordinador o instal·li aplicacions malicioses al dispositiu podria accedir a l\'espai privat."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Més informació sobre l\'espai privat"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Aquesta acció tardarà una estona"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"S\'està configurant l\'espai privat…"</string>
@@ -1128,7 +1134,7 @@
<string name="wifi_p2p_peer_devices" msgid="5158559154640283546">"Altres dispositius"</string>
<string name="wifi_p2p_remembered_groups" msgid="5497007770930525695">"Grups recordats"</string>
<string name="wifi_p2p_failed_connect_message" msgid="6767831720507440027">"No s\'ha pogut connectar."</string>
- <string name="wifi_p2p_failed_rename_message" msgid="1317434386267376606">"S\'ha produït un error en canviar el nom del dispositiu."</string>
+ <string name="wifi_p2p_failed_rename_message" msgid="1317434386267376606">"Hi ha hagut un error en canviar el nom del dispositiu."</string>
<string name="wifi_p2p_disconnect_title" msgid="96361896458072463">"Vols desconnectar?"</string>
<string name="wifi_p2p_disconnect_message" msgid="1208761239498807208">"Si et desconnectes, finalitzarà la teva connexió amb <xliff:g id="PEER_NAME">%1$s</xliff:g>."</string>
<string name="wifi_p2p_disconnect_multiple_message" msgid="4490648217799144078">"Si et desconnectes, finalitzarà la teva connexió amb <xliff:g id="PEER_NAME">%1$s</xliff:g> i amb <xliff:g id="PEER_COUNT">%2$s</xliff:g> dispositius més."</string>
@@ -1660,9 +1666,9 @@
<string name="wallpaper_attributions" msgid="4323659759250650736">"Crèdits de fons de pantalla"</string>
<string name="wallpaper_attributions_values" msgid="987277439026021925">"Proveïdors d\'imatges de satèl·lit:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
<string name="settings_manual_activity_title" msgid="1682978148920788484">"Manual"</string>
- <string name="settings_manual_activity_unavailable" msgid="2514549851682321576">"S\'ha produït un problema en carregar el manual."</string>
+ <string name="settings_manual_activity_unavailable" msgid="2514549851682321576">"Hi ha hagut un problema en carregar el manual."</string>
<string name="settings_license_activity_title" msgid="7832071619364734914">"Llicències de tercers"</string>
- <string name="settings_license_activity_unavailable" msgid="9014803774391134570">"S\'ha produït un problema en llegir les llicències."</string>
+ <string name="settings_license_activity_unavailable" msgid="9014803774391134570">"Hi ha hagut un problema en llegir les llicències."</string>
<string name="settings_license_activity_loading" msgid="1653151990366578827">"S\'està carregant…"</string>
<string name="settings_safetylegal_activity_loading" msgid="1757860124583063395">"S\'està carregant…"</string>
<string name="lockpassword_choose_your_password_header" msgid="2407205113298094824">"Defineix una contrasenya"</string>
@@ -1770,7 +1776,7 @@
<string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="8844682343443755895">"El bloqueig del perfil de treball no compleix els requisits de seguretat de la teva organització. Pots fer servir el mateix bloqueig per a la pantalla del dispositiu i per al perfil de treball, però s\'aplicaran les polítiques de bloqueig professionals que hi pugui haver."</string>
<string name="lock_settings_profile_unification_dialog_confirm" msgid="6276915393736137843">"Utilitza un sol bloqueig"</string>
<string name="lock_settings_profile_unification_dialog_uncompliant_confirm" msgid="8509287115116369677">"Utilitza un sol bloqueig"</string>
- <string name="lock_settings_profile_unified_summary" msgid="777095092175037385">"El mateix bloqueig de pantalla que el del dispositiu"</string>
+ <string name="lock_settings_profile_unified_summary" msgid="777095092175037385">"El mateix que el bloqueig de pantalla del dispositiu"</string>
<string name="manageapplications_settings_title" msgid="9198876415524237657">"Gestiona les aplicacions"</string>
<string name="applications_settings" msgid="1941993743933425622">"Informació de les aplicacions"</string>
<string name="applications_settings_header" msgid="3154670675856048015">"Configuració de l\'aplicació"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"El teclat ignora les pulsacions repetides ràpidament de la mateixa tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Llindar de la tecla de rebot"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Tria el temps que vols que el teclat ignori les pulsacions repetides de tecles"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalitzat"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalitzat"</string>
<string name="slow_keys" msgid="2891452895499690837">"Tecles lentes"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajusta el temps que tarda la pulsació d\'una tecla en activar-se"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Tecles permanents"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Prem una tecla cada vegada per a les dreceres en lloc de mantenir premudes les tecles alhora"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Tecles del ratolí"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Utilitza les tecles del ratolí"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Utilitza el teclat per controlar el punter"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Desplaçament invers del ratolí"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Desplaça\'t cap amunt per moure la pàgina cap avall"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Canvia els botons dret i esquerre"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Utilitza el botó esquerre del ratolí com si fos el dret"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tecles del ratolí per a <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Utilitza les tecles <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> per moure el punter del ratolí"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Utilitza la tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> per fer clic al botó principal del ratolí"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Utilitza la tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> per mantenir premut el botó principal del ratolí"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Utilitza la tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> per deixar anar el botó principal del ratolí"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Utilitza la tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> per canviar el mode de desplaçament. Això farà que les tecles <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> desplacin la visualització cap amunt, cap avall, cap a l\'esquerra o cap a la dreta."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Utilitza la tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> per fer clic al botó secundari del ratolí"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Tecles de drecera"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostra la llista de dreceres"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Teclats i eines del perfil de treball"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Tria una tecla nova per a <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accessibilitat del teclat físic"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Tecles permanents, tecles de rebot, tecles del ratolí"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repeteix les tecles"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Retard abans de la repetició"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Freqüència de repetició"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Mantén premuda una tecla per repetir-ne el caràcter fins que la deixis anar"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Disseny de <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predeterminat"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automàtic: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2210,7 +2222,7 @@
<string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"Drecera de la configuració ràpida"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"Drecera del gest d\'accessibilitat"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Utilitza el gest d\'accessibilitat"</string>
- <string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Per utilitzar aquesta funció, toca el botó d\'accessibilitat <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> a la part inferior de la pantalla.\n\nPer canviar entre funcions, mantén premut el botó d\'accessibilitat."</string>
+ <string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Per utilitzar aquesta funció, toca el botó d\'accessibilitat <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> a la part inferior de la pantalla.\n\nPer canviar d\'una funció a una altra, mantén premut el botó d\'accessibilitat."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"Per utilitzar aquesta funció, toca el botó d\'accessibilitat de la pantalla"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="3785791536286606664">"Per utilitzar aquesta funció, mantén premudes les dues tecles de volum"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Per iniciar o aturar l\'ampliació, fes triple toc en qualsevol punt de la pantalla."</string>
@@ -2218,11 +2230,11 @@
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"Per iniciar o aturar l\'ampliació, toca ràpidament la pantalla dues vegades amb %1$d dits"</string>
<string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{Per utilitzar aquesta funció, llisca cap avall des de la part superior de la pantalla. A continuació, cerca la icona de {featureName}.}other{Per utilitzar aquesta funció, llisca cap avall amb # dits des de la part superior de la pantalla. A continuació, cerca la icona de {featureName}.}}"</string>
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"Aquesta drecera estarà disponible quan acabis de configurar el dispositiu."</string>
- <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Per utilitzar aquesta funció, llisca cap amunt amb 2 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 2 dits i mantén premut."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Per utilitzar aquesta funció, llisca cap amunt amb 2 dits des de la part inferior de la pantalla.\n\nPer canviar d\'una funció a una altra, llisca cap amunt amb 2 dits i mantén premut."</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{Per utilitzar aquesta funció, llisca cap amunt des de la part inferior de la pantalla}other{Per utilitzar aquesta funció, llisca cap amunt amb # dits des de la part inferior de la pantalla}}"</string>
- <string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Per utilitzar aquesta funció, llisca cap amunt amb 3 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 3 dits i mantén premut."</string>
- <string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Per utilitzar una funció d\'accessibilitat, llisca cap amunt amb 2 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 2 dits i mantén premut."</string>
- <string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Per utilitzar una funció d\'accessibilitat, llisca cap amunt amb 3 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 3 dits i mantén premut."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Per utilitzar aquesta funció, llisca cap amunt amb 3 dits des de la part inferior de la pantalla.\n\nPer canviar d\'una funció a una altra, llisca cap amunt amb 3 dits i mantén premut."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Per utilitzar una funció d\'accessibilitat, llisca cap amunt amb 2 dits des de la part inferior de la pantalla.\n\nPer canviar d\'una funció a una altra, llisca cap amunt amb 2 dits i mantén premut."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Per utilitzar una funció d\'accessibilitat, llisca cap amunt amb 3 dits des de la part inferior de la pantalla.\n\nPer canviar d\'una funció a una altra, llisca cap amunt amb 3 dits i mantén premut."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Entesos"</string>
<string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Personalitza el botó"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Més opcions"</string>
@@ -2234,8 +2246,8 @@
<string name="accessibility_shortcut_edit_dialog_title_software" msgid="6505512764022389951">"Botó d\'accessibilitat"</string>
<string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"Toca el botó flotant"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"Gest d\'accessibilitat"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"Toca el botó d\'accessibilitat <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> a la part inferior de la pantalla. Per canviar entre funcions, mantén premut el botó d\'accessibilitat."</string>
- <string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Llisca cap amunt des de la part inferior de la pantalla. Per canviar entre funcions, llisca cap amunt i mantén premut.}other{Llisca cap amunt amb # dits des de la part inferior de la pantalla. Per canviar entre funcions, llisca cap amunt amb # dits i mantén premut.}}"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"Toca el botó d\'accessibilitat <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> a la part inferior de la pantalla. Per canviar d\'una funció a una altra, mantén premut el botó d\'accessibilitat."</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Llisca cap amunt des de la part inferior de la pantalla. Per canviar d\'una funció a una altra, llisca cap amunt i mantén premut.}other{Llisca cap amunt amb # dits des de la part inferior de la pantalla. Per canviar d\'una funció a una altra, llisca cap amunt amb # dits i mantén premut.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"Més opcions"</annotation></string>
<string name="footer_learn_more_content_description" msgid="8843798273152131341">"Més informació sobre <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"Configuració ràpida"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Redueix el consum de la bateria"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Paquets inclosos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Les aplicacions funcionen correctament"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Es recomana substituir la bateria"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"La capacitat de la bateria i el rendiment de la càrrega han disminuït; es recomana substituir la bateria."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nivell de bateria baix"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Activa Estalvi de bateria per allargar la durada de la bateria"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Millora la durada de la bateria"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vols desconnectar aquesta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desconnecta"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versió"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versió <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Oblida la VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Vols substituir la VPN actual?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Vols definir la VPN sempre activa?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"De 9:00 a 17:00 entre setmana\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Esdeveniments del calendari"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} està actiu}=2{{mode_1} i {mode_2} estan actius}=3{{mode_1}, {mode_2} i {mode_3} estan actius}other{{mode_1}, {mode_2} i # més estan actius}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode es pot activar automàticament}other{# modes es poden activar automàticament}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{No molestis}=1{{mode_1}}=2{{mode_1} i {mode_2}}other{{mode_1}, {mode_2} i {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVAT"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"No definit"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Desactivat"</string>
@@ -3467,7 +3480,7 @@
<string name="mode_dark_theme_title" msgid="8099007897943513209">"Activa el tema fosc"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activa el tema fosc"</string>
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"Canvia el tema del dispositiu per utilitzar un fons fosc, que és més agradable per a la vista"</string>
- <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No hi ha cap canvi a la pantalla}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}other{{effect_1}, {effect_2} i # més}}"</string>
+ <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No hi ha cap canvi de visualització}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}other{{effect_1}, {effect_2} i # més}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"Permet totes les notificacions"</string>
<string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Les persones, les aplicacions i els sons poden interrompre"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcions de visualització per a les notificacions filtrades"</string>
@@ -3494,7 +3507,7 @@
<string name="zen_mode_block_effect_status" msgid="5765965061064691918">"Amaga les icones de la barra d\'estat a la part superior de pantalla"</string>
<string name="zen_mode_block_effect_badge" msgid="332151258515152429">"Amaga els punts de notificació a les icones de les aplicacions"</string>
<string name="zen_mode_block_effect_ambient" msgid="1247740599476031543">"No l\'activis amb notificacions"</string>
- <string name="zen_mode_block_effect_list" msgid="7549367848660137118">"Amaga de l\'àrea desplegable"</string>
+ <string name="zen_mode_block_effect_list" msgid="7549367848660137118">"Amaga a l\'àrea desplegable"</string>
<string name="zen_mode_block_effect_summary_none" msgid="6688519142395714659">"Mai"</string>
<string name="zen_mode_block_effect_summary_screen_off" msgid="6989818116297061488">"Quan la pantalla estigui desactivada"</string>
<string name="zen_mode_block_effect_summary_screen_on" msgid="4876016548834916087">"Quan la pantalla estigui activada"</string>
@@ -3519,7 +3532,7 @@
<string name="zen_mode_sound_summary_on_with_info" msgid="4803606180235742003">"Activat / <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="zen_mode_sound_summary_on" msgid="9077659040104989899">"Activat"</string>
<string name="zen_mode_duration_summary_always_prompt" msgid="7658172853423383037">"Pregunta sempre"</string>
- <string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"Fins que no el desactivis"</string>
+ <string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"Fins que no ho desactivis"</string>
<string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 hora}other{# hores}}"</string>
<string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 minut}other{# minuts}}"</string>
<string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{Desactivat}=1{Desactivat / Es pot activar automàticament 1 programació}other{Desactivat / Es poden activar automàticament # programacions}}"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Quan rebis moltes notificacions en poc temps, el dispositiu abaixarà el volum i minimitzarà les alertes durant un màxim de 2 minuts. Les trucades, les alarmes i les converses prioritàries no es veuran afectades. \n\nLes notificacions rebudes durant el període de moderació es podran trobar en lliscar cap avall des de la part superior de la pantalla."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplica als perfils de treball"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplica a les aplicacions del perfil de treball"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Serveis d\'ajuda per a RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Cap aplicació instal·lada no ha sol·licitat que s\'executi com un servei d\'ajuda per a RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Vols permetre que <xliff:g id="SERVICE">%1$s</xliff:g> accedeixi al servei RV?"</string>
@@ -3838,7 +3861,7 @@
<string name="zen_mode_messages" msgid="7315084748885170585">"Missatges"</string>
<string name="zen_mode_messages_list" msgid="5431014101342361882">"missatges"</string>
<string name="zen_mode_messages_title" msgid="1777598523485334405">"Missatges"</string>
- <string name="zen_mode_messages_header" msgid="253721635061451577">"Missatges que et poden interrompre"</string>
+ <string name="zen_mode_messages_header" msgid="253721635061451577">"Missatges que poden interrompre"</string>
<string name="zen_mode_messages_footer" msgid="6002468050854126331">"Per assegurar-te que els missatges permesos emetin so, comprova que s\'hagi configurat el dispositiu perquè soni"</string>
<string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"Amb la programació \"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\", els missatges entrants es bloquegen. Pots ajustar la configuració per permetre que els teus amics, familiars o altres persones contactin amb tu."</string>
<string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"Pots rebre tots els missatges"</string>
@@ -3917,7 +3940,7 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Canvia al mode Només alarmes durant 1 hora fins a les {time}}other{Canvia al mode Només alarmes durant # hores fins a les {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Canvia al mode Només alarmes fins a les <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Canvia al mode Interromp sempre"</string>
- <string name="zen_mode_rename_title" msgid="8146882272966214558">"Mode d\'edició"</string>
+ <string name="zen_mode_rename_title" msgid="8146882272966214558">"Edita el mode"</string>
<string name="zen_mode_new_custom_title" msgid="7513785385574267851">"Crea un mode"</string>
<string name="zen_mode_new_custom_default_name" msgid="2778307946775085105">"Mode personalitzat"</string>
<string name="zen_mode_edit_name_hint" msgid="4584652062167540536">"Nom del mode"</string>
@@ -3942,7 +3965,7 @@
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Bloqueja les distraccions o les interrupcions del dispositiu per no perdre la concentració"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"Elimina totes les distraccions per aconseguir un entorn tranquil"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"Personalitza les experiències i la configuració del dispositiu per a diferents usuaris"</string>
- <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Minimitza les interrupcions permetent que només et contactin persones i aplicacions importants"</string>
+ <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Minimitza les interrupcions permetent que només les persones i aplicacions importants es posin en contacte amb tu"</string>
<string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Configura un mode que segueixi una programació regular"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"Mantén el dispositiu sincronitzat amb els esdeveniments del dia"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"Desperta\'t amb energia"</string>
@@ -3999,7 +4022,7 @@
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"Enllaços admesos"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"Altres preferències predeterminades"</string>
<string name="app_launch_add_link" msgid="8622558044530305811">"Afegeix un enllaç"</string>
- <string name="app_launch_footer" msgid="4521865035105622557">"Una aplicació pot verificar els enllaços per obrir-los automàticament."</string>
+ <string name="app_launch_footer" msgid="4521865035105622557">"Una aplicació pot verificar els enllaços perquè s\'obrin automàticament a l\'aplicació."</string>
<string name="app_launch_verified_links_title" msgid="621908751569155356">"{count,plural, =1{# enllaç verificat}other{# enllaços verificats}}"</string>
<string name="app_launch_verified_links_message" msgid="190871133877476176">"{count,plural, =1{Aquest enllaç està verificat i s\'obre automàticament en aquesta aplicació.}other{Aquests enllaços estan verificats i s\'obren automàticament en aquesta aplicació.}}"</string>
<string name="app_launch_dialog_ok" msgid="1446157681861409861">"D\'acord"</string>
@@ -5045,10 +5068,10 @@
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"Permet l\'accés a la cartera des de la pantalla de bloqueig"</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"Mostra l\'escàner de codis QR"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Permet l\'accés a l\'escàner de codis QR des de la pantalla de bloqueig"</string>
- <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Mostra els controls del dispositiu"</string>
+ <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Mostra els controls de dispositius"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Des de la pantalla de bloqueig"</string>
- <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Fes servir els controls del dispositiu"</string>
- <string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Per utilitzar-ho, primer activa Mostra el control de dispositius"</string>
+ <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Fes servir els controls de dispositius"</string>
+ <string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Per utilitzar-ho, primer activa Mostra elD controls de dispositius"</string>
<string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"La mida del rellotge canvia d\'acord amb el contingut de la pantalla de bloqueig"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"Rellotge dinàmic"</string>
<string name="lockscreen_quick_affordances_title" msgid="8615741551327565793">"Dreceres"</string>
@@ -5274,7 +5297,7 @@
<string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Prova una nova relació d\'aspecte per veure una aplicació en cas que no s\'hagi dissenyat per adaptar-se al teu dispositiu (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). Pot ser que algunes aplicacions no estiguin optimitzades per a determinades relacions d\'aspecte."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"Aplicacions suggerides"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"Apps canviades"</string>
- <string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Predeterminat de l\'aplicació"</string>
+ <string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Predeterminada de l\'aplicació"</string>
<string name="user_aspect_ratio_fullscreen" msgid="1843427242540081996">"Pantalla completa"</string>
<string name="user_aspect_ratio_half_screen" msgid="1015852057094310209">"Mitja pantalla"</string>
<string name="user_aspect_ratio_device_size" msgid="2339820985120881199">"Relació d\'aspecte del dispositiu"</string>
@@ -5342,7 +5365,7 @@
<string name="about_phone_device_name_warning" msgid="3243226572404472381">"El nom del dispositiu és visible per a les aplicacions que has instal·lat. També el poden veure altres persones si el connectes a un dispositiu Bluetooth o a una xarxa Wi‑Fi, o si configures un punt d\'accés Wi‑Fi."</string>
<string name="grammatical_gender_title" msgid="8584242850477270828">"Gènere gramatical"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"Selecciona el gènere gramatical"</string>
- <string name="content_protection_preference_title" msgid="5069260032659193074">"S\'estan cercant aplicacions enganyoses"</string>
+ <string name="content_protection_preference_title" msgid="5069260032659193074">"Cerca d\'aplicacions enganyoses"</string>
<string name="content_protection_preference_summary" msgid="2252393849408445391">"Comprova l\'activitat de les aplicacions per detectar pesca de credencials"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"Cerca aplicacions enganyoses"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"Cerca aplicacions de treball enganyoses"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Escolta el flux d\'àudio"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Escaneja el codi QR d\'un flux d\'àudio per escoltar-lo amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"No es pot editar la contrasenya durant la compartició. Per canviar la contrasenya, primer desactiva la compartició d\'àudio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"La contrasenya ha de tenir entre 4 i 16 caràcters i només pot contenir lletres, números i símbols"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Escàner de codis QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Necessites ajuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Configuració de la cerca"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Només dispositiu"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Els contactes nous no se sincronitzaran amb un compte"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Els contactes es desaran al dispositiu i se sincronitzaran amb el teu compte de manera predeterminada"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Cap compte predeterminat definit"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Hi ha hagut un error en definir el compte predeterminat"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Cap compte predeterminat definit"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Només dispositiu"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Afegeix un compte per començar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Encercla per cercar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Mantén premut el botó d\'inici o l\'ansa de navegació per cercar utilitzant el contingut de la pantalla."</string>
</resources>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index 599eed4..84386e3 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktovka"</item>
+ <item msgid="184985872234062767">"Klasicistní budova"</item>
+ <item msgid="9189550412466785530">"Bytový dům"</item>
+ <item msgid="2142527562511049422">"Řečová bublina"</item>
+ <item msgid="2548100558260478605">"Skupina lidí"</item>
+ <item msgid="2270003903304578284">"Žárovka"</item>
+ <item msgid="4793496619091161864">"Kalendář"</item>
+ <item msgid="5673625795644364100">"Nerušit"</item>
+ <item msgid="1423820834865831361">"Běžící osoba"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Jednoruční činka"</item>
+ <item msgid="2730180105015616518">"Plavání"</item>
+ <item msgid="2666922823253345958">"Osoba na túře"</item>
+ <item msgid="8234880356472211396">"Osoba házející míč"</item>
+ <item msgid="4642980625253001443">"Kopající osoba"</item>
+ <item msgid="4324795269518833500">"Herní ovladač"</item>
+ <item msgid="7789966425125441125">"Malířova paleta"</item>
+ <item msgid="663512680597461570">"Sněhová vločka"</item>
+ <item msgid="7952183800501346803">"Plážový slunečník"</item>
+ <item msgid="799139025758265891">"Dílenské nástroje"</item>
+ <item msgid="8112685757657659269">"Klavír"</item>
+ <item msgid="3861584909935022342">"Filmový pás"</item>
+ <item msgid="5827426100157335512">"Kniha"</item>
+ <item msgid="8585828346253128384">"Lotosový květ"</item>
+ <item msgid="8788370542815300188">"Lidská mysl"</item>
+ <item msgid="7287354964767553293">"Sluchátka"</item>
+ <item msgid="2530059623783800987">"Televize"</item>
+ <item msgid="5307182323469376758">"Vlak"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Vidlička a nůž"</item>
+ <item msgid="8939998598599064900">"Nákupní košík"</item>
+ <item msgid="3379605903308731893">"Dítě"</item>
+ <item msgid="7808668968550293112">"Tlapa zvířete"</item>
+ <item msgid="1000692647524056504">"Hvězdička"</item>
+ <item msgid="8270261073421676502">"Dva lidé"</item>
+ <item msgid="5767782819651505460">"Hvězda"</item>
+ <item msgid="4368451291862729334">"Srdíčko"</item>
+ <item msgid="2613199102208419986">"Dům"</item>
+ <item msgid="3022279986430275040">"Půlměsíc"</item>
+ <item msgid="5421089790869483206">"Hodiny"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 6bfe729..2f85e18 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Spárovat nové zařízení"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Zítra automaticky zapnout"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Spárovat pravé ucho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Spárovat levé ucho"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Spárovat druhé ucho"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Deaktivovat Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Vypne funkci zvuku přes Bluetooth LE, pokud zařízení podporuje hardwarové zvukové funkce LE."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Režim Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Povolit náhled uživatelského rozhraní vysílání přes Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Umožňuje zobrazit náhled uživatelského rozhraní sdílení LE Audio včetně osobního sdílení zvuku a soukromého vysílání"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Zobrazit přepínač LE Audio v Podrobnostech o zařízení"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Obejít seznam povolených pro Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Ve výchozím nastavení použít LE Audio i v případě, že u periferního zařízení LE Audio nebylo ověřeno splnění kritérií na seznamu povolených."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Nastavit automaticky pomocí sítě a bezdrátových signálů"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatické časové pásmo"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Nastavit automaticky podle mobilních sítí v okolí"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Nastavit automaticky podle polohy zařízení (pokud je k dispozici)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Používat výchozí nastavení jazyka"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Používat 24hodinový formát"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Čas"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Prst opakovaně zvedejte a přikládejte na senzor."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Snímač otisků prstů nelze použít"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Navštivte servis."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Odemknutí otiskem prstu při vypnuté obrazovce"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Použijte odemknutí otiskem prstu, i když je obrazovka vypnutá"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Vypnutá obrazovka, odemknutí"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Další nastavení zabezpečení"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Zámek pracovního profilu, šifrování a další"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifrování, přihlašovací údaje a další"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klávesnice ignoruje opakovaná stisknutí jedné klávesy"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Limit opakovaného stisknutí"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Vyberte dobu, po kterou bude klávesnice ignorovat opakované stisknutí klávesy"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Vlastní"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"vlastní hodnota"</string>
<string name="slow_keys" msgid="2891452895499690837">"Zpomalení kláves"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Upraví čas aktivace po stisknutí klávesy"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Jedním prstem"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Místo držení více kláves aktivujte zkratky postupným tisknutím jednotlivých kláves"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Klávesy pro myš"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Používat klávesy myši"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Ukazatel můžete ovládat pomocí klávesnice"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Opačné posouvání myší"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Při posunutí nahoru posunout stránku dolů"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Prohodit levé a pravé tlačítko"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Používat levé tlačítko myši jako pravé"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Klávesy myši na klávesnici <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"K přesunutí ukazatele myši používat klávesy <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Ke kliknutí primárním tlačítkem myši používat klávesu <xliff:g id="CLICK_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"K podržení primárního tlačítka myši používat klávesu <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"K uvolnění primárního tlačítka myši používat klávesu <xliff:g id="RELEASE_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"K přepnutí režimu posouvání používat klávesu <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>. Klávesy <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> tak budou sloužit k posunutí zobrazení nahoru, dolů, doleva nebo doprava"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Ke kliknutí sekundárním tlačítkem myši používat klávesu <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Klávesové zkratky"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Zobrazit seznam zkratek"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Klávesnice a nástroje v pracovním profilu"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Vyberte novou klávesu pro <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Přístupnost na fyzické klávesnici"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Funkce Jedním prstem, klávesy pro opuštění, klávesy pro myš"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Opakovat klávesy"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Prodleva před opakováním"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Rychlost opakování"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Při podržení klávesy se bude znak opakovaně zadávat, dokud klávesu neuvolníte"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Rozvržení <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Výchozí"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatické: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2271,7 +2283,7 @@
<string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Používat tlačítko nebo gesto"</string>
<string name="accessibility_button_location_title" msgid="7182107846092304942">"Umístění"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"Velikost"</string>
- <string name="accessibility_button_fade_title" msgid="8081993897680588829">"Vybledne, když se nepoužívá"</string>
+ <string name="accessibility_button_fade_title" msgid="8081993897680588829">"Skrýt, když se nepoužívá"</string>
<string name="accessibility_button_fade_summary" msgid="7865950833524973709">"Po několika sekundách zmizí, takže je obrazovka lépe vidět"</string>
<string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Míra průhlednosti při nepoužívání"</string>
<string name="accessibility_button_low_label" msgid="4193015407828927741">"Průhledné"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Upravit spotřebu energie"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Zahrnuté balíčky"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikace běží normálně"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Doporučujeme výměnu baterie"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Kapacita a výkon baterie při nabíjení jsou snížené. Doporučujeme výměnu baterie."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Baterie je slabá"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Pokud chcete prodloužit výdrž baterie, zapněte Spořič baterie"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Prodloužení životnosti baterie"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Odpojit tuto síť VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Odpojit"</string>
<string name="vpn_version" msgid="6344167191984400976">"Verze"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Verze <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Zapomenout VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Nahradit stávající síť VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Nastavit trvalou síť VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„9:00–17:00, pracovní dny“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Události v kalendáři"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Režim {mode_1} je aktivní}=2{Režimy {mode_1} a {mode_2} jsou aktivní}=3{Režimy {mode_1}, {mode_2} a {mode_3} jsou aktivní}few{Režimy {mode_1}, {mode_2} a # další jsou aktivní}many{Režimy {mode_1}, {mode_2} a # dalšího jsou aktivní}other{Režimy {mode_1}, {mode_2} a # dalších je aktivních}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 režim se může zapnout automaticky}few{# režimy se mohou zapnout automaticky}many{# režimu se může zapnout automaticky}other{# režimů se může zapnout automaticky}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Nerušit}=1{{mode_1}}=2{{mode_1}, {mode_2}}few{{mode_1}, {mode_2}, {mode_3}}many{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ZAPNUTO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nenastaveno"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Vypnuto"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Když během krátké doby obdržíte mnoho oznámení, zařízení až na dvě minuty sníží hlasitost a minimalizuje upozornění. Hovorů, budíků a prioritních konverzací se to nedotkne. \n\nOznámení přijatá během zeslabení zobrazíte přejetím prstem dolů z horního okraje obrazovky."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplikovat u pracovních profilů"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Používat u aplikací v pracovním profilu"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Pomocné služby VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Žádné nainstalované aplikace nepožádaly o spuštění jako pomocná služba VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Povolit službě <xliff:g id="SERVICE">%1$s</xliff:g> přístup ke službě virtuální reality?"</string>
@@ -5461,18 +5484,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Poslouchat stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Naskenujte QR kód zvukového streamu a poslouchejte na zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Heslo nelze upravit během sdílení. Pokud chcete změnit heslo, nejdříve vypněte sdílení zvuku."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Heslo musí mít 4–16 znaků a může obsahovat jen písmena, číslice a symboly"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Čtečka QR kódů"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Potřebujete poradit?"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"Vyhledávat v nastavení"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"Vyhledat v nastavení"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"kontakty, úložiště, účet"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"Úložiště kontaktů"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Pouze zařízení"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nové kontakty se nebudou synchronizovat s účtem"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakty se ve výchozím nastavení uloží do zařízení a synchronizují s účtem"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Žádné výchozí nastavení"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Při nastavování výchozího účtu došlo k chybě"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Žádné výchozí nastavení"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Pouze zařízení"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Začněte tím, že přidáte účet"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Zakroužkuj a hledej"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Pokud chcete vyhledávat pomocí obsahu na obrazovce, podržte tlačítko plochy nebo navigační úchyt."</string>
</resources>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index 0aba2de..20c4aba 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Mappe"</item>
+ <item msgid="184985872234062767">"Klassisk bygning"</item>
+ <item msgid="9189550412466785530">"Lejlighedskompleks"</item>
+ <item msgid="2142527562511049422">"Taleboble"</item>
+ <item msgid="2548100558260478605">"Gruppe af personer"</item>
+ <item msgid="2270003903304578284">"Lyspære"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Forstyr ikke"</item>
+ <item msgid="1423820834865831361">"Person, der løber"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Håndvægt"</item>
+ <item msgid="2730180105015616518">"Svømning"</item>
+ <item msgid="2666922823253345958">"Person på vandretur"</item>
+ <item msgid="8234880356472211396">"Person, der kaster en bold"</item>
+ <item msgid="4642980625253001443">"Person, der sparker"</item>
+ <item msgid="4324795269518833500">"Spilcontroller"</item>
+ <item msgid="7789966425125441125">"Malerpalet"</item>
+ <item msgid="663512680597461570">"Snefnug"</item>
+ <item msgid="7952183800501346803">"Parasol"</item>
+ <item msgid="799139025758265891">"Værktøj"</item>
+ <item msgid="8112685757657659269">"Klaver"</item>
+ <item msgid="3861584909935022342">"Filmspole"</item>
+ <item msgid="5827426100157335512">"Bog"</item>
+ <item msgid="8585828346253128384">"Lotusblomst"</item>
+ <item msgid="8788370542815300188">"En persons sind"</item>
+ <item msgid="7287354964767553293">"Høretelefoner"</item>
+ <item msgid="2530059623783800987">"Fjernsyn"</item>
+ <item msgid="5307182323469376758">"Tog"</item>
+ <item msgid="4903790544026923026">"Bil"</item>
+ <item msgid="5010405583912314582">"Kniv og gaffel"</item>
+ <item msgid="8939998598599064900">"Kurv"</item>
+ <item msgid="3379605903308731893">"Barn"</item>
+ <item msgid="7808668968550293112">"Dyrepote"</item>
+ <item msgid="1000692647524056504">"Stjernebadge"</item>
+ <item msgid="8270261073421676502">"To personer"</item>
+ <item msgid="5767782819651505460">"Stjerne"</item>
+ <item msgid="4368451291862729334">"Hjerte"</item>
+ <item msgid="2613199102208419986">"Hus"</item>
+ <item msgid="3022279986430275040">"Halvmåne"</item>
+ <item msgid="5421089790869483206">"Ur"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 797c328..2a3d19a 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Par en ny enhed"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Aktivér automatisk i morgen"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Par højre øre"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Par venstre øre"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Par det andet høreapparat"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Deaktiver Bluetooth LE-lyd"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Deaktiverer funktionen Bluetooth LE-lyd, hvis enheden understøtter denne LE-lyd til hardware."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Tilstanden Bluetooth LE-lyd"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Aktivér preview af brugerfladen for broadcast af Bluetooth LE-lyd"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Aktiverer preview af brugerfladen for LE-lyddeling, herunder personlig lyddeling og privat broadcast"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Vis kontakten til LE-lyd i Enhedsoplysninger"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omgå tilladelsesliste for Bluetooth LE-lyd"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Brug LE-lyd som standard, selvom det ikke er verificeret, at den eksterne LE-lydenhed opfylder kriterierne for tilladelseslisten."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Indstil automatisk ved hjælp af dit netværk og trådløse signaler"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatisk tidszone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Indstil automatisk baseret på mobilnetværk i nærheden af dig"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Angiv automatisk ved hjælp af din enhedslokation, hvis det er muligt"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Brug landestandard"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Brug 24-timers format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Klokkeslæt"</string>
@@ -285,7 +288,7 @@
<string name="location_settings_title" msgid="8375074508036087178">"Lokation"</string>
<string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Brug lokation"</string>
<string name="location_settings_summary_location_off" msgid="4797932754681162262">"Fra"</string>
- <string name="location_settings_summary_location_on" msgid="4273299717586679786">"{count,plural, =1{Til/# app har adgang til din lokation}one{Til/# app har adgang til din lokation}other{Til/# apps har adgang til din lokation}}"</string>
+ <string name="location_settings_summary_location_on" msgid="4273299717586679786">"{count,plural, =1{Til / # app har adgang til din lokation}one{Til / # app har adgang til din lokation}other{Til / # apps har adgang til din lokation}}"</string>
<string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Indlæser…"</string>
<string name="location_settings_footer_general" msgid="3447585552176173502">"Apps med tilladelse fra enheder i nærheden kan fastslå den relative positionering af forbundne enheder."</string>
<string name="location_settings_footer_location_off" msgid="8568995909147566720">"Adgangen til Lokation er deaktiveret for apps og tjenester. Din enhedslokation kan stadig blive sendt til udrykningsberedskab, hvis du ringer eller sender en sms til et alarmnummer."</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Løft fingeren, og tryk på sensoren igen"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Fingeraftrykssensoren kan ikke bruges"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Få den repareret."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Fingeroplåsning ved slukket skærm"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Brug fingeroplåsning, selv når skærmen er slukket"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Oplåsning ved slukket skærm"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Flere sikkerhedsindstillinger"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Lås til arbejdsprofil, kryptering og mere"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Kryptering, loginoplysninger og mere"</string>
@@ -860,7 +866,7 @@
<string name="bluetooth_device_keyboard_settings_preference_title" msgid="3411693160917620519">"Tastaturindstillinger"</string>
<string name="bluetooth_device_more_settings_preference_title" msgid="6034482566541746500">"Flere indstillinger"</string>
<string name="bluetooth_device_more_settings_preference_summary" msgid="7639584132778245426">"Firmwareopdateringer, om m.m."</string>
- <string name="bluetooth_device_tip_support" msgid="6072338493592606897">"Support og tips"</string>
+ <string name="bluetooth_device_tip_support" msgid="6072338493592606897">"Support og tip"</string>
<string name="bluetooth_device_mac_address" msgid="4873325074786732703">"Enhedens Bluetooth-adresse: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_multuple_devices_mac_address" msgid="4974301550897923376">"Enhedens Bluetooth-adresse:\n<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
<string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"Vil du glemme denne enhed?"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tastaturet ignorerer gentagende, hurtige tryk på den samme tast"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Grænse for elastiktaster"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Vælg, hvor lang tid dit tastatur skal ignorere gentagne tastetryk"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 sekunder"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 sekunder"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 sekunder"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 sekunder"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 sekunder"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 sekunder"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Tilpasset"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"tilpasset værdi"</string>
<string name="slow_keys" msgid="2891452895499690837">"Langsomtaster"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Justerer den tid, det tager, før et tastetryk aktiveres"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Træge taster"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Tryk på én tast ad gangen for at bruge genveje i stedet for at holde flere taster nede på samme tid"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Musetaster"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Brug musetaster"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Brug dit tastatur til at styre markøren"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Omvendt rulning på mus"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Rul opad for at gå ned på siden"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Byt om på knapperne (venstre og højre)"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Brug venstre museknap som højre"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Musetaster på <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Brug tasterne <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> til at flytte musemarkøren"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Brug <xliff:g id="CLICK_LABEL">%s</xliff:g>-tasten til at klikke med den primære museknap"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Brug <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>-tasten til at holde den primære museknap nede"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Brug <xliff:g id="RELEASE_LABEL">%s</xliff:g>-tasten til at slippe den primære museknap"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Brug <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>-tasten til at skifte tilstand for rulning. Dette får tasterne <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> til at rulle visningerne op, ned, til venstre eller til højre"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Brug <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>-tasten til at klikke med den sekundære museknap"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Tastaturgenveje"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Vis liste over genveje"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastatur og værktøjer for arbejdsprofil"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Vælg en ny ændringstast til <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Hjælpefunktioner til fysisk tastatur"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Træge taster, elastiktaster, musetaster"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Gentagelsestaster"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Forsinkelse før gentagelse"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Gentagelsesfrekvens"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hold fingeren på en tast for at gentage dens tegn, indtil du slipper tasten"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g>-layout"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Standard"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatisk: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2273,7 +2285,7 @@
<string name="accessibility_button_size_title" msgid="5785110470538960881">"Størrelse"</string>
<string name="accessibility_button_fade_title" msgid="8081993897680588829">"Udton, når funktionen ikke bruges"</string>
<string name="accessibility_button_fade_summary" msgid="7865950833524973709">"Udtones efter et par sekunder, så det bliver nemmere at se din skærm"</string>
- <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Gennemsigtig, når funktionen ikke bruges"</string>
+ <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Gennemsigtighed, når funktionen ikke bruges"</string>
<string name="accessibility_button_low_label" msgid="4193015407828927741">"Gennemsigtig"</string>
<string name="accessibility_button_high_label" msgid="9138077512008190896">"Ikke-gennemsigtig"</string>
<string name="accessibility_button_disabled_button_mode_summary" msgid="1978174613270619492">"Ikke tilgængelig, når du bruger knappetilstand i navigationslinjen."</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Juster strømforbrug"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Inkluderede pakker"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps kører normalt"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Udskiftning af batteri anbefales"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Batterikapaciteten og opladningseffektiviteten er reduceret, og det anbefales, at du udskifter batteriet."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Lavt batteriniveau"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Aktivér Batterisparefunktion for at forlænge batteritiden"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Forlæng batteritid"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vil du afbryde dette VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Afbryd forbindelse"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Glem VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Erstat det eksisterende VPN-netværk?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Vil du konfigurere konstant VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Kl. 9-17 på hverdage\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalenderbegivenheder"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} er aktiveret}=2{{mode_1} og {mode_2} er aktiveret}=3{{mode_1}, {mode_2} og {mode_3} er aktiveret}one{{mode_1}, {mode_2} og # anden er aktiveret}other{{mode_1}, {mode_2} og # andre er aktiveret}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 tilstand kan aktiveres automatisk}one{# tilstand kan aktiveres automatisk}other{# tilstande kan aktiveres automatisk}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Forstyr ikke}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"TIL"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ikke konfigureret"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Deaktiveret"</string>
@@ -3424,7 +3437,7 @@
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Bloker forstyrrende elementer"</string>
<string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Konfigurer <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Aktivér Forstyr ikke"</string>
- <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmer og medielyde kan afbryde"</string>
+ <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmer og medielyde kan forstyrre"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Tidsplaner"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Slet tidsplaner"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Slet"</string>
@@ -3437,7 +3450,7 @@
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Hvornår skal den aktiveres automatisk?"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Tidsplan for begivenhed"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Aktivér for følgende begivenheder"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Hvor finder jeg svaret på invitationen?"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Hvor svaret på invitationen er"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Tidsplan"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Tidsplan"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> t. <xliff:g id="MINUTES">%2$d</xliff:g> min."</string>
@@ -3469,7 +3482,7 @@
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"Skift enhedens tema til en mørk baggrund, som er mere behagelig for øjnene"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ingen ændringer af visningen}=1{{effect_1}}=2{{effect_1} og {effect_2}}=3{{effect_1}, {effect_2} og {effect_3}}one{{effect_1}, {effect_2} og # anden}other{{effect_1}, {effect_2} og # andre}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"Tillad alle notifikationer"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Personer, apps og lyde kan afbryde"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Personer, apps og lyde kan forstyrre"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Visningsmuligheder for filtrerede notifikationer"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Når Forstyr ikke er aktiveret"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Ingen lyd fra notifikationer"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Hvis du får mange notifikationer inden for kort tid, skruer enheden ned for lydstyrken og minimerer underretninger på skærmen i op til 2 minutter. Opkald, alarmer og prioriterede samtaler påvirkes ikke. \n\nDu kan se de notifikationer, du modtager i denne periode, ved at trække nedad fra toppen af skærmen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Anvend på arbejdsprofiler"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Anvend på apps på arbejdsprofilen"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR-hjælpetjenester"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ingen installerede apps har anmodet om at blive kørt som VR-hjælpetjenester."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Vil du tillade, at <xliff:g id="SERVICE">%1$s</xliff:g> får adgang til VR-tjenesten?"</string>
@@ -3824,12 +3847,12 @@
<string name="zen_mode_from_no_conversations" msgid="3924593219855567165">"Ingen"</string>
<string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{Ingen}=1{1 samtale}one{# samtale}other{# samtaler}}"</string>
<string name="zen_mode_from_conversations_settings" msgid="2411930666794576607">"Samtaleindstillinger"</string>
- <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"Hvem kan afbryde?"</string>
+ <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"Hvem kan forstyrre?"</string>
<string name="zen_mode_people_footer" msgid="7710707353004137431">"Selv hvis besked- og opkaldsapps ikke kan underrette dig, kan de personer, du vælger her, stadig kontakte dig via de pågældende apps"</string>
<string name="zen_mode_calls_title" msgid="2078578043677037740">"Opkald"</string>
<string name="zen_mode_calls" msgid="7653245854493631095">"Opkald"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"opkald"</string>
- <string name="zen_mode_calls_header" msgid="8379225445095856726">"Opkald, der kan afbryde"</string>
+ <string name="zen_mode_calls_header" msgid="8379225445095856726">"Opkald, der kan forstyrre"</string>
<string name="zen_mode_calls_footer" msgid="2008079711083701243">"Hvis du vil sørge for, at tilladte opkald benytter lyd, skal du tjekke, at enheden er indstillet til at ringe"</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"Indgående opkald blokeres for \"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\". Du kan ændre indstillingerne, så dine venner, din familie eller andre kontakter kan få fat i dig."</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"Stjernemarkerede kontakter"</string>
@@ -3872,33 +3895,33 @@
<string name="zen_mode_events_list" msgid="7191316245742097229">"begivenheder"</string>
<string name="zen_mode_events_list_first" msgid="7425369082835214361">"Begivenheder"</string>
<string name="zen_mode_apps_title" msgid="1691010857014041183">"Apps"</string>
- <string name="zen_mode_apps_category" msgid="4082380323683889391">"Apps, der kan afbryde"</string>
+ <string name="zen_mode_apps_category" msgid="4082380323683889391">"Apps, der kan forstyrre"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Valgte apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ingen"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Ingen apps må forstyrre}=1{{app_1} må gerne forstyrre}=2{{app_1} og {app_2} må gerne forstyrre}=3{{app_1}, {app_2} og {app_3} må gerne forstyrre}one{{app_1}, {app_2} og # mere må gerne forstyrre}other{{app_1}, {app_2} og # andre må gerne forstyrre}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Ingen apps kan forstyrre}=1{{app_1} kan forstyrre}=2{{app_1} og {app_2} kan forstyrre}=3{{app_1}, {app_2} og {app_3} kan forstyrre}one{{app_1}, {app_2} og # mere kan forstyrre}other{{app_1}, {app_2} og # andre kan forstyrre}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (arbejde)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"Beregner…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"Appindstillinger"</string>
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Tillad, at apps tilsidesætter"</string>
- <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps, der kan afbryde"</string>
+ <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps, der kan forstyrre"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Vælg flere apps"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"Ingen apps er valgt"</string>
- <string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"Ingen apps kan afbryde"</string>
+ <string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"Ingen apps kan forstyrre"</string>
<string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"Tilføj apps"</string>
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"Alle notifikationer"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"Nogle notifikationer"</string>
- <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Valgte personer kan stadig kontakte dig, selv hvis du ikke tillader, at apps kan afbryde"</string>
- <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Ingen apps kan afbryde}=1{{app_1} kan afbryde}=2{{app_1} og {app_2} kan afbryde}=3{{app_1}, {app_2} og {app_3} kan afbryde}one{{app_1}, {app_2} og # mere kan afbryde}other{{app_1}, {app_2} og # andre kan afbryde}}"</string>
+ <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Valgte personer kan stadig kontakte dig, selv hvis du ikke tillader, at apps kan forstyrre"</string>
+ <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Ingen apps kan forstyrre}=1{{app_1} kan forstyrre}=2{{app_1} og {app_2} kan forstyrre}=3{{app_1}, {app_2} og {app_3} kan forstyrre}one{{app_1}, {app_2} og # mere kan forstyrre}other{{app_1}, {app_2} og # andre kan forstyrre}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"Apps"</string>
- <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Notifikationer, der kan afbryde"</string>
+ <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Notifikationer, der kan forstyrre"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"Tillad alle notifikationer"</string>
- <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Intet kan afbryde}=1{{sound_category_1} kan afbryde}=2{{sound_category_1} og {sound_category_2} kan afbryde}=3{{sound_category_1}, {sound_category_2} og{sound_category_3} kan afbryde}one{{sound_category_1}, {sound_category_2} og # mere kan afbryde}other{{sound_category_1}, {sound_category_2} og # andre kan afbryde}}"</string>
- <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Intet kan afbryde"</string>
- <string name="zen_mode_people_none" msgid="4613147461974255046">"Ingen kan afbryde"</string>
- <string name="zen_mode_people_some" msgid="9101872681298810281">"Nogle personer kan afbryde"</string>
+ <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Intet kan forstyrre}=1{{sound_category_1} kan forstyrre}=2{{sound_category_1} og {sound_category_2} kan forstyrre}=3{{sound_category_1}, {sound_category_2} og{sound_category_3} kan forstyrre}one{{sound_category_1}, {sound_category_2} og # mere kan forstyrre}other{{sound_category_1}, {sound_category_2} og # andre kan forstyrre}}"</string>
+ <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Intet kan forstyrre"</string>
+ <string name="zen_mode_people_none" msgid="4613147461974255046">"Ingen kan forstyrre"</string>
+ <string name="zen_mode_people_some" msgid="9101872681298810281">"Nogle personer kan forstyrre"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"Gentagne opkald må gerne forstyrre"</string>
- <string name="zen_mode_people_all" msgid="311036110283015205">"Alle personer kan afbryde"</string>
+ <string name="zen_mode_people_all" msgid="311036110283015205">"Alle personer kan forstyrre"</string>
<string name="zen_mode_repeat_callers" msgid="2270356100287792138">"Gentagne opkald"</string>
<string name="zen_mode_repeat_callers_title" msgid="8016699240338264781">"Tillad gentagne opkald"</string>
<string name="zen_mode_all_callers" msgid="8104755389401941875">"alle"</string>
@@ -3942,7 +3965,7 @@
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Bloker forstyrrelser eller afbrydelser fra din enhed, så du bedre kan koncentrere dig"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"Fjern alle forstyrrelser for at få ro"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"Tilpas brugeroplevelser og indstillinger på enheden til forskellige brugere"</string>
- <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Minimer afbrydelser ved kun at tillade, at vigtige personer og apps kan få fat i dig"</string>
+ <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Minimer afbrydelser ved kun at tillade, at vigtige personer og apps kan få fat på dig"</string>
<string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Indstil en tilstand, der følger en fast tidsplan"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"Hold din enhed synkroniseret med dagens begivenheder"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"Vågn op frisk og veloplagt"</string>
@@ -4329,7 +4352,7 @@
<string name="battery_tips_card_action_button_check" msgid="1535140204105479318">"Tjek"</string>
<string name="battery_tips_card_dismiss_button" msgid="1885756985544936618">"OK"</string>
<string name="battery_tips_card_feedback_info" msgid="767117835675157298">"Er denne meddelelse nyttig?"</string>
- <string name="battery_hints_warning_icon_a11y" msgid="5312542323401447620">"Advarselsikon med batteritips"</string>
+ <string name="battery_hints_warning_icon_a11y" msgid="5312542323401447620">"Advarselsikon med batteritip"</string>
<string name="battery_tips_settings_summary_brightness" msgid="546145032616077783">"Aktivér adaptiv lysstyrke for at forlænge batteritiden"</string>
<string name="battery_tips_settings_summary_screen_timeout" msgid="556801426050962077">"Reducer timeout for skærm for at forlænge batteritiden"</string>
<string name="battery_tips_apps_summary_always_high" msgid="6334519477067044920">"<xliff:g id="APP_LABEL">%1$s</xliff:g> brugte mere batteri"</string>
@@ -4388,7 +4411,7 @@
<string name="reset_shortcut_manager_throttling_complete" msgid="8949943009096885470">"Antalsbegrænsning i ShortcutManager er nulstillet"</string>
<string name="notification_suggestion_title" msgid="6309263655965785411">"Styr, hvad der vises på din låseskærm"</string>
<string name="notification_suggestion_summary" msgid="7615611244249276113">"Vis eller skjul indhold i notifikationer"</string>
- <string name="page_tab_title_support" msgid="3235725053332345773">"Support og tips"</string>
+ <string name="page_tab_title_support" msgid="3235725053332345773">"Support og tip"</string>
<string name="developer_smallest_width" msgid="632354817870920911">"Mindste bredde"</string>
<string name="premium_sms_none" msgid="4718916765158062108">"Ingen installerede apps har anmodet om adgang til overtakseret sms"</string>
<string name="premium_sms_warning" msgid="2192300872411073324">"Overtakseret sms kan koste dig penge, som opkræves via din mobilregning. Hvis du aktiverer tilladelsen for en app, kan du sende overtakserede sms-beskeder ved hjælp af denne app."</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Lyt til stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scan en QR-kode til en lydstream for at lytte via <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Adgangskoden kan ikke ændres under deling. Deaktiver lyddeling for at ændre adgangskoden."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Din adgangskode skal indeholde 4-16 tegn og må kun bestå af bogstaver, tal og symboler"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-kodescanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Har du brug for hjælp?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Søg i Indstillinger"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Kun via GPS"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nye kontakter synkroniseres ikke med en konto"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakter gemmes på din enhed og synkroniseres med din konto som standard"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Der er ikke angivet nogen standardkonto"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Der opstod en fejl under konfigurationen af standardkontoen"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Der er ikke angivet nogen standardkonto"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Kun via GPS"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Tilføj en konto for at komme godt i gang"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Hold fingeren på knappen Hjem eller navigationshåndtaget for at søge ved hjælp af indholdet på skærmen."</string>
</resources>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index 1fde6ab..bb3241d 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktentasche"</item>
+ <item msgid="184985872234062767">"Klassisches Gebäude"</item>
+ <item msgid="9189550412466785530">"Apartmenthaus"</item>
+ <item msgid="2142527562511049422">"Sprechblase"</item>
+ <item msgid="2548100558260478605">"Gruppe von Menschen"</item>
+ <item msgid="2270003903304578284">"Glühbirne"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Bitte nicht stören"</item>
+ <item msgid="1423820834865831361">"Person, die läuft"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Fitnessstudio-Hantel"</item>
+ <item msgid="2730180105015616518">"Schwimmen"</item>
+ <item msgid="2666922823253345958">"Person, die wandert"</item>
+ <item msgid="8234880356472211396">"Person, die einen Ball wirft"</item>
+ <item msgid="4642980625253001443">"Person, die kickt"</item>
+ <item msgid="4324795269518833500">"Controller"</item>
+ <item msgid="7789966425125441125">"Farbpalette eines Künstlers"</item>
+ <item msgid="663512680597461570">"Schneeflocke"</item>
+ <item msgid="7952183800501346803">"Sonnenschirm"</item>
+ <item msgid="799139025758265891">"Workshop-Tools"</item>
+ <item msgid="8112685757657659269">"Klavier"</item>
+ <item msgid="3861584909935022342">"70er-Jahre-Film"</item>
+ <item msgid="5827426100157335512">"Buch"</item>
+ <item msgid="8585828346253128384">"Lotusblume"</item>
+ <item msgid="8788370542815300188">"Die Gedanken einer Person"</item>
+ <item msgid="7287354964767553293">"Kopfhörer"</item>
+ <item msgid="2530059623783800987">"Fernseher"</item>
+ <item msgid="5307182323469376758">"Zug"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Messer und Gabel"</item>
+ <item msgid="8939998598599064900">"Einkaufswagen"</item>
+ <item msgid="3379605903308731893">"Kind"</item>
+ <item msgid="7808668968550293112">"Tierpfote"</item>
+ <item msgid="1000692647524056504">"Sternsymbol"</item>
+ <item msgid="8270261073421676502">"Zwei Personen"</item>
+ <item msgid="5767782819651505460">"Stern"</item>
+ <item msgid="4368451291862729334">"Herz"</item>
+ <item msgid="2613199102208419986">"Haus"</item>
+ <item msgid="3022279986430275040">"Halbmond"</item>
+ <item msgid="5421089790869483206">"Uhr"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 35a8155..65b31b3 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Neues Gerät koppeln"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Morgen automatisch aktivieren"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Rechtes Gerät koppeln"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Linkes Gerät koppeln"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Anderes Ohr koppeln"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audio deaktivieren"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Deaktiviert die Bluetooth LE Audio-Funktion, wenn das Gerät LE Audio-Hardwarefunktionen unterstützt."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio-Modus"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Vorschau für Benutzeroberfläche der Bluetooth LE Audioübertragung aktivieren"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Aktiviert die Vorschau für die Benutzeroberfläche der LE Audiofreigabe, einschließlich der persönlichen Audiofreigabe und der privaten Übertragung"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Ein/Aus für LE Audio in Gerätedetails"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio-Zulassungsliste umgehen"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio wird standardmäßig verwendet, selbst wenn ein LE Audio-Peripheriegerät nicht die Kriterien der Zulassungsliste erfüllt."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Einstellung erfolgt automatisch über Netzwerk- und WLAN-Signale"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Zeitzone automatisch einstellen"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Einstellung erfolgt automatisch auf der Grundlage von Mobilfunknetzen in deiner Nähe"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Einstellung erfolgt automatisch anhand des Gerätestandorts, wenn verfügbar"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Standardformat für die gewählte Spracheinstellung verwenden"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-Stunden-Format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Uhrzeit"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Hebe den Finger und berühre den Sensor dann noch einmal"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Der Fingerabdrucksensor kann nicht verwendet werden"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Suche einen Reparaturdienstleister auf."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Entsperrung per Fingerabdruck bei ausgeschaltetem Display"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Entsperrung per Fingerabdruck auch bei ausgeschaltetem Display verwenden"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Display aus, Entsperrung"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Weitere Sicherheitseinstellungen"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Sperre des Arbeitsprofils, Verschlüsselung und mehr"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Verschlüsselung, Anmeldedaten und mehr"</string>
@@ -562,7 +568,7 @@
<string name="privacy_header" msgid="5526002421324257007">"Datenschutz"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Arbeitsprofil"</string>
<string name="private_space_title" msgid="1752064212078238723">"Vertrauliches Profil"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"Hier kannst du Apps vor anderen verbergen und sie für sie sperren"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"Hier kannst du Apps vor anderen verbergen und sie für andere sperren"</string>
<string name="private_space_description" msgid="4059594203775816136">"Du kannst Apps in einem vertraulichen Profil installieren, sodass sie nur für dich sichtbar sind und nur von dir geöffnet werden können"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Sperrmethode für vertrauliches Profil"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Du kannst zum Entsperren des vertraulichen Profils dieselbe Methode wie für das Entsperren deines Geräts verwenden oder aber eine andere Sperrmethode einrichten"</string>
@@ -850,7 +856,7 @@
<string name="bluetooth_empty_list_bluetooth_off" msgid="7326727272747345476">"Bei aktiviertem Bluetooth kann dein Gerät mit Bluetooth-Geräten in der Nähe kommunizieren"</string>
<string name="bluetooth_empty_list_bluetooth_off_auto_on_available" msgid="3430864468105204282">"Bei aktiviertem Bluetooth kann dein Gerät mit Bluetooth-Geräten in der Nähe kommunizieren. Funktionen wie „Quick Share“ und „Mein Gerät finden“ verwenden Bluetooth."</string>
<string name="bluetooth_scanning_on_info_message" msgid="786648535600075223">"Bei aktiviertem Bluetooth kann dein Gerät mit anderen Bluetooth-Geräten in der Nähe kommunizieren.\n\nDamit es optimal funktioniert, können Apps und Dienste immer nach Geräten in der Nähe suchen, auch wenn Bluetooth deaktiviert ist. Dadurch werden beispielsweise standortbasierte Funktionen und Dienste verbessert. Dies lässt sich in den Bluetooth-Sucheinstellungen ändern."</string>
- <string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"Bei aktiviertem Bluetooth kann dein Gerät mit Bluetooth-Geräten in der Nähe kommunizieren. Funktionen wie „Quick Share“ und „Mein Gerät finden“ verwenden Bluetooth.\n\nApps und Dienste können weiterhin jederzeit nach Geräten in der Nähe suchen, auch wenn Bluetooth deaktiviert ist. Dies kann beispielsweise dafür verwendet werden, um standortbezogene Funktionen und Dienste zu verbessern.In den Einstellungen für die Bluetooth-Suche lässt sich dieses Verhalten ändern."</string>
+ <string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"Bei aktiviertem Bluetooth kann dein Gerät mit Bluetooth-Geräten in der Nähe kommunizieren. Funktionen wie „Quick Share“ und „Mein Gerät finden“ verwenden Bluetooth.\n\nApps und Dienste können weiterhin jederzeit nach Geräten in der Nähe suchen, auch wenn Bluetooth deaktiviert ist. Dies kann beispielsweise dafür verwendet werden, um standortbezogene Funktionen und Dienste zu verbessern. In den Einstellungen für die Bluetooth-Suche lässt sich dieses Verhalten ändern."</string>
<string name="bluetooth_scan_change" msgid="1744636222637390367">"Ändern"</string>
<string name="bluetooth_key_missing_title" msgid="7799054163548353853">"„<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“ ist nicht gekoppelt"</string>
<string name="bluetooth_key_missing_message" msgid="2388861106663695319">"Entkopple dieses Gerät aus Sicherheitsgründen und koppele es dann erneut"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Schnell aufeinanderfolgende Betätigungen derselben Taste auf der Tastatur werden ignoriert"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Grenzwert für Bounce-Tasten"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Wähle aus, wie lange wiederholtes Drücken der Tasten auf der Tastatur ignoriert werden soll"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 Sek."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 Sek."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 Sek."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 Sek."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 Sek."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 Sek."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Benutzerdefiniert"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"benutzerdefinierter Wert"</string>
<string name="slow_keys" msgid="2891452895499690837">"Anschlagverzögerung"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Passt die Zeit an, die eine Taste gedrückt werden muss, um sie zu aktivieren"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Einfingerbedienung"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Bei Tastenkombinationen Tasten einzeln drücken, statt sie zusammen gedrückt zu halten"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Maustasten"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Tastaturmaus"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Tastaturmaus verwenden"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Zum Steuern des Mauszeigers die Tastatur verwenden"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Mausrad-Scrollrichtung umkehren"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Wenn du nach oben scrollst, wird die Seite nach unten verschoben"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Linke und rechte Taste tauschen"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Die linke Maustaste übernimmt die Funktion der rechten Maustaste (und umgekehrt)"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tastaturmaus für <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Mauszeiger bewegen: Tasten „<xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>“ verwenden"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Mit der primären Maustaste klicken: Taste „<xliff:g id="CLICK_LABEL">%s</xliff:g>“ verwenden"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Primäre Taste gedrückt halten: Taste „<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>“ verwenden"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Primäre Taste loslassen: Taste „<xliff:g id="RELEASE_LABEL">%s</xliff:g>“ verwenden"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Scrollmodus aktivieren oder deaktivieren: Taste „<xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>“ verwenden; anschließend kannst du mit den Tasten „<xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>“ in der Ansicht nach oben, unten, links oder rechts scrollen"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Sekundäre Maustaste drücken: Taste „<xliff:g id="RELEASE_2_LABEL">%s</xliff:g>“ verwenden"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Tastenkürzel"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Liste der Tastenkombinationen anzeigen"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastaturen und Tools für das Arbeitsprofil"</string>
@@ -2011,7 +2027,7 @@
<string name="gesture_button_done" msgid="6387900351203032188">"Fertig"</string>
<string name="trackpad_go_back_title" msgid="5312164160947491440">"Zurück"</string>
<string name="trackpad_go_back_summary" msgid="4201901101085902768">"Wische mit drei Fingern nach links oder rechts"</string>
- <string name="trackpad_go_home_title" msgid="2146525662148291552">"Zur Startseite"</string>
+ <string name="trackpad_go_home_title" msgid="2146525662148291552">"Zum Startbildschirm"</string>
<string name="trackpad_go_home_summary" msgid="2222744701528360887">"Wische mit drei Fingern nach oben"</string>
<string name="trackpad_recent_apps_title" msgid="8195970908411585445">"Zuletzt verwendete Apps"</string>
<string name="trackpad_recent_apps_summary" msgid="2685092851677573794">"Wische mit drei Fingern nach oben und halte"</string>
@@ -2030,15 +2046,11 @@
<string name="modifier_keys_picker_title" msgid="244545904150587851">"Modifikatortaste wählen"</string>
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Wähle eine neue Taste für <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Bedienungshilfen für physische Tastaturen"</string>
- <string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Einfingerbedienung, Bounce-Tasten, Maustasten"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Einfingerbedienung, Bounce-Tasten, Tastaturmaus"</string>
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Tasteneingabewiederholung"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Verzögerung vor Wiederholung"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Wiederholungsrate"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Wenn du eine Taste gedrückt hältst, wird das entsprechende Zeichen so lange immer wieder eingegeben, bis du die Taste loslässt"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Layout: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Standard"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatisch: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2226,7 +2238,7 @@
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"OK"</string>
<string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Schaltfläche anpassen"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Weitere Optionen"</string>
- <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Kurzbefehl für „<xliff:g id="SERVICE">%1$s</xliff:g>“"</string>
+ <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Kurzbefehl für <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"Schaltfläche „Bedienungshilfen“"</string>
<string name="accessibility_shortcut_edit_summary_software_gesture" msgid="7346399253904683940">"Touch-Geste für Bedienungshilfen"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"Mit zwei Fingern nach oben wischen"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Energieverbrauch anpassen"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Enthaltene Pakete"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps funktionieren normal"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Akkutausch empfohlen"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Die Akkukapazität und Ladeleistung sind reduziert. Ein Akkutausch wird empfohlen."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Akkustand niedrig"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Energiesparmodus aktivieren, um Akkulaufzeit zu erhöhen"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Akkulaufzeit optimieren"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Verbindung zu diesem VPN trennen?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Verbindung trennen"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN entfernen"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Aktuelles VPN ersetzen?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Durchgehend aktives VPN aktivieren?"</string>
@@ -3402,7 +3415,7 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Keine}=1{1 Zeitplan festgelegt}other{# Zeitpläne festgelegt}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Bitte nicht stören"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"Modi"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"Mit Modi für Schlaf, Arbeit, das Fahren und alles dazwischen kannst du Ablenkungen minimieren und deine Aufmerksamkeit besser lenken."</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"Mit Modi für Schlaf, Arbeit, Autofahren und alles dazwischen kannst du Ablenkungen minimieren und deine Aufmerksamkeit besser lenken."</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Eigenen Modus erstellen"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Benachrichtigungen nur von wichtigen Personen und Apps"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Zeitplan festlegen"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„Von 9 Uhr bis 17 Uhr an Wochentagen“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalendertermine"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ist aktiv}=2{{mode_1} und {mode_2} sind aktiv}=3{{mode_1}, {mode_2} und {mode_3} sind aktiv}other{{mode_1}, {mode_2} und # weitere Modi sind aktiv}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 Modus kann automatisch aktiviert werden}other{# Modi können automatisch aktiviert werden}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Bitte nicht stören}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AN"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nicht festgelegt"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Deaktiviert"</string>
@@ -3424,7 +3437,7 @@
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Unterbrechungen und Ablenkungen blockieren"</string>
<string name="zen_mode_setup_button_label" msgid="1959984133767361374">"<xliff:g id="MODE">%1$s</xliff:g> einrichten"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"„Bitte nicht stören“ aktivieren"</string>
- <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Wecker und Medientöne können ihn unterbrechen"</string>
+ <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Wecker und Medientöne können unterbrechen"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Zeitpläne"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Zeitpläne löschen"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Löschen"</string>
@@ -3467,7 +3480,7 @@
<string name="mode_dark_theme_title" msgid="8099007897943513209">"Dunkles Design aktivieren"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"Dunkles Design aktivieren"</string>
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"Gerätedesign wechseln, um einen dunklen Hintergrund zu verwenden, der die Augen schont"</string>
- <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Keine Änderungen der Anzeige}=1{{effect_1}}=2{{effect_1} und {effect_2}}=3{{effect_1}, {effect_2} und {effect_3}}other{{effect_1}, {effect_2} und # mehr}}"</string>
+ <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Keine Änderungen der Anzeige}=1{{effect_1}}=2{{effect_1} und {effect_2}}=3{{effect_1}, {effect_2} und {effect_3}}other{{effect_1}, {effect_2} und # weitere}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"Alle Benachrichtigungen zulassen"</string>
<string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Personen, Apps und Töne dürfen unterbrechen"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Anzeigeoptionen für gefilterte Benachrichtigungen"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Wenn du viele Benachrichtigungen hintereinander erhältst, verringert dein Gerät für bis zu 2 Minuten die Lautstärke der Benachrichtigungssignale und minimiert die Benachrichtigungen. Anrufe, Wecker und priorisierte Unterhaltungen sind davon nicht betroffen. \n\nDie während dieser Zeit eingegangenen Benachrichtigungen kannst du dir ansehen, indem du vom oberen Rand des Displays nach unten wischst."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Auf Arbeitsprofile anwenden"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Auf Apps im Arbeitsprofil anwenden"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR-Hilfsdienste"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Keine installierte App hat die Ausführung als VR-Hilfsdienst angefordert."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR-Dienstzugriff für <xliff:g id="SERVICE">%1$s</xliff:g> erlauben?"</string>
@@ -3875,7 +3898,7 @@
<string name="zen_mode_apps_category" msgid="4082380323683889391">"Apps, die unterbrechen dürfen"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Ausgewählte Apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Keine"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Keine App kann ihn unterbrechen}=1{{app_1} kann ihn unterbrechen}=2{{app_1} und {app_2} können ihn unterbrechen}=3{{app_1}, {app_2} und {app_3} können ihn unterbrechen}other{{app_1}, {app_2}, und # weitere können ihn unterbrechen}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Keine App kann unterbrechen}=1{{app_1} kann unterbrechen}=2{{app_1} und {app_2} können unterbrechen}=3{{app_1}, {app_2} und {app_3} können unterbrechen}other{{app_1}, {app_2}, und # weitere können unterbrechen}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (geschäftlich)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"Wird berechnet…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"Apps-Einstellungen"</string>
@@ -3889,16 +3912,16 @@
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"Alle Benachrichtigungen"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"Einige Benachrichtigungen"</string>
<string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Ausgewählte Personen können dich weiterhin erreichen, auch wenn du nicht zulässt, dass Apps dich unterbrechen."</string>
- <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Keine Apps können ihn unterbrechen}=1{Die App „{app_1}“ kann ihn unterbrechen}=2{Die Apps „{app_1}“ und „{app_2}“ können ihn unterbrechen}=3{Die Apps „{app_1}“, „{app_2}“ und „{app_3}“ können ihn unterbrechen}other{Die App „{app_1}“, „{app_2}“ und # weitere können ihn unterbrechen}}"</string>
+ <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Keine Apps können unterbrechen}=1{Die App „{app_1}“ kann unterbrechen}=2{Die Apps „{app_1}“ und „{app_2}“ können unterbrechen}=3{Die Apps „{app_1}“, „{app_2}“ und „{app_3}“ können unterbrechen}other{Die App „{app_1}“, „{app_2}“ und # weitere können unterbrechen}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"Apps"</string>
<string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Benachrichtigungen, die unterbrechen dürfen"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"Alle Benachrichtigungen zulassen"</string>
<string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Nichts kann unterbrechen}=1{Geräusche der Kategorie „{sound_category_1}“ können unterbrechen}=2{Geräusche der Kategorie „{sound_category_1}“ und „{sound_category_2}“ können unterbrechen}=3{Geräusche der Kategorie „{sound_category_1}“, „{sound_category_2}“ und „{sound_category_3}“ können unterbrechen}other{Geräusche der Kategorie „{sound_category_1}“, „{sound_category_2}“ und # weiteren können unterbrechen}}"</string>
- <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Nichts kann ihn unterbrechen"</string>
- <string name="zen_mode_people_none" msgid="4613147461974255046">"Niemand kann ihn unterbrechen"</string>
+ <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Nichts kann unterbrechen"</string>
+ <string name="zen_mode_people_none" msgid="4613147461974255046">"Niemand kann unterbrechen"</string>
<string name="zen_mode_people_some" msgid="9101872681298810281">"Einige Personen können unterbrechen"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"Bei wiederkehrenden Anrufern unterbrechen"</string>
- <string name="zen_mode_people_all" msgid="311036110283015205">"Alle Personen können ihn unterbrechen"</string>
+ <string name="zen_mode_people_all" msgid="311036110283015205">"Alle Personen können unterbrechen"</string>
<string name="zen_mode_repeat_callers" msgid="2270356100287792138">"Wiederholte Anrufer"</string>
<string name="zen_mode_repeat_callers_title" msgid="8016699240338264781">"Wiederholte Anrufer zulassen"</string>
<string name="zen_mode_all_callers" msgid="8104755389401941875">"Alle"</string>
@@ -3932,7 +3955,7 @@
<string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"<xliff:g id="MODE_NAME">%1$s</xliff:g> deaktivieren?"</string>
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Bei Deaktivierung wird dieser Modus nie aktiviert"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Deaktivieren"</string>
- <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> aktivieren?"</string>
+ <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"„<xliff:g id="MODE_NAME">%1$s</xliff:g>“ aktivieren?"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Dieser Modus kann abhängig von den Einstellungen automatisch aktiviert werden"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Aktivieren"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Du kannst einen Modus festlegen, der einem regulären Zeitplan folgt"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Stream anhören"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Den QR-Code eines Audiostreams scannen, um den Stream auf <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anzuhören"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Während der Freigabe kann das Passwort nicht geändert werden. Wenn du das Passwort ändern möchtest, deaktiviere zuerst die Audiofreigabe."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Dein Passwort muss zwischen 4 und 16 Zeichen lang sein und darf nur aus Buchstaben, Zahlen und Symbolen bestehen"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR‑Code-Scanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Benötigst du Hilfe?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"In Einstellungen suchen"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Nur Gerät"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Neue Kontakte werden nicht mit einem Konto synchronisiert"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakte werden standardmäßig auf deinem Gerät gespeichert und mit deinem Konto synchronisiert"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Kein Standard festgelegt"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Fehler beim Festlegen des Standardkontos"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Kein Standard festgelegt"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Nur Gerät"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Füge ein Konto hinzu, um loszulegen"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Halte die Startbildschirmtaste oder den Navigationsziehpunkt gedrückt, um anhand des Inhalts auf dem Bildschirm zu suchen."</string>
</resources>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index 404fd18..3765c8b 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Χαρτοφύλακας"</item>
+ <item msgid="184985872234062767">"Κλασικό κτίριο"</item>
+ <item msgid="9189550412466785530">"Πολυκατοικία"</item>
+ <item msgid="2142527562511049422">"Συννεφάκι ομιλίας"</item>
+ <item msgid="2548100558260478605">"Ομάδα ανθρώπων"</item>
+ <item msgid="2270003903304578284">"Λαμπτήρας"</item>
+ <item msgid="4793496619091161864">"Ημερολόγιο"</item>
+ <item msgid="5673625795644364100">"Μην ενοχλείτε"</item>
+ <item msgid="1423820834865831361">"Άτομο που τρέχει"</item>
+ <item msgid="2037298830718732608">"Γκολφ"</item>
+ <item msgid="2197835014443491074">"Αλτήρας γυμναστικής"</item>
+ <item msgid="2730180105015616518">"Κολύμβηση"</item>
+ <item msgid="2666922823253345958">"Άτομο που κάνει πεζοπορία"</item>
+ <item msgid="8234880356472211396">"Άτομο που ρίχνει μπάλα"</item>
+ <item msgid="4642980625253001443">"Άτομο που κλωτσά"</item>
+ <item msgid="4324795269518833500">"Χειριστήριο παιχνιδιού"</item>
+ <item msgid="7789966425125441125">"Παλέτα χρωμάτων καλλιτέχνη"</item>
+ <item msgid="663512680597461570">"Νιφάδα χιονιού"</item>
+ <item msgid="7952183800501346803">"Ομπρέλα παραλίας"</item>
+ <item msgid="799139025758265891">"Εργαλεία εργαστηρίου"</item>
+ <item msgid="8112685757657659269">"Πιάνο"</item>
+ <item msgid="3861584909935022342">"Ρετρό φιλμ"</item>
+ <item msgid="5827426100157335512">"Βιβλίο"</item>
+ <item msgid="8585828346253128384">"Λουλούδι λωτού"</item>
+ <item msgid="8788370542815300188">"Ανθρώπινος εγκέφαλος"</item>
+ <item msgid="7287354964767553293">"Ακουστικά"</item>
+ <item msgid="2530059623783800987">"Τηλεόραση"</item>
+ <item msgid="5307182323469376758">"Τρένο"</item>
+ <item msgid="4903790544026923026">"Αυτοκίνητο"</item>
+ <item msgid="5010405583912314582">"Πιρούνι και μαχαίρι"</item>
+ <item msgid="8939998598599064900">"Καλάθι αγορών"</item>
+ <item msgid="3379605903308731893">"Παιδί"</item>
+ <item msgid="7808668968550293112">"Πατούσα ζώου"</item>
+ <item msgid="1000692647524056504">"Σήμα με αστέρι"</item>
+ <item msgid="8270261073421676502">"Δύο άτομα"</item>
+ <item msgid="5767782819651505460">"Αστέρι"</item>
+ <item msgid="4368451291862729334">"Καρδιά"</item>
+ <item msgid="2613199102208419986">"Σπίτι"</item>
+ <item msgid="3022279986430275040">"Μισοφέγγαρο"</item>
+ <item msgid="5421089790869483206">"Ρολόι"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 658955b..f244612 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Σύζευξη νέας συσκευής"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Αυτόματη ενεργοποίηση αύριο"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Σύζευξη δεξιού"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Σύζευξη αριστερού"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Σύζευξη του άλλου αυτιού"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Απενεργοποίηση Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Απενεργοποιεί τη λειτουργία Bluetooth LE Audio αν η συσκευή υποστηρίζει δυνατότητες εξοπλισμού LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Λειτουργία Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Ενεργοποίηση προεπισκόπησης διεπαφής χρήστη για μετάδοση Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Ενεργοποιεί την προεπισκόπηση της διεπαφής χρήστη για την κοινή χρήση LE Audio, συμπεριλαμβανομένης της κοινής χρήσης προσωπικού ήχου και της ιδιωτικής μετάδοσης"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Εναλλαγή LE Audio στις λεπτομ. συσκευής"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Παράκαμψη λίστας επιτρεπομένων Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Χρήση του LE Audio από προεπιλογή, ακόμα και αν το περιφερειακό LE Audio δεν έχει επαληθευτεί, ώστε να πληροί τα κριτήρια της λίστας επιτρεπομένων."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Αυτόματος ορισμός με χρήση του δικτύου σας και των ασύρματων σημάτων"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Αυτόματη ζώνη ώρας"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Αυτόματος ορισμός με βάση τα δίκτυα κινητής τηλεφωνίας κοντά σας"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Αυτόματος ορισμός με χρήση της τοποθεσίας συσκευής, αν είναι διαθέσιμη"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Χρήση προεπιλογής τοπικών ρυθμίσεων"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Χρήση μορφής 24ώρου"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Ώρα"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Σηκώστε το δάχτυλο και, στη συνέχεια, αγγίξτε ξανά τον αισθητήρα"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Δεν είναι δυνατή η χρήση του αισθητήρα δακτυλικών αποτυπωμάτων"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Επισκεφτείτε έναν πάροχο υπηρεσιών επισκευής."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ξεκλείδωμα με δακτυλικό αποτύπωμα με απενεργοποιημένη οθόνη"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Χρησιμοποιήστε το Ξεκλείδωμα με δακτυλικό αποτύπωμα ακόμα και όταν η οθόνη είναι απενεργοποιημένη"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Απενεργοποημένη οθόνη, ξεκλείδωμα"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Περισσότερες ρυθμίσεις ασφαλείας"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Κλείδωμα προφίλ εργασίας, κρυπτογράφηση και περισσότερα"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Κρυπτογράφηση, διαπιστευτήρια και περισσότερα"</string>
@@ -601,7 +607,7 @@
<string name="private_space_search_description" msgid="1538155187658429618">"Στη γραμμή αναζήτησης, πληκτρολογήστε \"απόρρητος χώρος\""</string>
<string name="private_space_tap_tile_description" msgid="6173556870938267361">"Πατήστε "<b>"Ιδιωτικός χώρος"</b></string>
<string name="private_space_unlock_description" msgid="5527228922778630361">"Ξεκλείδωμα ιδιωτικού χώρου"</string>
- <string name="private_space_hide_off_summary" msgid="8565973976602078315">"Ανενεργός"</string>
+ <string name="private_space_hide_off_summary" msgid="8565973976602078315">"Ανενεργή"</string>
<string name="private_space_hide_on_summary" msgid="3450844101901438867">"Ενεργός"</string>
<string name="private_space_hide_dialog_title" msgid="6439207708506990156">"Θα γίνει απόκρυψη του ιδιωτικού χώρου στο επόμενο κλείδωμα"</string>
<string name="private_space_hide_dialog_message" msgid="618693520130744836">"Για πρόσβ. στον απόρ. χώρο, πληκτρ. \"απόρρητος χώρος\" στη γραμμή αναζ. στη λίστα εφαρμογ."</string>
@@ -623,11 +629,11 @@
<string name="private_space_cancel_label" msgid="379259667396956886">"Ακύρωση"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"Ρύθμιση"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"Ιδιωτικός χώρος"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Απόκρυψη ή κλείδωμα ιδιωτικών εφαρμογών σε ξεχωριστό χώρο. Χρησιμοποιήστε έναν αποκλειστικό Λογαριασμό Google για επιπλέον ασφάλεια."</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Αποκρύψτε ή κλειδώστε ιδιωτικές εφαρμογές σε ξεχωριστό χώρο. Χρησιμοποιήστε έναν αποκλειστικό Λογαριασμό Google για επιπλέον ασφάλεια."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Πώς λειτουργεί"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Δημιουργήστε έναν Λογαριασμό Google για τον χώρο σας"</b>\n"Εάν χρησιμοποιείτε έναν αποκλειστικό λογαριασμό, μπορείτε να αποτρέψετε την εμφάνιση συγχρονισμένων αρχείων, φωτογραφιών και μηνυμάτων ηλεκτρονικού ταχυδρομείου εκτός του χώρου σας"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Ρύθμιση κλειδώματος"</b>\n"Κλειδώστε τον χώρο σας για να μην μπορούν να τον ανοίξουν άλλα άτομα"</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Εγκαταστήστε εφαρμογές"</b>\n"Εγκαταστήστε εφαρμογές που θέλετε να διατηρήσετε ιδιωτικές στον χώρο σας"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Εγκατάσταση εφαρμογών"</b>\n"Εγκαταστήστε εφαρμογές που θέλετε να διατηρήσετε ιδιωτικές στον χώρο σας"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Να έχετε υπόψη τα εξής"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Η λειτουργία των εφαρμογών διακόπτεται όταν κλειδώνετε τον χώρο σας"</b>\n"Όταν κλειδώνετε τον χώρο σας, η λειτουργία των εφαρμογών στον χώρο σας διακόπτεται και παύετε να λαμβάνετε ειδοποιήσεις από αυτές"</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"Οι ιδιωτικοί χώροι δεν είναι κατάλληλοι για εφαρμογές που πρέπει να εκτελούνται στο παρασκήνιο ή να στέλνουν κρίσιμες ειδοποιήσεις, όπως οι ιατρικές εφαρμογές. Αυτό συμβαίνει επειδή οι ειδοποιήσεις και η δραστηριότητα στο παρασκήνιο διακόπτονται όταν ο χώρος κλειδώνεται.\n\nΟι εφαρμογές στον ιδιωτικό χώρο σας δεν εμφανίζονται στη Διαχείριση αδειών, στον πίνακα ελέγχου απορρήτου και σε άλλες ρυθμίσεις όταν ο ιδιωτικός χώρος είναι κλειδωμένος.\n\nΔεν είναι δυνατή η μετακίνηση του ιδιωτικού χώρου σας σε νέα συσκευή. Θα πρέπει να δημιουργήσετε άλλον ιδιωτικό χώρο αν επιθυμείτε να τον χρησιμοποιήσετε σε μια άλλη συσκευή.\n\nΕάν κάποιος συνδέσει τη συσκευή σας σε έναν υπολογιστή ή εγκαταστήσει επιβλαβείς εφαρμογές στη συσκευή σας, μπορεί να αποκτήσει πρόσβαση στον ιδιωτικό χώρο σας."</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Το πληκτρολόγιο αγνοεί τα γρήγορα, επαναλαμβανόμενα πατήματα του ίδιου πλήκτρου"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Όριο ελαστικών πλήκτρων"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Επιλέξτε το χρονικό διάστημα κατά το οποίο το πληκτρολόγιο θα παραβλέπει τα επαναλαμβανόμενα πατήματα πλήκτρων"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 δ."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 δ."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 δ."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 δ."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 δ."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 δ."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Προσαρμοσμένη"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"προσαρμοσμένη τιμή"</string>
<string name="slow_keys" msgid="2891452895499690837">"Αργά πλήκτρα"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Προσαρμόζει τον χρόνο που απαιτείται για την ενεργοποίηση ενός πατήματος πλήκτρου"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Ασύγχρονα πλήκτρα"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Για τις συντομεύσεις, αντί να πατάτε παρατεταμένα όλα τα κουμπιά μαζί, φροντίστε να πατάτε ένα πλήκτρο κάθε φορά"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Πλήκτρα ποντικιού"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Χρήση των πλήκτρων ποντικιού"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Χρησιμοποιήστε το πληκτρολόγιο, για να ελέγξετε τον δείκτη"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Αντίστροφη κύλιση με το ποντίκι"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Κάντε κύλιση προς τα επάνω, για να μετακινήσετε τη σελίδα προς τα κάτω."</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Εναλλαγή αριστερού και δεξιού κουμπιού"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Χρησιμοποιήστε το αριστερό κουμπί του ποντικιού ως δεξί κουμπί"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Πλήκτρα ποντικιού για το <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Χρησιμοποιήστε τα πλήκτρα <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>, για να μετακινήσετε τον δείκτη του ποντικιού"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Χρησιμοποιήστε το πλήκτρο <xliff:g id="CLICK_LABEL">%s</xliff:g>, για να κάνετε κλικ στο κύριο κουμπί του ποντικιού"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Χρησιμοποιήστε το πλήκτρο <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>, για να πατήσετε παρατεταμένα το κύριο κουμπί του ποντικιού"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Χρησιμοποιήστε το πλήκτρο <xliff:g id="RELEASE_LABEL">%s</xliff:g>, για να απελευθερώσετε το κύριο κουμπί του ποντικιού"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Χρησιμοποιήστε το πλήκτρο <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> για εναλλαγή της λειτουργίας κύλισης. Με αυτόν τον τρόπο, τα πλήκτρα <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> θα μετακινούν με κύλιση την προβολή προς τα επάνω, προς τα κάτω, προς τα αριστερά ή προς τα δεξιά"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Χρησιμοποιήστε το πλήκτρο <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>, για να κάνετε κλικ στο δευτερεύον κουμπί του ποντικιού"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Συντομεύσεις πληκτρολογίου"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Εμφάνιση λίστας συντομεύσεων"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Πληκτρολόγιο και εργαλεία προφίλ εργασίας"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Επιλέξτε ένα νέο κλειδί για <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Προσβασιμότητα φυσικού πληκτρολογίου"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Ασύγχρονα πλήκτρα, Ελαστικά πλήκτρα, Πλήκτρα ποντικιού"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Επανάληψη πλήκτρων"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Καθυστέρηση πριν από την επανάληψη"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Ρυθμός επανάληψης"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Κρατήστε πατημένο ένα πλήκτρο, για επανάληψη του χαρακτήρα του μέχρι να αφήσετε το πλήκτρο"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Διάταξη <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Προεπιλογή"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Αυτόματο: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Προσαρμογή χρήσης ισχύος"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Συμπεριλαμβανόμενα πακέτα"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Οι εφαρμογές εκτελούνται κανονικά"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Συνιστάται αντικατάσταση της μπαταρίας"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Η χωρητικότητα μπαταρίας και η απόδοση φόρτισης έχουν μειωθεί και συνιστάται αντικατάσταση της μπαταρίας."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Χαμηλή ισχύς μπαταρίας"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Ενεργοποιήστε την Εξοικονόμηση μπαταρίας για να επεκτείνετε τη διάρκεια ζωής της μπαταρίας"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Βελτιώστε τη διάρκεια ζωής της μπαταρίας"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Να αποσυνδεθεί αυτό το VPN;"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Αποσύνδεση"</string>
<string name="vpn_version" msgid="6344167191984400976">"Έκδοση"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Έκδοση <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Διαγραφή VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Αντικατάσταση υπάρχοντος VPN;"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Ενεργοποίηση του μονίμως ενεργού VPN;"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 π.μ.-5 μ.μ. τις εργάσιμες ημέρες\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Συμβάντα ημερολογίου"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Η λειτουργία {mode_1} είναι ενεργή}=2{Οι λειτουργίες {mode_1} και {mode_2} είναι ενεργές}=3{Οι λειτουργίες {mode_1}, {mode_2} και {mode_3} είναι ενεργές}other{Οι λειτουργίες {mode_1}, {mode_2} και # ακόμη είναι ενεργές}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 λειτουργία μπορεί να ενεργοποιηθεί αυτόματα}other{# λειτουργίες μπορούν να ενεργοποιηθούν αυτόματα}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Μην ενοχλείτε}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ΕΝΕΡΓΗ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Δεν έχει οριστεί"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Απενεργοποιημένη"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Όταν λαμβάνετε πολλές ειδοποιήσεις μέσα σε σύντομο χρονικό διάστημα, η συσκευή σας μειώνει την ένταση του ήχου και ελαχιστοποιεί τις ειδοποιήσεις για έως και 2 λεπτά. Οι κλήσεις, τα ξυπνητήρια και οι συζητήσεις προτεραιότητας δεν επηρεάζονται. \n\nΓια να βρείτε τις ειδοποιήσεις που λαμβάνετε κατά τη διάρκεια της περιόδου cooldown, σύρετε προς τα κάτω από το πάνω μέρος της οθόνης."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Εφαρμογή σε προφίλ εργασίας"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Εφαρμογή σε εφαρμογές με προφίλ εργασίας"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Βοηθητικές υπηρεσίες Εικονικής Πραγματικότητας"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Δεν έχει ζητηθεί η εκτέλεση εγκατεστημένων εφαρμογών ως βοηθητικών υπηρεσιών Εικονικής Πραγματικότητας."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Να επιτρέπεται στην υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g> να έχει πρόσβαση στην υπηρεσία Εικονικής Πραγματικότητας;"</string>
@@ -3960,7 +3983,7 @@
<string name="nfc_setting_on" msgid="7701896496026725772">"Ενεργό"</string>
<string name="nfc_setting_off" msgid="7142103438532732309">"Ανενεργό"</string>
<string name="screen_pinning_switch_on_text" msgid="6971386830247542552">"Ενεργή"</string>
- <string name="screen_pinning_switch_off_text" msgid="5032105155623003875">"Ανενεργή"</string>
+ <string name="screen_pinning_switch_off_text" msgid="5032105155623003875">"Ανενεργό"</string>
<string name="screen_pinning_title" msgid="6927227272780208966">"Καρφίτσωμα εφαρμογών"</string>
<string name="app_pinning_intro" msgid="6409063008733004245">"Το καρφίτσωμα εφαρμογών σάς επιτρέπει να διατηρείτε την τρέχουσα εφαρμογή ορατή έως ότου την ξεκαρφιτσώσετε. Για παράδειγμα, αυτή η λειτουργία μπορεί να χρησιμοποιηθεί για να επιτρέψετε σε έναν έμπιστο φίλο να παίξει ένα συγκεκριμένο παιχνίδι."</string>
<string name="screen_pinning_description" msgid="5822120806426139396">"Όταν μια εφαρμογή έχει καρφιτσωθεί, η συγκεκριμένη εφαρμογή μπορεί να ανοίξει άλλες εφαρμογές και να είναι δυνατή η πρόσβαση σε προσωπικά δεδομένα. \n\nΓια να χρησιμοποιήσετε το καρφίτσωμα εφαρμογών: \n{0,number,integer}. Ενεργοποιήστε το καρφίτσωμα εφαρμογών \n{1,number,integer}. Ανοίξτε την Επισκόπηση \n{2,number,integer}. Πατήστε το εικονίδιο εφαρμογής στο επάνω μέρος της οθόνης και έπειτα πατήστε Καρφίτσωμα."</string>
@@ -5028,7 +5051,7 @@
<string name="system_default_app_subtext" msgid="5212055189703164839">"Προεπιλογή συστήματος"</string>
<string name="default_app_none" msgid="5420632042222036264">"Καμία"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"Αυτή η επιλογή δεν είναι πια έγκυρη. Δοκιμάστε ξανά."</string>
- <string name="power_menu_setting_name" msgid="2394440932633137229">"Πατήστε παρατεταμένα το κουμπί λειτουργίας"</string>
+ <string name="power_menu_setting_name" msgid="2394440932633137229">"Παρατεταμένο πάτημα κουμπιού λειτουργίας"</string>
<string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Πατήστε παρατεταμένα το κουμπί λειτουργίας για πρόσβαση"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Μενού λειτουργίας"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Ψηφιακός βοηθός"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Ακρόαση ροής"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Σαρώστε τον κωδικό QR μιας ροής ήχου για να ακούσετε με τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Δεν είναι δυνατή η επεξεργασία του κωδικού πρόσβασης κατά την κοινή χρήση. Για να αλλάξετε τον κωδικό πρόσβασης, αρχικά, απενεργοποιήστε την κοινή χρήση ήχου."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Ο κωδικός πρόσβασης πρέπει να περιέχει 4-16 χαρακτήρες και να χρησιμοποιεί μόνο γράμματα, αριθμούς και σύμβολα"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Σάρωση κωδικών QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Χρειάζεστε βοήθεια;"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Ρυθμίσεις αναζήτησης"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Μόνο στη συσκευή"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Οι νέες επαφές δεν θα συγχρονίζονται με κάποιον λογαριασμό"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Οι επαφές θα αποθηκεύονται στη συσκευή σας και θα συγχρονίζονται με τον λογαριασμό σας από προεπιλογή"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Δεν ορίστηκε προεπιλογή"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Σφάλμα κατά τον ορισμό προεπιλεγμένου λογαριασμού"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Δεν ορίστηκε προεπιλογή"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Μόνο από συσκευή"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Για να ξεκινήσετε, προσθέστε λογαριασμό"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Κυκλώστε για αναζήτηση"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Πατήστε παρατεταμένα το κουμπί αρχικής οθόνης ή τη λαβή πλοήγησης, για να κάνετε αναζήτηση χρησιμοποιώντας το περιεχόμενο στην οθόνη σας."</string>
</resources>
diff --git a/res/values-en-rAU/arrays.xml b/res/values-en-rAU/arrays.xml
index 85c9cc8..9cb3e27 100644
--- a/res/values-en-rAU/arrays.xml
+++ b/res/values-en-rAU/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Briefcase"</item>
+ <item msgid="184985872234062767">"Classical building"</item>
+ <item msgid="9189550412466785530">"Flats"</item>
+ <item msgid="2142527562511049422">"Speech bubble"</item>
+ <item msgid="2548100558260478605">"Group of people"</item>
+ <item msgid="2270003903304578284">"Light bulb"</item>
+ <item msgid="4793496619091161864">"Calendar"</item>
+ <item msgid="5673625795644364100">"Do Not Disturb"</item>
+ <item msgid="1423820834865831361">"Person running"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Gym dumbbell"</item>
+ <item msgid="2730180105015616518">"Swimming"</item>
+ <item msgid="2666922823253345958">"Person hiking"</item>
+ <item msgid="8234880356472211396">"Person throwing a ball"</item>
+ <item msgid="4642980625253001443">"Person kicking"</item>
+ <item msgid="4324795269518833500">"Game controller"</item>
+ <item msgid="7789966425125441125">"Artist colour palette"</item>
+ <item msgid="663512680597461570">"Snowflake"</item>
+ <item msgid="7952183800501346803">"Beach umbrella"</item>
+ <item msgid="799139025758265891">"Workshop tools"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Film reel"</item>
+ <item msgid="5827426100157335512">"Book"</item>
+ <item msgid="8585828346253128384">"Lotus flower"</item>
+ <item msgid="8788370542815300188">"Person\'s mind"</item>
+ <item msgid="7287354964767553293">"Headphones"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Train"</item>
+ <item msgid="4903790544026923026">"Car"</item>
+ <item msgid="5010405583912314582">"Fork and knife"</item>
+ <item msgid="8939998598599064900">"Shopping basket"</item>
+ <item msgid="3379605903308731893">"Child"</item>
+ <item msgid="7808668968550293112">"Animal paw"</item>
+ <item msgid="1000692647524056504">"Star badge"</item>
+ <item msgid="8270261073421676502">"Two people"</item>
+ <item msgid="5767782819651505460">"Star"</item>
+ <item msgid="4368451291862729334">"Heart"</item>
+ <item msgid="2613199102208419986">"House"</item>
+ <item msgid="3022279986430275040">"Half-moon"</item>
+ <item msgid="5421089790869483206">"Clock"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 64e1eec..976cc25 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Pair new device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatically turn on tomorrow"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"If you turn off Bluetooth, it turns on again the next day"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Pair right ear"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Pair left ear"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Pair your other ear"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Disable Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Disables the Bluetooth LE audio feature if the device supports LE audio hardware capabilities."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio mode"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Enable Bluetooth LE Audio Broadcast UI preview"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Enables the LE Audio Sharing UI preview including personal audio sharing and private broadcast"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Show LE Audio toggle in Device details"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bypass Bluetooth LE Audio allowlist"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Use LE Audio by default even if LE Audio peripheral hasn\'t been verified to meet allowlist criteria."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Set automatically using your network and wireless signals"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatic time zone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Set automatically based on mobile networks near you"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Set automatically using your device location, if available"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Use locale default"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Use 24-hour format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Time"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lift finger, then touch sensor again"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Can\'t use fingerprint sensor"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visit a repair provider."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Screen-off Fingerprint Unlock"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use Fingerprint Unlock even when the screen is off"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Screen-off, unlock"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"More security settings"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Work profile lock, encryption and more"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encryption, credentials and more"</string>
@@ -1950,26 +1955,36 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"The keyboard ignores quickly repeated presses of the same key"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Bounce key threshold"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Choose the duration of time that your keyboard ignores repeated key presses"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Custom"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"custom value"</string>
<string name="slow_keys" msgid="2891452895499690837">"Slow keys"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Adjusts the time that it takes for a key press to activate"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Sticky keys"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Press one key at a time for shortcuts instead of holding keys down together"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Mouse keys"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Use mouse keys"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use your keyboard to control the pointer"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Mouse reverse scrolling"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scroll up to move the page down"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Swap left and right buttons"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use the left mouse button as your right"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Mouse keys for <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use the <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> keys to move the mouse pointer"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use the <xliff:g id="CLICK_LABEL">%s</xliff:g> key to click the primary mouse button"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use the <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> key to press and hold the primary mouse button"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use the <xliff:g id="RELEASE_LABEL">%s</xliff:g> key to release the primary mouse button"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use the <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> key to toggle scroll mode. This will make the <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> keys scroll the view top, down, left or right"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use the <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> key to click the secondary mouse button"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Keyboard shortcuts"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Show list of shortcuts"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Work profile keyboards & tools"</string>
<string name="virtual_keyboards_for_work_title" msgid="786459157034008675">"On-screen keyboard for work"</string>
<string name="keyboard_default_layout" msgid="5377811770620422301">"Default"</string>
<string name="trackpad_settings" msgid="2071131324087677005">"Touchpad"</string>
- <string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad & mouse"</string>
+ <string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad and mouse"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"Pointer speed, gestures"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"Tap to click"</string>
<string name="trackpad_tap_dragging_title" msgid="798644199582480712">"Tap dragging"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Choose a new key for <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Physical keyboard accessibility"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Sticky keys, bounce keys, mouse keys"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repeat keys"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Delay before repeat"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Repeat rate"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hold down a key to repeat its character until the key is released"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> layout"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Default"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatic: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Adjust power use"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Included packages"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps are running normally"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Battery replacement recommended"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Battery capacity and charging performance are reduced, and battery replacement is recommended."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Battery level low"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Turn on Battery Saver to extend battery life"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Improve battery life"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Disconnect this VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Disconnect"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Forget VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Replace existing VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Set always-on VPN?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\'9.00 a.m. – 5.00 p.m. weekdays\'"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Calendar events"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} is active}=2{{mode_1} and {mode_2} are active}=3{{mode_1}, {mode_2} and {mode_3} are active}other{{mode_1}, {mode_2} and # more are active}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode can turn on automatically}other{# modes can turn on automatically}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Do Not Disturb}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Not set"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Disabled"</string>
@@ -3689,9 +3701,9 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"It can reply to messages and take action on buttons in notifications, including snoozing or dismissing notifications and answering calls."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Change settings"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"It can turn Do Not Disturb on or off and change related settings."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"It can manage and activate Modes and change related settings."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"It can manage and activate modes, and change related settings."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, Do Not Disturb access may also be turned off."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, Modes access may also be turned off."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, modes access may also be turned off."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Turn off"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Cancel"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Real-time"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"When you receive many notifications within a short time, your device will lower its volume and minimise alerts for up to 2 minutes. Calls, alarms and priority conversations are not affected. \n\nNotifications received during the cooldown can be found by pulling down from the top of the screen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Apply to work profiles"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Apply to work profile apps"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR helper services"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"No installed apps have requested to be run as VR helper services."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Allow VR service access for <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3753,7 +3775,7 @@
<string name="zen_access_detail_switch" msgid="4183681772666138993">"Allow Do Not Disturb"</string>
<string name="zen_access_empty_text" msgid="3779921853282293080">"No installed apps have requested Do Not Disturb access"</string>
<string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Modes access"</string>
- <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Allow Modes access"</string>
+ <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Allow modes access"</string>
<string name="zen_modes_access_empty_text" msgid="8750927923904377110">"No installed apps have requested Modes access"</string>
<string name="app_notifications_off_desc" msgid="2484843759466874201">"You haven\'t allowed notifications from this app"</string>
<string name="channel_notifications_off_desc" msgid="6202042207121633488">"At your request, Android is blocking this category of notifications from appearing on this device"</string>
@@ -4153,8 +4175,8 @@
<string name="zen_access_disabled_package_warning" msgid="6565908224294537889">"Must stay turned on because notification access is on"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Revoke access to Do Not Disturb for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"All Do Not Disturb rules created by this app will be removed."</string>
- <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Allow access to Modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"The app will be able to turn on/off Do Not Disturb, manage and activate Modes and make changes to related settings."</string>
+ <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Allow access to modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"The app will be able to turn on/off Do Not Disturb, manage and activate modes and make changes to related settings."</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Revoke access to modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"All modes created by this app will be removed."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Don’t optimise"</string>
@@ -4597,7 +4619,7 @@
<string name="app_info_storage_title" msgid="4076977173803093808">"Space used"</string>
<string name="webview_uninstalled_for_user" msgid="627352948986275488">"(uninstalled for user <xliff:g id="USER">%s</xliff:g>)"</string>
<string name="webview_disabled_for_user" msgid="5809886172032644498">"(disabled for user <xliff:g id="USER">%s</xliff:g>)"</string>
- <string name="autofill_app" msgid="7595308061826307921">"Auto-fill service"</string>
+ <string name="autofill_app" msgid="7595308061826307921">"Autofill service"</string>
<string name="default_autofill_app" msgid="372234803718251606">"Default auto-fill service"</string>
<string name="autofill_passwords" msgid="6708057251459761083">"Passwords"</string>
<string name="credman_chosen_app_title" msgid="7735183808067729319">"Preferred service"</string>
@@ -5029,7 +5051,7 @@
<string name="default_app_none" msgid="5420632042222036264">"None"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"This choice is no longer valid. Try again."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"Press and hold power button"</string>
- <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Press & hold the power button to access"</string>
+ <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Press and hold the power button to access"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Power menu"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Digital assistant"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Access digital assistant"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Listen to stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scan an audio stream QR code to listen with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Can\'t edit password while sharing. To change the password, first turn off audio sharing."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Your password must contain 4–16 characters and use only letters, numbers and symbols"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR code scanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Need help?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Search settings"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Device only"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"New contacts won\'t be synced with an account"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Contacts will be saved to your device and synced to your account by default"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"No default set"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Error setting the default account"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"No default set"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Device only"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Add an account to get started"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Touch and hold the home button or the navigation handle to search using the content on your screen."</string>
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 74b459e..ce55be3 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Pair new device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatically turn on tomorrow"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"If you turn off Bluetooth, it turns on again the next day"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Pair right ear"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Pair left ear"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Pair your other ear"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Disable Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Disables Bluetooth LE audio feature if the device supports LE audio hardware capabilities."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio mode"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Enable Bluetooth LE Audio Broadcast UI preview"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Enables the LE Audio Sharing UI preview including personal audio sharing and private broadcast"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Show LE audio toggle in Device Details"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bypass Bluetooth LE Audio Allowlist"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Use LE Audio by default even if LE Audio peripheral hasn\'t been verified to meet Allowlist criteria."</string>
@@ -551,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lift finger, then touch sensor again"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Can’t use fingerprint sensor"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visit a repair provider."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Screen-off Fingerprint Unlock"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use Fingerprint Unlock even when the screen is off"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Screen-off, Unlock"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"More security settings"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Work profile lock, encryption, and more"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encryption, credentials, and more"</string>
@@ -1949,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"The keyboard ignores quickly repeated presses of the same key"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Bounce key threshold"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Choose the duration of time your keyboard ignores repeated key presses"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Custom"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"custom value"</string>
<string name="slow_keys" msgid="2891452895499690837">"Slow keys"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Adjusts the time it takes for a key press to activate"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Sticky keys"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Press one key at a time for shortcuts instead of holding keys down together"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Mouse keys"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Use mouse keys"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use your keyboard to control the pointer"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Mouse reverse scrolling"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scroll up to move the page down"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Swap left and right buttons"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use the left mouse button as your right"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Mouse keys for <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use the <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> keys to move the mouse pointer"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use the <xliff:g id="CLICK_LABEL">%s</xliff:g> key to click the primary mouse button"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use the <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> key to press & hold the primary mouse button"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use the <xliff:g id="RELEASE_LABEL">%s</xliff:g> key to release the primary mouse button"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use the <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> key to toggle scroll mode. This will make the <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> keys scroll the view top, down, left or right"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use the <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> key to click the secondary mouse button"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Keyboard shortcuts"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Show list of shortcuts"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Work profile keyboards & tools"</string>
@@ -2565,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Adjust power use"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Included packages"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps are running normally"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Battery replacement recommended"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Battery capacity and charging performance are reduced, and battery replacement is recommended."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Battery level low"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Turn on Battery Saver to extend battery life"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Improve battery life"</string>
@@ -3405,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 AM - 5 PM weekdays\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Calendar events"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} is active}=2{{mode_1} and {mode_2} are active}=3{{mode_1}, {mode_2}, and {mode_3} are active}other{{mode_1}, {mode_2}, and # more are active}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode can turn on automatically}other{# modes can turn on automatically}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Do Not Disturb}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Not set"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Disabled"</string>
@@ -3709,6 +3727,11 @@
<string name="notification_polite_description" msgid="5497748284893832854">"When you receive many notifications within a short time, your device will lower its volume and minimize alerts for up to 2 minutes. Calls, alarms, and priority conversations are not affected. \n\nNotifications received during the cooldown can be found by pulling down from the top of the screen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Apply to work profiles"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Apply to work profile apps"</string>
+ <string name="notification_bundle_title" msgid="460988459835922719">"Bundled notifications"</string>
+ <string name="notification_bundle_on" msgid="1596327200778050642">"On"</string>
+ <string name="notification_bundle_off" msgid="1550261372988157377">"Off"</string>
+ <string name="notification_bundle_main_control_title" msgid="4746182488388939403">"Use notification bundling"</string>
+ <string name="notification_bundle_description" msgid="3896142878395333784">"Notifications with similar themes will be silenced and grouped together for a quieter experience. Bundling will override an app\'s own notification settings."</string>
<string name="vr_listeners_title" msgid="4960357292472540964">"VR helper services"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"No installed apps have requested to be run as VR helper services."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Allow VR service access for <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5453,6 +5476,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Listen to stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scan an audio stream QR code to listen with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Can\'t edit password while sharing. To change the password, first turn off audio sharing."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Your password must contain 4-16 characters and use only letters, numbers and symbols"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR code scanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Need help?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Search Settings"</string>
@@ -5461,8 +5485,12 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Device only"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"New contacts won\'t be synced with an account"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Contacts will be saved to your device and synced to your account by default"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"No default set"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Error setting the default account"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"No default set"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Device only"</string>
+ <string name="contacts_storage_account_title" msgid="4939024280942927810">"Device and %1$s"</string>
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Add an account to get started"</string>
+ <string name="contacts_storage_account_category_title" msgid="6427149157377815586">"Where to save contacts"</string>
<string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
<string name="search_gesture_feature_summary" msgid="1793056495030564014">"Touch and hold the Home button or the navigation handle to search using the content on your screen."</string>
</resources>
diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml
index 85c9cc8..9cb3e27 100644
--- a/res/values-en-rGB/arrays.xml
+++ b/res/values-en-rGB/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Briefcase"</item>
+ <item msgid="184985872234062767">"Classical building"</item>
+ <item msgid="9189550412466785530">"Flats"</item>
+ <item msgid="2142527562511049422">"Speech bubble"</item>
+ <item msgid="2548100558260478605">"Group of people"</item>
+ <item msgid="2270003903304578284">"Light bulb"</item>
+ <item msgid="4793496619091161864">"Calendar"</item>
+ <item msgid="5673625795644364100">"Do Not Disturb"</item>
+ <item msgid="1423820834865831361">"Person running"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Gym dumbbell"</item>
+ <item msgid="2730180105015616518">"Swimming"</item>
+ <item msgid="2666922823253345958">"Person hiking"</item>
+ <item msgid="8234880356472211396">"Person throwing a ball"</item>
+ <item msgid="4642980625253001443">"Person kicking"</item>
+ <item msgid="4324795269518833500">"Game controller"</item>
+ <item msgid="7789966425125441125">"Artist colour palette"</item>
+ <item msgid="663512680597461570">"Snowflake"</item>
+ <item msgid="7952183800501346803">"Beach umbrella"</item>
+ <item msgid="799139025758265891">"Workshop tools"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Film reel"</item>
+ <item msgid="5827426100157335512">"Book"</item>
+ <item msgid="8585828346253128384">"Lotus flower"</item>
+ <item msgid="8788370542815300188">"Person\'s mind"</item>
+ <item msgid="7287354964767553293">"Headphones"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Train"</item>
+ <item msgid="4903790544026923026">"Car"</item>
+ <item msgid="5010405583912314582">"Fork and knife"</item>
+ <item msgid="8939998598599064900">"Shopping basket"</item>
+ <item msgid="3379605903308731893">"Child"</item>
+ <item msgid="7808668968550293112">"Animal paw"</item>
+ <item msgid="1000692647524056504">"Star badge"</item>
+ <item msgid="8270261073421676502">"Two people"</item>
+ <item msgid="5767782819651505460">"Star"</item>
+ <item msgid="4368451291862729334">"Heart"</item>
+ <item msgid="2613199102208419986">"House"</item>
+ <item msgid="3022279986430275040">"Half-moon"</item>
+ <item msgid="5421089790869483206">"Clock"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 05a463d..d96ee1d 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Pair new device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatically turn on tomorrow"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"If you turn off Bluetooth, it turns on again the next day"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Pair right ear"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Pair left ear"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Pair your other ear"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Disable Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Disables the Bluetooth LE audio feature if the device supports LE audio hardware capabilities."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio mode"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Enable Bluetooth LE Audio Broadcast UI preview"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Enables the LE Audio Sharing UI preview including personal audio sharing and private broadcast"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Show LE Audio toggle in Device details"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bypass Bluetooth LE Audio allowlist"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Use LE Audio by default even if LE Audio peripheral hasn\'t been verified to meet allowlist criteria."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Set automatically using your network and wireless signals"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatic time zone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Set automatically based on mobile networks near you"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Set automatically using your device location, if available"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Use locale default"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Use 24-hour format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Time"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lift finger, then touch sensor again"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Can\'t use fingerprint sensor"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visit a repair provider."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Screen-off Fingerprint Unlock"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use Fingerprint Unlock even when the screen is off"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Screen-off, unlock"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"More security settings"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Work profile lock, encryption and more"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encryption, credentials and more"</string>
@@ -1950,26 +1955,36 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"The keyboard ignores quickly repeated presses of the same key"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Bounce key threshold"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Choose the duration of time that your keyboard ignores repeated key presses"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Custom"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"custom value"</string>
<string name="slow_keys" msgid="2891452895499690837">"Slow keys"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Adjusts the time that it takes for a key press to activate"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Sticky keys"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Press one key at a time for shortcuts instead of holding keys down together"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Mouse keys"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Use mouse keys"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use your keyboard to control the pointer"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Mouse reverse scrolling"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scroll up to move the page down"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Swap left and right buttons"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use the left mouse button as your right"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Mouse keys for <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use the <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> keys to move the mouse pointer"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use the <xliff:g id="CLICK_LABEL">%s</xliff:g> key to click the primary mouse button"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use the <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> key to press and hold the primary mouse button"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use the <xliff:g id="RELEASE_LABEL">%s</xliff:g> key to release the primary mouse button"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use the <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> key to toggle scroll mode. This will make the <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> keys scroll the view top, down, left or right"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use the <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> key to click the secondary mouse button"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Keyboard shortcuts"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Show list of shortcuts"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Work profile keyboards & tools"</string>
<string name="virtual_keyboards_for_work_title" msgid="786459157034008675">"On-screen keyboard for work"</string>
<string name="keyboard_default_layout" msgid="5377811770620422301">"Default"</string>
<string name="trackpad_settings" msgid="2071131324087677005">"Touchpad"</string>
- <string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad & mouse"</string>
+ <string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad and mouse"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"Pointer speed, gestures"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"Tap to click"</string>
<string name="trackpad_tap_dragging_title" msgid="798644199582480712">"Tap dragging"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Choose a new key for <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Physical keyboard accessibility"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Sticky keys, bounce keys, mouse keys"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repeat keys"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Delay before repeat"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Repeat rate"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hold down a key to repeat its character until the key is released"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> layout"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Default"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatic: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Adjust power use"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Included packages"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps are running normally"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Battery replacement recommended"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Battery capacity and charging performance are reduced, and battery replacement is recommended."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Battery level low"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Turn on Battery Saver to extend battery life"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Improve battery life"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Disconnect this VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Disconnect"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Forget VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Replace existing VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Set always-on VPN?"</string>
@@ -3138,7 +3150,7 @@
<string name="restriction_settings_title" msgid="4293731103465972557">"Restrictions"</string>
<string name="restriction_menu_reset" msgid="92859464456364092">"Remove restrictions"</string>
<string name="restriction_menu_change_pin" msgid="2505923323199003718">"Change PIN"</string>
- <string name="help_label" msgid="2896538416436125883">"Help & feedback"</string>
+ <string name="help_label" msgid="2896538416436125883">"Help and feedback"</string>
<string name="user_account_title" msgid="6389636876210834864">"Account for content"</string>
<string name="user_picture_title" msgid="7176437495107563321">"Photo ID"</string>
<string name="extreme_threats_title" msgid="1098958631519213856">"Extreme threats"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\'9.00 a.m. – 5.00 p.m. weekdays\'"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Calendar events"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} is active}=2{{mode_1} and {mode_2} are active}=3{{mode_1}, {mode_2} and {mode_3} are active}other{{mode_1}, {mode_2} and # more are active}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode can turn on automatically}other{# modes can turn on automatically}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Do Not Disturb}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Not set"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Disabled"</string>
@@ -3689,9 +3701,9 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"It can reply to messages and take action on buttons in notifications, including snoozing or dismissing notifications and answering calls."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Change settings"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"It can turn Do Not Disturb on or off and change related settings."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"It can manage and activate Modes and change related settings."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"It can manage and activate modes, and change related settings."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, Do Not Disturb access may also be turned off."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, Modes access may also be turned off."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, modes access may also be turned off."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Turn off"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Cancel"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Real-time"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"When you receive many notifications within a short time, your device will lower its volume and minimise alerts for up to 2 minutes. Calls, alarms and priority conversations are not affected. \n\nNotifications received during the cooldown can be found by pulling down from the top of the screen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Apply to work profiles"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Apply to work profile apps"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR helper services"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"No installed apps have requested to be run as VR helper services."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Allow VR service access for <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3753,7 +3775,7 @@
<string name="zen_access_detail_switch" msgid="4183681772666138993">"Allow Do Not Disturb"</string>
<string name="zen_access_empty_text" msgid="3779921853282293080">"No installed apps have requested Do Not Disturb access"</string>
<string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Modes access"</string>
- <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Allow Modes access"</string>
+ <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Allow modes access"</string>
<string name="zen_modes_access_empty_text" msgid="8750927923904377110">"No installed apps have requested Modes access"</string>
<string name="app_notifications_off_desc" msgid="2484843759466874201">"You haven\'t allowed notifications from this app"</string>
<string name="channel_notifications_off_desc" msgid="6202042207121633488">"At your request, Android is blocking this category of notifications from appearing on this device"</string>
@@ -4153,8 +4175,8 @@
<string name="zen_access_disabled_package_warning" msgid="6565908224294537889">"Must stay turned on because notification access is on"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Revoke access to Do Not Disturb for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"All Do Not Disturb rules created by this app will be removed."</string>
- <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Allow access to Modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"The app will be able to turn on/off Do Not Disturb, manage and activate Modes and make changes to related settings."</string>
+ <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Allow access to modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"The app will be able to turn on/off Do Not Disturb, manage and activate modes and make changes to related settings."</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Revoke access to modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"All modes created by this app will be removed."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Don’t optimise"</string>
@@ -4597,7 +4619,7 @@
<string name="app_info_storage_title" msgid="4076977173803093808">"Space used"</string>
<string name="webview_uninstalled_for_user" msgid="627352948986275488">"(uninstalled for user <xliff:g id="USER">%s</xliff:g>)"</string>
<string name="webview_disabled_for_user" msgid="5809886172032644498">"(disabled for user <xliff:g id="USER">%s</xliff:g>)"</string>
- <string name="autofill_app" msgid="7595308061826307921">"Auto-fill service"</string>
+ <string name="autofill_app" msgid="7595308061826307921">"Autofill service"</string>
<string name="default_autofill_app" msgid="372234803718251606">"Default auto-fill service"</string>
<string name="autofill_passwords" msgid="6708057251459761083">"Passwords"</string>
<string name="credman_chosen_app_title" msgid="7735183808067729319">"Preferred service"</string>
@@ -5029,7 +5051,7 @@
<string name="default_app_none" msgid="5420632042222036264">"None"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"This choice is no longer valid. Try again."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"Press and hold power button"</string>
- <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Press & hold the power button to access"</string>
+ <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Press and hold the power button to access"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Power menu"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Digital assistant"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Access digital assistant"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Listen to stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scan an audio stream QR code to listen with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Can\'t edit password while sharing. To change the password, first turn off audio sharing."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Your password must contain 4–16 characters and use only letters, numbers and symbols"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR code scanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Need help?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Search settings"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Device only"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"New contacts won\'t be synced with an account"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Contacts will be saved to your device and synced to your account by default"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"No default set"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Error setting the default account"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"No default set"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Device only"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Add an account to get started"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Touch and hold the home button or the navigation handle to search using the content on your screen."</string>
</resources>
diff --git a/res/values-en-rIN/arrays.xml b/res/values-en-rIN/arrays.xml
index 85c9cc8..9cb3e27 100644
--- a/res/values-en-rIN/arrays.xml
+++ b/res/values-en-rIN/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Briefcase"</item>
+ <item msgid="184985872234062767">"Classical building"</item>
+ <item msgid="9189550412466785530">"Flats"</item>
+ <item msgid="2142527562511049422">"Speech bubble"</item>
+ <item msgid="2548100558260478605">"Group of people"</item>
+ <item msgid="2270003903304578284">"Light bulb"</item>
+ <item msgid="4793496619091161864">"Calendar"</item>
+ <item msgid="5673625795644364100">"Do Not Disturb"</item>
+ <item msgid="1423820834865831361">"Person running"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Gym dumbbell"</item>
+ <item msgid="2730180105015616518">"Swimming"</item>
+ <item msgid="2666922823253345958">"Person hiking"</item>
+ <item msgid="8234880356472211396">"Person throwing a ball"</item>
+ <item msgid="4642980625253001443">"Person kicking"</item>
+ <item msgid="4324795269518833500">"Game controller"</item>
+ <item msgid="7789966425125441125">"Artist colour palette"</item>
+ <item msgid="663512680597461570">"Snowflake"</item>
+ <item msgid="7952183800501346803">"Beach umbrella"</item>
+ <item msgid="799139025758265891">"Workshop tools"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Film reel"</item>
+ <item msgid="5827426100157335512">"Book"</item>
+ <item msgid="8585828346253128384">"Lotus flower"</item>
+ <item msgid="8788370542815300188">"Person\'s mind"</item>
+ <item msgid="7287354964767553293">"Headphones"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Train"</item>
+ <item msgid="4903790544026923026">"Car"</item>
+ <item msgid="5010405583912314582">"Fork and knife"</item>
+ <item msgid="8939998598599064900">"Shopping basket"</item>
+ <item msgid="3379605903308731893">"Child"</item>
+ <item msgid="7808668968550293112">"Animal paw"</item>
+ <item msgid="1000692647524056504">"Star badge"</item>
+ <item msgid="8270261073421676502">"Two people"</item>
+ <item msgid="5767782819651505460">"Star"</item>
+ <item msgid="4368451291862729334">"Heart"</item>
+ <item msgid="2613199102208419986">"House"</item>
+ <item msgid="3022279986430275040">"Half-moon"</item>
+ <item msgid="5421089790869483206">"Clock"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 9ca1e24..87c36b1 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Pair new device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatically turn on tomorrow"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"If you turn off Bluetooth, it turns on again the next day"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Pair right ear"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Pair left ear"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Pair your other ear"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Disable Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Disables the Bluetooth LE audio feature if the device supports LE audio hardware capabilities."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio mode"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Enable Bluetooth LE Audio Broadcast UI preview"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Enables the LE Audio Sharing UI preview including personal audio sharing and private broadcast"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Show LE Audio toggle in Device details"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bypass Bluetooth LE Audio allowlist"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Use LE Audio by default even if LE Audio peripheral hasn\'t been verified to meet allowlist criteria."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Set automatically using your network and wireless signals"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatic time zone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Set automatically based on mobile networks near you"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Set automatically using your device location, if available"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Use locale default"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Use 24-hour format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Time"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lift finger, then touch sensor again"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Can\'t use fingerprint sensor"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visit a repair provider."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Screen-off Fingerprint Unlock"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use Fingerprint Unlock even when the screen is off"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Screen-off, unlock"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"More security settings"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Work profile lock, encryption and more"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encryption, credentials and more"</string>
@@ -1950,26 +1955,36 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"The keyboard ignores quickly repeated presses of the same key"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Bounce key threshold"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Choose the duration of time that your keyboard ignores repeated key presses"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Custom"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"custom value"</string>
<string name="slow_keys" msgid="2891452895499690837">"Slow keys"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Adjusts the time that it takes for a key press to activate"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Sticky keys"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Press one key at a time for shortcuts instead of holding keys down together"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Mouse keys"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Use mouse keys"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use your keyboard to control the pointer"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Mouse reverse scrolling"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scroll up to move the page down"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Swap left and right buttons"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use the left mouse button as your right"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Mouse keys for <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use the <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> keys to move the mouse pointer"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use the <xliff:g id="CLICK_LABEL">%s</xliff:g> key to click the primary mouse button"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use the <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> key to press and hold the primary mouse button"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use the <xliff:g id="RELEASE_LABEL">%s</xliff:g> key to release the primary mouse button"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use the <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> key to toggle scroll mode. This will make the <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> keys scroll the view top, down, left or right"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use the <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> key to click the secondary mouse button"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Keyboard shortcuts"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Show list of shortcuts"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Work profile keyboards & tools"</string>
<string name="virtual_keyboards_for_work_title" msgid="786459157034008675">"On-screen keyboard for work"</string>
<string name="keyboard_default_layout" msgid="5377811770620422301">"Default"</string>
<string name="trackpad_settings" msgid="2071131324087677005">"Touchpad"</string>
- <string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad & mouse"</string>
+ <string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad and mouse"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"Pointer speed, gestures"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"Tap to click"</string>
<string name="trackpad_tap_dragging_title" msgid="798644199582480712">"Tap dragging"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Choose a new key for <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Physical keyboard accessibility"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Sticky keys, bounce keys, mouse keys"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repeat keys"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Delay before repeat"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Repeat rate"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hold down a key to repeat its character until the key is released"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> layout"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Default"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatic: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Adjust power use"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Included packages"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps are running normally"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Battery replacement recommended"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Battery capacity and charging performance are reduced, and battery replacement is recommended."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Battery level low"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Turn on Battery Saver to extend battery life"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Improve battery life"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Disconnect this VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Disconnect"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Forget VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Replace existing VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Set always-on VPN?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\'9.00 a.m. – 5.00 p.m. weekdays\'"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Calendar events"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} is active}=2{{mode_1} and {mode_2} are active}=3{{mode_1}, {mode_2} and {mode_3} are active}other{{mode_1}, {mode_2} and # more are active}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode can turn on automatically}other{# modes can turn on automatically}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Do Not Disturb}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Not set"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Disabled"</string>
@@ -3689,9 +3701,9 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"It can reply to messages and take action on buttons in notifications, including snoozing or dismissing notifications and answering calls."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Change settings"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"It can turn Do Not Disturb on or off and change related settings."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"It can manage and activate Modes and change related settings."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"It can manage and activate modes, and change related settings."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, Do Not Disturb access may also be turned off."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, Modes access may also be turned off."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"If you turn off notification access for <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, modes access may also be turned off."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Turn off"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Cancel"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Real-time"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"When you receive many notifications within a short time, your device will lower its volume and minimise alerts for up to 2 minutes. Calls, alarms and priority conversations are not affected. \n\nNotifications received during the cooldown can be found by pulling down from the top of the screen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Apply to work profiles"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Apply to work profile apps"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR helper services"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"No installed apps have requested to be run as VR helper services."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Allow VR service access for <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3753,7 +3775,7 @@
<string name="zen_access_detail_switch" msgid="4183681772666138993">"Allow Do Not Disturb"</string>
<string name="zen_access_empty_text" msgid="3779921853282293080">"No installed apps have requested Do Not Disturb access"</string>
<string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Modes access"</string>
- <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Allow Modes access"</string>
+ <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Allow modes access"</string>
<string name="zen_modes_access_empty_text" msgid="8750927923904377110">"No installed apps have requested Modes access"</string>
<string name="app_notifications_off_desc" msgid="2484843759466874201">"You haven\'t allowed notifications from this app"</string>
<string name="channel_notifications_off_desc" msgid="6202042207121633488">"At your request, Android is blocking this category of notifications from appearing on this device"</string>
@@ -4153,8 +4175,8 @@
<string name="zen_access_disabled_package_warning" msgid="6565908224294537889">"Must stay turned on because notification access is on"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Revoke access to Do Not Disturb for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"All Do Not Disturb rules created by this app will be removed."</string>
- <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Allow access to Modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"The app will be able to turn on/off Do Not Disturb, manage and activate Modes and make changes to related settings."</string>
+ <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Allow access to modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"The app will be able to turn on/off Do Not Disturb, manage and activate modes and make changes to related settings."</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Revoke access to modes for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"All modes created by this app will be removed."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Don’t optimise"</string>
@@ -4597,7 +4619,7 @@
<string name="app_info_storage_title" msgid="4076977173803093808">"Space used"</string>
<string name="webview_uninstalled_for_user" msgid="627352948986275488">"(uninstalled for user <xliff:g id="USER">%s</xliff:g>)"</string>
<string name="webview_disabled_for_user" msgid="5809886172032644498">"(disabled for user <xliff:g id="USER">%s</xliff:g>)"</string>
- <string name="autofill_app" msgid="7595308061826307921">"Auto-fill service"</string>
+ <string name="autofill_app" msgid="7595308061826307921">"Autofill service"</string>
<string name="default_autofill_app" msgid="372234803718251606">"Default auto-fill service"</string>
<string name="autofill_passwords" msgid="6708057251459761083">"Passwords"</string>
<string name="credman_chosen_app_title" msgid="7735183808067729319">"Preferred service"</string>
@@ -5029,7 +5051,7 @@
<string name="default_app_none" msgid="5420632042222036264">"None"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"This choice is no longer valid. Try again."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"Press and hold power button"</string>
- <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Press & hold the power button to access"</string>
+ <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Press and hold the power button to access"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Power menu"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Digital assistant"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Access digital assistant"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Listen to stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scan an audio stream QR code to listen with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Can\'t edit password while sharing. To change the password, first turn off audio sharing."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Your password must contain 4–16 characters and use only letters, numbers and symbols"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR code scanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Need help?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Search settings"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Device only"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"New contacts won\'t be synced with an account"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Contacts will be saved to your device and synced to your account by default"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"No default set"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Error setting the default account"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"No default set"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Device only"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Add an account to get started"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Touch and hold the home button or the navigation handle to search using the content on your screen."</string>
</resources>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index e5178b0..a19ff4b 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Maletín"</item>
+ <item msgid="184985872234062767">"Edificio clásico"</item>
+ <item msgid="9189550412466785530">"Edificio de apartamentos"</item>
+ <item msgid="2142527562511049422">"Globo de diálogo"</item>
+ <item msgid="2548100558260478605">"Grupo de personas"</item>
+ <item msgid="2270003903304578284">"Bombilla"</item>
+ <item msgid="4793496619091161864">"Calendario"</item>
+ <item msgid="5673625795644364100">"No interrumpir"</item>
+ <item msgid="1423820834865831361">"Persona corriendo"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Mancuerna"</item>
+ <item msgid="2730180105015616518">"Natación"</item>
+ <item msgid="2666922823253345958">"Persona caminando"</item>
+ <item msgid="8234880356472211396">"Persona arrojando una pelota"</item>
+ <item msgid="4642980625253001443">"Persona pateando"</item>
+ <item msgid="4324795269518833500">"Control de juegos"</item>
+ <item msgid="7789966425125441125">"Paleta de colores del artista"</item>
+ <item msgid="663512680597461570">"Copo de nieve"</item>
+ <item msgid="7952183800501346803">"Sombrilla"</item>
+ <item msgid="799139025758265891">"Herramientas de taller"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Rollo de película"</item>
+ <item msgid="5827426100157335512">"Libro"</item>
+ <item msgid="8585828346253128384">"Flor de loto"</item>
+ <item msgid="8788370542815300188">"Mente de una persona"</item>
+ <item msgid="7287354964767553293">"Auriculares"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Tenedor y cuchillo"</item>
+ <item msgid="8939998598599064900">"Carrito de compras"</item>
+ <item msgid="3379605903308731893">"Niño"</item>
+ <item msgid="7808668968550293112">"Pata de animal"</item>
+ <item msgid="1000692647524056504">"Insignia de estrella"</item>
+ <item msgid="8270261073421676502">"Dos personas"</item>
+ <item msgid="5767782819651505460">"Estrella"</item>
+ <item msgid="4368451291862729334">"Corazón"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Media luna"</item>
+ <item msgid="5421089790869483206">"Reloj"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 0ac1984..1fbdb09 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Vincular dispositivo nuevo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Activar automáticamente mañana"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Si desactivas el Bluetooth, se vuelve a activar al día siguiente"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Vincular aud. der."</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Vincular aud. izq."</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Vincula el otro audífono"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Inhabilitar Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Inhabilita la función Bluetooth LE Audio si el dispositivo admite funciones de hardware de ese tipo."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modo Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Habilitar la versión preliminar de la IU de transmisión de Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Habilita la versión preliminar de la IU de uso compartido de LE Audio, que incluye el uso compartido de audio personal y la transmisión privada"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Botón LE Audio en Detalles del dispositivo"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omitir lista de dispositivos permitidos de Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Usar LE Audio de forma predeterminada incluso si no se verificó si el periférico de LE Audio cumple con los criterios de la lista de dispositivos permitidos"</string>
@@ -132,7 +135,7 @@
<string name="connected_device_add_device_summary" msgid="8671009879957120802">"Se activará el Bluetooth para vincular"</string>
<string name="connected_device_connections_title" msgid="4164120115341579170">"Preferencias de conexión"</string>
<string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"Conectados anteriormente"</string>
- <string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"Se activó el Bluetooth"</string>
+ <string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"Bluetooth activado"</string>
<string name="previous_connected_see_all" msgid="7759413145713251328">"Ver todos"</string>
<string name="connected_device_fast_pair_device_see_all" msgid="4898279230458128620">"Ver todos"</string>
<string name="stylus_device_details_title" msgid="7618295136015480864">"Pluma stylus"</string>
@@ -210,7 +213,7 @@
<string name="title_regional_pref_footer" msgid="7450438024324794380">"Si una app no admite preferencias regionales, usará su configuración regional predeterminada."</string>
<string name="desc_regional_pref_footer_learn_more" msgid="4401708653329230081">"Obtén más información sobre las preferencias de idioma."</string>
<string name="category_title_terms_of_address" msgid="4309422700380895278">"Preferencias adicionales"</string>
- <string name="terms_of_address_title" msgid="7338630812197476808">"Elige la forma en la que el dispositivo se dirige a ti"</string>
+ <string name="terms_of_address_title" msgid="7338630812197476808">"Elige cómo el dispositivo se dirige a ti"</string>
<string name="terms_of_address_summary" msgid="7802443422612600620">"Personaliza la forma en la que el dispositivo se dirige a ti"</string>
<string name="terms_of_address_intro_title" msgid="1533951542181569335">"Este parámetro permite personalizar la forma en que se dirigen a ti la mayoría de las apps del sistema. Las apps que instales manualmente no lo usarán."</string>
<string name="terms_of_address_not_specified" msgid="4439257779351251973">"Sin especificar"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Se establecen automáticamente con la red y las señales inalámbricas"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Zona horaria automática"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Configurar automáticamente según las redes móviles cercanas"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Se establecen automáticamente con la ubicación del dispositivo (si está disponible)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usar configuración regional predeterminada"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Formato de 24 horas"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Hora"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Levanta el dedo y vuelve a tocar el sensor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"No se puede usar el sensor de huellas dactilares"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Consulta a un proveedor de reparaciones."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueo con huellas dactilares con la pantalla apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Usa el Desbloqueo con huellas dactilares incluso cuando la pantalla está apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Pantalla apagada, desbloquear"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Más parámetros de seguridad"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueo del perfil de trabajo, encriptación y más"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encriptación, credenciales y más"</string>
@@ -625,7 +630,7 @@
<string name="private_space_setup_title" msgid="2272968244329821450">"Espacio privado"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Oculta o bloquea las apps privadas en un espacio separado. Usa una Cuenta de Google exclusiva para más seguridad."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Cómo funciona"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crea una Cuenta de Google para tu espacio"</b>\n"Usa una cuenta exclusiva para evitar que aparezcan archivos sincronizados, fotos y correos electrónicos fuera de tu espacio"</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crea una Cuenta de Google para tu espacio"</b>\n"Usa una cuenta exclusiva para evitar que aparezcan archivos, fotos y correos electrónicos sincronizados fuera de tu espacio"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Configura un bloqueo"</b>\n"Bloquea tu espacio privado para que nadie más pueda abrirlo."</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instala apps"</b>\n"Instala apps que quieres mantener privadas en tu espacio"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Importante"</string>
@@ -1268,7 +1273,7 @@
<string name="night_display_text" msgid="4789324042428095383">"La Luz nocturna le da un tono ámbar a la pantalla. No solo te permitirá ver o leer con luz tenue, sino que también podría ayudarte a conciliar el sueño más rápido."</string>
<string name="night_display_auto_mode_title" msgid="5869128421470824381">"Programa"</string>
<string name="night_display_auto_mode_never" msgid="2721729920187175239">"Ninguno"</string>
- <string name="night_display_auto_mode_custom" msgid="3938791496034086916">"Activar a la hora que elijas"</string>
+ <string name="night_display_auto_mode_custom" msgid="3938791496034086916">"Se activa a la hora que elijas"</string>
<string name="night_display_auto_mode_twilight" msgid="4291855156158833997">"Activar del atardecer al amanecer"</string>
<string name="night_display_start_time_title" msgid="2611541851596977786">"Hora de inicio"</string>
<string name="night_display_end_time_title" msgid="5243112480391192111">"Hora de finalización"</string>
@@ -1290,7 +1295,7 @@
<string name="dark_ui_auto_mode_title" msgid="9027528859262295099">"Programar"</string>
<string name="dark_ui_auto_mode_never" msgid="3980412582267787662">"Nunca"</string>
<string name="dark_ui_auto_mode_auto" msgid="6658909029498623375">"Activar del atardecer al amanecer"</string>
- <string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"Activar a la hora que elijas"</string>
+ <string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"Se activa a la hora que elijas"</string>
<string name="dark_ui_auto_mode_custom_bedtime" msgid="8465023741946439266">"Se activa a la hora de dormir"</string>
<string name="dark_ui_status_title" msgid="3505119141437774329">"Estado"</string>
<string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"Nunca se activará automáticamente"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"El teclado ignora las presiones repetidas con rapidez de la misma tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Umbral de rechazo de teclas"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Elige el intervalo de tiempo en el que el teclado ignora las presiones repetidas"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizado"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalizado"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajusta el tiempo que lleva activar la presión de una tecla"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Teclas especiales"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Presiona una tecla a la vez para hacer la combinación de teclas en lugar de presionarlas juntas"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Teclas del mouse"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usar teclas del mouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Usa el teclado para controlar el puntero"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Desplazamiento invertido del mouse"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Desplázate hacia arriba para bajar la página"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Intercambiar los botones izquierdo y derecho"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Usa el botón izquierdo del mouse como el derecho"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Teclas del mouse para <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Usa las teclas <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> para mover el puntero del mouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Usa la tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> para hacer clic con el botón principal del mouse"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Usa la tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> para presionar y mantener presionado el botón principal del mouse"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Usa la tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> para soltar el botón principal del mouse"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Usa la tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> para activar o desactivar el modo de desplazamiento. Eso hará que las teclas <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> desplacen la vista hacia arriba, abajo, la izquierda o la derecha"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Usa la tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> para hacer clic en el botón secundario del mouse"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Combinaciones de teclas"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostrar lista de combinaciones de teclas"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Teclados y herramientas del perfil de trabajo"</string>
@@ -1972,7 +1987,7 @@
<string name="trackpad_mouse_settings" msgid="136226693583218429">"Panel táctil y mouse"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"Velocidad del puntero, gestos"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"Presionar para hacer clic"</string>
- <string name="trackpad_tap_dragging_title" msgid="798644199582480712">"Presionar y arrastrar"</string>
+ <string name="trackpad_tap_dragging_title" msgid="798644199582480712">"Tocar y arrastrar"</string>
<string name="trackpad_tap_dragging_summary" msgid="5276968646031591058">"Presiona el panel táctil y desliza para mover objetos"</string>
<string name="trackpad_touchpad_gesture_title" msgid="7568052847609914436">"Gestos del panel táctil"</string>
<string name="trackpad_touchpad_gesture_summary" msgid="6256074591395359124">"Personaliza los gestos de navegación del panel táctil"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Elige una nueva tecla para <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accesibilidad del teclado físico"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas especiales, rechazo de teclas, teclas del mouse"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repetición de teclas"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Tiempo para repetición"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Frecuencia de repetición"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Mantener presionada una tecla para repetir su carácter hasta que se suelte la tecla"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Diseño <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predeterminadas"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automático: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2226,7 +2237,7 @@
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Entendido"</string>
<string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Personalizar botón"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Más opciones"</string>
- <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Combinación para <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
+ <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Atajo para <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"botón de accesibilidad"</string>
<string name="accessibility_shortcut_edit_summary_software_gesture" msgid="7346399253904683940">"gesto de accesibilidad"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"Deslizar dos dedos hacia arriba"</string>
@@ -2273,7 +2284,7 @@
<string name="accessibility_button_size_title" msgid="5785110470538960881">"Tamaño"</string>
<string name="accessibility_button_fade_title" msgid="8081993897680588829">"Atenuar cuando no se usa"</string>
<string name="accessibility_button_fade_summary" msgid="7865950833524973709">"Se atenúa después de unos segundos para que sea más fácil ver la pantalla"</string>
- <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Transparente cuando no se usa"</string>
+ <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Transparencia cuando no se usa"</string>
<string name="accessibility_button_low_label" msgid="4193015407828927741">"Transparente"</string>
<string name="accessibility_button_high_label" msgid="9138077512008190896">"No transparente"</string>
<string name="accessibility_button_disabled_button_mode_summary" msgid="1978174613270619492">"No disponible mientras se usa el modo de botones de la barra de navegación."</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajustar el uso de energía"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Paquetes incluidos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Las apps se ejecutan con normalidad"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Se recomienda reemplazar la batería"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Se redujo la capacidad de la batería y el rendimiento de carga, y se recomienda reemplazarla."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nivel de batería bajo"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Activa el Ahorro de batería para extender la duración de la batería"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Mejora la duración de la batería"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"¿Deseas desconectar esta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desconectar"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versión"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Borrar VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"¿Reemplazar VPN existente?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"¿Configurar la VPN siempre activa?"</string>
@@ -3085,7 +3097,7 @@
<string name="user_category_title" msgid="4368580529662699083">"Usuarios"</string>
<string name="other_user_category_title" msgid="7089976887307643217">"Otros usuarios"</string>
<string name="remove_guest_on_exit" msgid="8202972371459611066">"Borrar la actividad de invitado"</string>
- <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Borra todas las apps y los datos de invitado cuando salgas del modo de invitado"</string>
+ <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Borrar todas las apps y los datos de invitado cuando se salga del modo de invitado"</string>
<string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"¿Borrar la actividad de invitado?"</string>
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Las apps y los datos de esta sesión de invitado se borrarán ahora, y toda la actividad futura correspondiente se borrará cada vez que salgas del modo de invitado."</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"borrar, invitado, actividad, quitar, datos, visitante, eliminar"</string>
@@ -3394,7 +3406,7 @@
<string name="spatial_summary_on_one" msgid="6239933399496282994">"Sí (<xliff:g id="OUTPUT_DEVICE">%1$s</xliff:g>)"</string>
<string name="spatial_summary_on_two" msgid="4526919818832483883">"Sí (<xliff:g id="OUTPUT_DEVICE_0">%1$s</xliff:g> y <xliff:g id="OUTPUT_DEVICE_1">%2$s</xliff:g>)"</string>
<string name="spatial_audio_footer_title" msgid="8775010547623606088">"También puedes activar el audio espacial para dispositivos Bluetooth."</string>
- <string name="spatial_audio_footer_learn_more_text" msgid="3826811708094366301">"Parámetros de configuración de dispositivos conectados"</string>
+ <string name="spatial_audio_footer_learn_more_text" msgid="3826811708094366301">"Configuración de dispositivos conectados"</string>
<string name="spatial_audio_multi_toggle_title" msgid="6175786400035541273">"Audio espacial"</string>
<string name="spatial_audio_multi_toggle_off" msgid="2086359413991193164">"Desactivado"</string>
<string name="spatial_audio_multi_toggle_on" msgid="4204808183659033003">"Fijo"</string>
@@ -3403,7 +3415,7 @@
<string name="zen_mode_settings_title" msgid="682676757791334259">"No interrumpir"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"Modos"</string>
<string name="zen_modes_list_intro" msgid="1795379595115088972">"Minimiza las distracciones y gestiona tu atención con modos de sueño, trabajo, conducción y otras situaciones."</string>
- <string name="zen_modes_add_mode" msgid="5926457160307593664">"Crea tu propio modo"</string>
+ <string name="zen_modes_add_mode" msgid="5926457160307593664">"Crear tu propio modo"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Solo recibe notificaciones de las personas y apps que más te interesan"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Establecer un programa"</string>
<string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Programar según"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"De 9 a.m. a 5 p.m. los días de semana\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventos de calendario"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} está activo}=2{{mode_1} y {mode_2} están activos}=3{{mode_1}, {mode_2} y {mode_3} están activos}other{{mode_1}, {mode_2} y # modos más están activos}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modo se puede activar automáticamente}other{# modos se pueden activar automáticamente}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{No interrumpir}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2} y {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVADO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Sin establecer"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Inhabilitado"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Cuando recibas muchas notificaciones en un intervalo de tiempo corto, el dispositivo bajará el volumen y minimizará las alertas por un máximo de 2 minutos. Las llamadas, alarmas y conversaciones prioritarias no se verán afectadas. \n\nPuedes ver las notificaciones que recibas durante la reducción de sonido deslizando hacia abajo desde la parte superior de la pantalla."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplicar a perfiles de trabajo"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplicar a apps del perfil de trabajo"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Servicio de ayuda de RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ninguna app instalada solicitó que se la ejecutara como servicio de ayuda de RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"¿Quieres permitir que el servicio de RV acceda a <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3830,7 +3852,7 @@
<string name="zen_mode_calls" msgid="7653245854493631095">"Llamadas"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"llamadas"</string>
<string name="zen_mode_calls_header" msgid="8379225445095856726">"Llamadas que pueden interrumpir"</string>
- <string name="zen_mode_calls_footer" msgid="2008079711083701243">"Para asegurarte de que el dispositivo suene cuando recibes llamadas permitidas, verifica que esté configurado para emitir un sonido."</string>
+ <string name="zen_mode_calls_footer" msgid="2008079711083701243">"Para asegurarte de que el dispositivo suene cuando recibes llamadas permitidas, verifica que esté configurado para emitir sonidos."</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"Se bloquearán las llamadas entrantes durante \"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\". Puedes ajustar la configuración para permitir que tus amigos, familia y otros contactos se comuniquen contigo."</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"Contactos destacados"</string>
<string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{Ninguno}=1{{contact_1}}=2{{contact_1} y {contact_2}}=3{{contact_1}, {contact_2} y {contact_3}}other{{contact_1}, {contact_2} y # más}}"</string>
@@ -3850,7 +3872,7 @@
<string name="zen_mode_from_contacts_settings" msgid="853428575138439415">"Configuración de contactos"</string>
<string name="zen_mode_from_starred_settings" msgid="3389516761063134119">"Configuración de contactos destacados"</string>
<string name="zen_mode_none_calls" msgid="2047166006414016327">"Ninguna"</string>
- <string name="zen_mode_none_messages" msgid="1386626352943268342">"Ninguno"</string>
+ <string name="zen_mode_none_messages" msgid="1386626352943268342">"Nadie"</string>
<string name="zen_mode_alarms" msgid="5989343060100771099">"Alarmas"</string>
<string name="zen_mode_alarms_summary" msgid="3388679177457223967">"De temporizadores, alarmas, sistemas de seguridad y otras apps"</string>
<string name="zen_mode_alarms_list" msgid="334782233067365405">"alarmas"</string>
@@ -3930,7 +3952,7 @@
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Información y configuración en <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Administrador: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"¿Quieres inhabilitar <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"El modo nunca se activará cuando está inhabilitado"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"El modo nunca se activará cuando esté inhabilitado"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Inhabilitar"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"¿Quieres habilitar <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"El modo podría activarse automáticamente dependiendo de la configuración"</string>
@@ -5045,9 +5067,9 @@
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"Permite el acceso a la billetera desde la pantalla de bloqueo"</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"Mostrar escáner de código QR"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Permitir el acceso al escáner de código QR desde la pantalla de bloqueo"</string>
- <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Mostrar controles del dispositivo"</string>
+ <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Mostrar controles de dispositivos"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Desde la pantalla de bloqueo"</string>
- <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Usar controles del dispositivo"</string>
+ <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Usar controles de dispositivos"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Para usar, primero activa \"Mostrar controles del dispositivo\""</string>
<string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"El tamaño del reloj cambia según el contenido de la pantalla de bloqueo"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"Reloj dinámico"</string>
@@ -5172,7 +5194,7 @@
<string name="smart_forwarding_missing_mdn_text" msgid="2907314684242542226">"Falta el número de teléfono."</string>
<string name="smart_forwarding_missing_alert_dialog_text" msgid="7870419247987316112">"Aceptar"</string>
<string name="enable_2g_title" msgid="8184757884636162942">"Permitir 2G"</string>
- <string name="enable_2g_summary" msgid="2794534052372565914">"2G es menos seguro, pero podría mejorar tu conexión en algunas ubicaciones. Para llamadas de emergencia, siempre se permite 2G"</string>
+ <string name="enable_2g_summary" msgid="2794534052372565914">"2G es menos seguro, pero podría mejorar tu conexión en algunas ubicaciones. Para llamadas de emergencia, siempre se permite 2G."</string>
<string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> requiere 2G para brindar servicio"</string>
<string name="require_cellular_encryption_title" msgid="6087085031703089235">"Permitir solo las redes encriptadas"</string>
<string name="require_cellular_encryption_summary" msgid="6090569065420631457">"Esto es más seguro, pero podría limitar tu conexión de red móvil en algunas ubicaciones. Las llamadas de emergencia siempre están permitidas"</string>
@@ -5224,7 +5246,7 @@
<string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar más adelante"</string>
<string name="bluetooth_details_spatial_audio_title" msgid="1368071116994002707">"Audio espacial"</string>
<string name="bluetooth_details_spatial_audio_summary" msgid="5026859623681482668">"El audio de contenido multimedia compatible se hace más envolvente"</string>
- <string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"Seguimiento de cabeza"</string>
+ <string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"Monitoreo de cabeza"</string>
<string name="bluetooth_details_head_tracking_summary" msgid="3942238746595985395">"El audio cambia a medida que mueves la cabeza para sonar más natural"</string>
<string name="bluetooth_details_permissions_sync_title" msgid="7277580382321003521">"Sincronización de permisos desde el teléfono"</string>
<string name="bluetooth_details_permissions_sync_summary" msgid="8125037984381432059">"Otórgale al reloj los mismos permisos de la app de este teléfono"</string>
@@ -5324,7 +5346,7 @@
<string name="dock_multi_instances_not_supported_text" msgid="3513493664467667084">"Esta app solo puede estar abierta en 1 ventana"</string>
<string name="generic_accessibility_service_on" msgid="4466229372357726824">"Función activada"</string>
<string name="generic_accessibility_service_off" msgid="4759859497651675724">"Función desactivada"</string>
- <string name="generic_accessibility_feature_shortcut_off" msgid="4022872394514077907">"Función desactivada"</string>
+ <string name="generic_accessibility_feature_shortcut_off" msgid="4022872394514077907">"Combinación desactivada"</string>
<string name="accessibility_shortcut_state_off" msgid="8158137799007601475">"Desactivada"</string>
<string name="daltonizer_state_on" msgid="131013270022603983">"Activada"</string>
<string name="daltonizer_state_off" msgid="1162285688069856179">"Desactivada"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Escuchar reproducción"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Escanea el código QR de una reproducción de audio para escuchar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"No se puede editar la contraseña mientras se está compartiendo. Para cambiar la contraseña, primero desactiva el uso compartido de audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Tu contraseña debe contener entre 4 y 16 caracteres, y solo puede incluir letras, números y símbolos"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Escáner de código QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"¿Necesitas ayuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Buscar en Configuración"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Solo en dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Los contactos nuevos no se sincronizarán con una cuenta"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"De forma predeterminada, los contactos se guardarán en el dispositivo y se sincronizarán con tu cuenta"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"No hay cuenta predeterminada"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Se produjo un error al establecer la cuenta predeterminada"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"No hay cuenta predeterminada"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Solo en dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Agrega una cuenta para comenzar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Busca con un círculo"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Mantén presionado el botón de inicio o la barra de navegación para hacer búsquedas con el contenido de la pantalla."</string>
</resources>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index 6a2d714..83143e5 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Maletín"</item>
+ <item msgid="184985872234062767">"Edificio clásico"</item>
+ <item msgid="9189550412466785530">"Edificio de apartamentos"</item>
+ <item msgid="2142527562511049422">"Bocadillo"</item>
+ <item msgid="2548100558260478605">"Grupo de personas"</item>
+ <item msgid="2270003903304578284">"Bombilla"</item>
+ <item msgid="4793496619091161864">"Calendario"</item>
+ <item msgid="5673625795644364100">"No molestar"</item>
+ <item msgid="1423820834865831361">"Persona corriendo"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Mancuerna de gimnasio"</item>
+ <item msgid="2730180105015616518">"Natación"</item>
+ <item msgid="2666922823253345958">"Persona haciendo senderismo"</item>
+ <item msgid="8234880356472211396">"Persona lanzando una pelota"</item>
+ <item msgid="4642980625253001443">"Persona dando una patada"</item>
+ <item msgid="4324795269518833500">"Mandos de juegos"</item>
+ <item msgid="7789966425125441125">"Paleta de colores del artista"</item>
+ <item msgid="663512680597461570">"Copo de nieve"</item>
+ <item msgid="7952183800501346803">"Sombrilla"</item>
+ <item msgid="799139025758265891">"Herramientas del taller"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Carrete vintage"</item>
+ <item msgid="5827426100157335512">"Libro"</item>
+ <item msgid="8585828346253128384">"Flor de loto"</item>
+ <item msgid="8788370542815300188">"Mente de una persona"</item>
+ <item msgid="7287354964767553293">"Auriculares"</item>
+ <item msgid="2530059623783800987">"Televisión"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Coche"</item>
+ <item msgid="5010405583912314582">"Cuchillo y tenedor"</item>
+ <item msgid="8939998598599064900">"Carrito de la compra"</item>
+ <item msgid="3379605903308731893">"Niño/a"</item>
+ <item msgid="7808668968550293112">"Pata de animal"</item>
+ <item msgid="1000692647524056504">"Insignia de estrella"</item>
+ <item msgid="8270261073421676502">"Dos personas"</item>
+ <item msgid="5767782819651505460">"Estrella"</item>
+ <item msgid="4368451291862729334">"Corazón"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Media luna"</item>
+ <item msgid="5421089790869483206">"Reloj"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index bb0dfe9..a25807c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Emparejar nuevo dispositivo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Activar automáticamente mañana"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Emparejar derecho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Emparejar izquierdo"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Empareja el otro audífono"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Inhabilitar Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Inhabilita la función Bluetooth LE Audio si el dispositivo es compatible con las capacidades de hardware de LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modo Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Habilitar vista previa de la interfaz de emisión de Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Habilita la vista previa de la interfaz de usuario de LE Audio para compartir, que incluye las funciones de compartir audio personal y emisión privada"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Mostrar botón LE Audio en Detalles del dispositivo"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ignorar lista de permitidos de Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Usa LE Audio de forma predeterminada aunque no se haya verificado que el periférico LE Audio cumpla los criterios de la lista de permitidos"</string>
@@ -211,7 +215,7 @@
<string name="desc_regional_pref_footer_learn_more" msgid="4401708653329230081">"Más información sobre las preferencias de idioma"</string>
<string name="category_title_terms_of_address" msgid="4309422700380895278">"Preferencias adicionales"</string>
<string name="terms_of_address_title" msgid="7338630812197476808">"Elegir formas de dirigirse a ti"</string>
- <string name="terms_of_address_summary" msgid="7802443422612600620">"Tu dispositivo puede personalizar la forma de dirigirse a ti"</string>
+ <string name="terms_of_address_summary" msgid="7802443422612600620">"Tu dispositivo puede personalizar la forma de dirigirse a ti."</string>
<string name="terms_of_address_intro_title" msgid="1533951542181569335">"Este ajuste permite personalizar la forma en la que la mayoría de las aplicaciones del sistema se dirigen a ti, pero no sirve para las aplicaciones que instales."</string>
<string name="terms_of_address_not_specified" msgid="4439257779351251973">"Sin especificar"</string>
<string name="terms_of_address_feminine" msgid="1743479869695539283">"Femenino"</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Se establece automáticamente mediante tu red y señales inalámbricas"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Zona horaria automática"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Se establece automáticamente según las redes móviles cercanas"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Se establece automáticamente usando la ubicación de tu dispositivo, si está disponible"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usar configuración regional predeterminada"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Usar formato de 24 horas"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Hora"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Levanta el dedo y vuelve a tocar el sensor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"No se puede usar el sensor de huellas digitales"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visita un proveedor de reparaciones."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueo con huella digital con la pantalla apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Usa Desbloqueo con huella digital incluso con la pantalla apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Pantalla apagada, desbloqueo"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Más ajustes de seguridad"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueo del perfil de trabajo, cifrado y más"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Cifrado, credenciales y más"</string>
@@ -564,7 +570,7 @@
<string name="private_space_title" msgid="1752064212078238723">"Espacio privado"</string>
<string name="private_space_summary" msgid="2274405892301976238">"Bloquea y oculta tus aplicaciones privadas"</string>
<string name="private_space_description" msgid="4059594203775816136">"Mantén las aplicaciones privadas en un espacio separado que puedas ocultar o bloquear"</string>
- <string name="private_space_lock_title" msgid="7230836881433350526">"Bloqueo de espacio privado"</string>
+ <string name="private_space_lock_title" msgid="7230836881433350526">"Bloquear espacio privado"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Puedes desbloquear el espacio privado de la misma forma que desbloqueas tu dispositivo, o bien con un bloqueo diferente"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"Usar el bloqueo de pantalla del dispositivo"</string>
<string name="private_space_biometric_title" msgid="3934339826674553174">"Desbloqueo facial y con huella digital"</string>
@@ -626,7 +632,7 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Oculta o bloquea las aplicaciones privadas en un espacio separado. Usa una cuenta de Google exclusiva para aumentar la seguridad."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Cómo funciona"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crea una cuenta de Google para tu espacio"</b>\n"Si usas una cuenta específica, podrás evitar que los archivos, fotos y correos sincronizados aparezcan fuera de tu espacio"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Define un bloqueo"</b>\n"Bloquea tu espacio para evitar que otras personas lo abran."</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Define un bloqueo"</b>\n"Bloquea tu espacio para evitar que otras personas lo abran"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instala aplicaciones"</b>\n"Instala en tu espacio las aplicaciones que quieras mantener en privado"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Importante"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Las aplicaciones se detienen cuando bloqueas tu espacio"</b>\n"Al bloquear tu espacio, las aplicaciones de tu espacio privado se detienen y no recibirás sus notificaciones"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"El teclado ignora las pulsaciones rápidas repetidas de la misma tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Umbral de tecla de rebote"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Elige el tiempo que tu teclado ignora las pulsaciones repetidas de teclas"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizado"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalizado"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajusta el tiempo que se tarda en activar una pulsación de tecla"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Teclas persistentes"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Para las combinaciones de teclas, pulsa las teclas de una en una en lugar de mantenerlas pulsadas todas a la vez"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Teclas para el ratón"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usar teclas de ratón"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Usa el teclado para controlar el puntero"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Desplazamiento inverso del ratón"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Desplázate hacia arriba para mover la página hacia abajo"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Cambiar los botones izquierdo y derecho"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Usa el botón izquierdo del ratón como el derecho"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Teclas de ratón para <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Usa las teclas <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> para mover el puntero del ratón"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Usa la tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> para hacer clic en el botón principal del ratón"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Usa la tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> para mantener pulsado el botón principal del ratón"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Usa la tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> para soltar el botón principal del ratón"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Usa la tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> para activar o desactivar el modo de desplazamiento. Con esta opción, las teclas <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> permiten desplazar la vista hacia arriba, abajo, izquierda o derecha."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Usa la tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> para pulsar el botón secundario del ratón"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Combinaciones de teclas"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Muestra la lista de combinaciones de teclas"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Perfiles de trabajo y herramientas"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Elige una nueva tecla para <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accesibilidad del teclado físico"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas persistentes, teclas de rebote y teclas para el ratón"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Teclas de repetición"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Tiempo hasta la repetición"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Porcentaje de repetición"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Mantén pulsada una tecla para repetir su carácter hasta que la sueltes"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Diseño <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predeterminado"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automático: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2117,7 +2129,7 @@
<string name="color_contrast_preview" msgid="6791430227535363883">"Vista previa"</string>
<string name="color_contrast_preview_sender_name" msgid="8641943417589238147">"Helen, Adam"</string>
<string name="color_contrast_preview_email_send_date" msgid="2108702726171600080">"Hace 2 días"</string>
- <string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"¿Seguir?"</string>
+ <string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"¿Responder?"</string>
<string name="color_contrast_preview_email_title" msgid="198712116139754823">"Informe del viaje de negocios"</string>
<string name="color_contrast_preview_email_body" msgid="2714343154965937945">"Para recibir más ayuda, ponte en contacto conmigo o con Helen. Este informe"</string>
<string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"Gastos del cliente"</string>
@@ -2212,7 +2224,7 @@
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usar gesto de accesibilidad"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"En la parte inferior de la pantalla, toca el botón de accesibilidad <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> para usar esta función.\n\nPara cambiar de una función a otra, mantén pulsado ese botón."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"Para usar esta función, toca el botón de accesibilidad de la pantalla"</string>
- <string name="accessibility_tutorial_dialog_message_volume" msgid="3785791536286606664">"Para usar esta función, mantén pulsadas las dos teclas de volumen"</string>
+ <string name="accessibility_tutorial_dialog_message_volume" msgid="3785791536286606664">"Para usar esta función, mantén pulsadas las 2 teclas de volumen"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar o detener la ampliación, toca tres veces en cualquier parte de la pantalla."</string>
<string name="accessibility_tutorial_dialog_tripletap_instruction" msgid="7549293553589934">"Para iniciar o detener la ampliación, toca rápidamente la pantalla %1$d veces"</string>
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"Para iniciar o detener la ampliación, toca rápidamente la pantalla dos veces con %1$d dedos"</string>
@@ -2232,19 +2244,19 @@
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"Deslizar hacia arriba con dos dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"Desliza tres dedos hacia arriba"</string>
<string name="accessibility_shortcut_edit_dialog_title_software" msgid="6505512764022389951">"Botón de accesibilidad"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"Toca el botón flotante."</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"Toca el botón flotante"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"Gesto de accesibilidad"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"En la parte inferior de la pantalla, toca el botón de accesibilidad <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>. Para cambiar de una función a otra, mantén pulsado el botón de accesibilidad."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Desliza hacia arriba desde la parte inferior de la pantalla. Para cambiar de una función a otra, desliza hacia arriba y mantén pulsado.}other{Desliza hacia arriba con # dedos desde la parte inferior de la pantalla. Para cambiar de una función a otra, desliza hacia arriba con # dedos y mantén pulsado.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"Más opciones"</annotation></string>
<string name="footer_learn_more_content_description" msgid="8843798273152131341">"Más información sobre <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"Ajustes rápidos"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{Desliza hacia abajo desde la parte superior de la pantalla}other{Desliza hacia abajo con # dedos desde la parte superior de la pantalla}}"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{Desliza hacia abajo desde la parte superior de la pantalla.}other{Desliza hacia abajo con # dedos desde la parte superior de la pantalla.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{Desliza hacia abajo desde la parte superior de la pantalla. Este acceso directo estará disponible cuando termines de configurar el dispositivo.}other{Desliza hacia abajo con # dedos desde la parte superior de la pantalla. Este acceso directo estará disponible cuando termines de configurar el dispositivo.}}"</string>
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"Ajustes rápidos"</string>
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"Teclas de volumen"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"teclas de volumen"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Mantén pulsadas las dos teclas de volumen."</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Mantén pulsadas las dos teclas de volumen"</string>
<string name="accessibility_shortcut_edit_screen_title_two_finger_double_tap" msgid="8952595692906527694">"Tocar dos veces con %1$d dedos"</string>
<string name="accessibility_shortcut_edit_screen_summary_two_finger_double_tap" msgid="385404127425496362">"Toca rápidamente la pantalla dos veces con %1$d dedos."</string>
<string name="accessibility_shortcut_edit_screen_title_triple_tap" msgid="3314488747597058942">"Tocar tres veces"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Cómo reducir el uso de la batería"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Paquetes incluidos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Las aplicaciones funcionan con normalidad"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Sustitución de la batería recomendada"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"La capacidad de la batería y el rendimiento de la carga se han reducido, por lo que se recomienda sustituir la batería."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Queda poca batería"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Activa Ahorro de batería para que la batería dure más"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Aumenta la duración de la batería"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"¿Desconectar esta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desconectar"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versión"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Olvidar VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"¿Reemplazar VPN actual?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"¿Configurar el modo de VPN siempre activada?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"De 9:00 a 17:00 los días laborables\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventos del calendario"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} está activo}=2{{mode_1} y {mode_2} están activos}=3{{mode_1}, {mode_2} y {mode_3} están activos}other{{mode_1}, {mode_2} y # más están activos}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modo se puede activar automáticamente}other{# modos se pueden activar automáticamente}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{No molestar}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVADO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Sin definir"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Inhabilitado"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Cuando recibas muchas notificaciones en poco tiempo, tu dispositivo bajará el volumen y minimizará las alertas durante un máximo de 2 minutos. Las llamadas, alarmas y conversaciones prioritarias no se verán afectadas. \n\nLas notificaciones recibidas durante ese periodo se pueden encontrar arrastrando hacia abajo la parte superior de la pantalla."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplicar a perfiles de trabajo"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Se aplica a las aplicaciones del perfil de trabajo"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Servicios de ayuda de RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ninguna aplicación instalada ha solicitado ejecutarse como servicio de ayuda de RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"¿Permitir que el servicio de RV acceda a <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3800,7 +3823,7 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"Durante eventos de"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"Cualquier calendario"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"Cuando la respuesta sea"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Sí, quizás o sin respuesta"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Sí, Quizás o Sin respuesta"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Sí o Quizás"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"Sí"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"No se ha encontrado esa regla."</string>
@@ -3917,7 +3940,7 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Cambiar a Solo alarmas durante una hora hasta las {time}}other{Cambiar a Solo alarmas durante # horas hasta las {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Cambiar a Solo alarmas hasta las <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Cambiar a interrumpir siempre"</string>
- <string name="zen_mode_rename_title" msgid="8146882272966214558">"Modo de edición"</string>
+ <string name="zen_mode_rename_title" msgid="8146882272966214558">"Edita el modo"</string>
<string name="zen_mode_new_custom_title" msgid="7513785385574267851">"Crea un modo"</string>
<string name="zen_mode_new_custom_default_name" msgid="2778307946775085105">"Modo personalizado"</string>
<string name="zen_mode_edit_name_hint" msgid="4584652062167540536">"Nombre del modo"</string>
@@ -5035,7 +5058,7 @@
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Accede al asistente digital"</string>
<string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"Accede al menú de encendido"</string>
<string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"Para usar esta opción, primero tienes que configurar un bloqueo de pantalla"</string>
- <string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Menú de encendido:\nPulsa el botón de encendido y el botón para subir el volumen a la vez"</string>
+ <string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Menú de encendido:\nPulsa a la vez el botón de encendido y el de subir el volumen"</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"Evita que suene:\nPulsa un botón de volumen para usar el acceso directo"</string>
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"Duración de la pulsación"</string>
<string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Ajusta la sensibilidad eligiendo durante cuánto tiempo hay que mantener pulsado el botón de encendido"</string>
@@ -5172,7 +5195,7 @@
<string name="smart_forwarding_missing_mdn_text" msgid="2907314684242542226">"Falta el número de teléfono."</string>
<string name="smart_forwarding_missing_alert_dialog_text" msgid="7870419247987316112">"Aceptar"</string>
<string name="enable_2g_title" msgid="8184757884636162942">"Permitir 2G"</string>
- <string name="enable_2g_summary" msgid="2794534052372565914">"El 2G es menos seguro, pero puede mejorar tu conexión en algunos lugares. Para hacer llamadas de emergencia, el 2G siempre se permite."</string>
+ <string name="enable_2g_summary" msgid="2794534052372565914">"El 2G es menos seguro, pero puede mejorar tu conexión en algunos lugares. Para hacer llamadas de emergencia, el 2G siempre está permitido."</string>
<string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> necesita una conexión 2G para estar disponible"</string>
<string name="require_cellular_encryption_title" msgid="6087085031703089235">"Permitir solo redes cifradas"</string>
<string name="require_cellular_encryption_summary" msgid="6090569065420631457">"Es una opción más segura, pero puede limitar tu conexión de red móvil en algunas ubicaciones. Las llamadas de emergencia están permitidas siempre."</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Escuchar emisión"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Escanea el código QR de una emisión de audio para escucharlo con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"No se puede modificar la contraseña durante el uso compartido. Para cambiarla, primero desactiva la función compartir audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Tu contraseña debe tener entre 4 y 16 caracteres, y solo puedes usar letras, números y símbolos"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Escáner de códigos QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"¿Necesitas ayuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Buscar ajustes"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Solo en el dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Los contactos nuevos no se sincronizarán con ninguna cuenta"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Los contactos se guardarán en tu dispositivo y se sincronizarán con tu cuenta de forma predeterminada"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ninguna cuenta predeterminada definida"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"No se ha podido definir la cuenta predeterminada"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ninguna cuenta predeterminada definida"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Solo en el dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Añade una cuenta para empezar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Rodea para buscar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Mantén pulsado el botón de inicio o la barra de navegación para buscar usando el contenido de tu pantalla."</string>
</resources>
diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml
index 250e2a2..f33792e 100644
--- a/res/values-et/arrays.xml
+++ b/res/values-et/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Kohver"</item>
+ <item msgid="184985872234062767">"Klassikaline hoone"</item>
+ <item msgid="9189550412466785530">"Korterelamu"</item>
+ <item msgid="2142527562511049422">"Kõnemull"</item>
+ <item msgid="2548100558260478605">"Rühm inimesi"</item>
+ <item msgid="2270003903304578284">"Lambipirn"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Mitte segada"</item>
+ <item msgid="1423820834865831361">"Jooksev inimene"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Jõusaali hantel"</item>
+ <item msgid="2730180105015616518">"Ujumine"</item>
+ <item msgid="2666922823253345958">"Matkav inimene"</item>
+ <item msgid="8234880356472211396">"Palli viskav inimene"</item>
+ <item msgid="4642980625253001443">"Jalahoopi andev inimene"</item>
+ <item msgid="4324795269518833500">"Mängupult"</item>
+ <item msgid="7789966425125441125">"Kunstniku värvipalett"</item>
+ <item msgid="663512680597461570">"Lumehelves"</item>
+ <item msgid="7952183800501346803">"Päikesevari"</item>
+ <item msgid="799139025758265891">"Õpitoa tööriistad"</item>
+ <item msgid="8112685757657659269">"Klaver"</item>
+ <item msgid="3861584909935022342">"Filmilint"</item>
+ <item msgid="5827426100157335512">"Raamat"</item>
+ <item msgid="8585828346253128384">"Lootoseõis"</item>
+ <item msgid="8788370542815300188">"Inimese mõistus"</item>
+ <item msgid="7287354964767553293">"Kõrvaklapid"</item>
+ <item msgid="2530059623783800987">"Teler"</item>
+ <item msgid="5307182323469376758">"Rong"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Kahvel ja nuga"</item>
+ <item msgid="8939998598599064900">"Ostukorv"</item>
+ <item msgid="3379605903308731893">"Laps"</item>
+ <item msgid="7808668968550293112">"Looma käpp"</item>
+ <item msgid="1000692647524056504">"Tähekese märk"</item>
+ <item msgid="8270261073421676502">"Kaks inimest"</item>
+ <item msgid="5767782819651505460">"Täht"</item>
+ <item msgid="4368451291862729334">"Süda"</item>
+ <item msgid="2613199102208419986">"Maja"</item>
+ <item msgid="3022279986430275040">"Poolkuu"</item>
+ <item msgid="5421089790869483206">"Kell"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 4811a79..1306f19 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Uue seadme sidumine"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Lülita homme automaatselt sisse"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Seo parempoolne"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Seo vasakpoolne"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Teise kõrva sidumine"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Keela Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Keelab funktsiooni Bluetooth LE Audio, kui seade toetab LE Audio riistvara võimalusi."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio režiim"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio Broadcast UI eelvaate lubamine"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Lubab LE Audio Sharing UI eelvaate, sh isikliku heli jagamise ja privaatse leviedastuse"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Kuva seadme üksikasjades LE Audio lüliti"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio lubamisloendist möödaminek"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audiot kasutatakse vaikimisi isegi siis, kui LE Audio välisseadme vastavust lubamisloendi kriteeriumitele pole kinnitatud."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Seadistage automaatselt oma võrgu ja juhtmeta ühenduse signaalide abil"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automaatne ajavöönd"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Seadistage automaatselt enda lähedal olevate mobiilivõrkude põhjal"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Seadistage automaatselt oma seadme asukoha põhjal (kui on saadaval)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Kasuta lokaadi vaikeseadet"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-tunnise vormingu kasutamine"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Kellaaeg"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Tõstke sõrme, seejärel puudutage sõrmejäljeandurit uuesti"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Sõrmejäljeandurit ei saa kasutada"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Külastage remonditeenuse pakkujat."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Väljalülitatud ekraani sõrmejäljega avamine"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Sõrmejäljega avamist kasutatakse ka siis, kui ekraanikuva on välja lülitatud"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Väljalülitatud ekraan, avamine"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Rohkem turvaseadeid"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Tööprofiili lukustus, krüpteerimine ja muu"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Krüpteerimine, mandaadid ja muu"</string>
@@ -563,7 +569,7 @@
<string name="work_profile_category_header" msgid="85707750968948517">"Tööprofiil"</string>
<string name="private_space_title" msgid="1752064212078238723">"Privaatne ruum"</string>
<string name="private_space_summary" msgid="2274405892301976238">"Hoidke privaatsed rakendused lukustatud ja peidetuna"</string>
- <string name="private_space_description" msgid="4059594203775816136">"Hoidke privaatseid rakendusi eraldi ruumis, mida saate peita või lukustada"</string>
+ <string name="private_space_description" msgid="4059594203775816136">"Hoidke privaatseid rakendusi eraldi ruumis, mida saate peita või lukustada."</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Privaatse ruumi lukk"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Oma privaatse ruumi saate lukust avada samal viisil, nagu avate lukust oma seadme. Võite ka valida muu luku."</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"Seadme ekraaniluku kasutamine"</string>
@@ -625,11 +631,11 @@
<string name="private_space_setup_title" msgid="2272968244329821450">"Privaatne ruum"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Peitke või lukustage privaatsed rakendused eraldi ruumis. Lisaturvalisuse jaoks kasutage spetsiaalselt Google\'i kontot."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Kuidas see toimib?"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Looge oma ruumi jaoks Google\'i konto"</b>\n"Eraldi Google\'i konto kasutamine aitab vältida sünkroonitud failide, fotode ja meilide kuvamist väljaspool teie ruumi"</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Looge oma ruumi jaoks Google\'i konto"</b>\n"Eraldi Google\'i konto kasutamine aitab vältida sünkroonitud failide, fotode ja meilide kuvamist väljaspool teie ruumi."</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Luku seadistamine"</b>\n"Lukustage oma ruum, et teised ei saaks seda avada."</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installige rakendused"</b>\n"Installige rakendused, mille soovite oma ruumis privaatsena hoida"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installige rakendused"</b>\n"Installige rakendused, mille soovite oma ruumis privaatsena hoida."</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Pidage meeles"</string>
- <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Ruumi lukustamisel peatatakse rakendused"</b>\n"Kui lukustate oma ruumi, peatatakse teie ruumis olevad rakendused ja te ei saa neilt märguandeid"</string>
+ <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Ruumi lukustamisel peatatakse rakendused"</b>\n"Kui lukustate oma ruumi, peatatakse teie ruumis olevad rakendused ja te ei saa neilt märguandeid."</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privaatsed ruumid ei ole sobilikud rakendustele, mis peavad töötama taustal või saatma kriitilisi märguandeid (nt meditsiinirakendused). Seda seetõttu, et märguanded ja taustategevused peatatakse, kui teie ruum on lukus.\n\nTeie privaatses ruumis olevaid rakendusi ei näidata lubade halduris, privaatsuse juhtpaneelis ja muudes seadetes, kui privaatne ruum on lukus.\n\nPrivaatset ruumi ei saa teisaldada uude seadmesse. Kui soovite seda mõnes teises seadmes kasutada, peate seadistama teise privaatse ruumi.\n\nKõik, kes ühendavad teie seadme arvutiga või installivad teie seadmesse kahjulikke rakendusi, võivad pääseda juurde teie privaatsele ruumile."</string>
<string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privaatsed ruumid ei ole sobilikud rakendustele, mis peavad töötama taustal või saatma kriitilisi märguandeid (nt meditsiinirakendused). Seda seetõttu, et märguanded ja taustategevused peatatakse, kui teie ruum on lukus.\n\nTeie privaatses ruumis olevaid rakendusi ei näidata lubade halduris, privaatsuse juhtpaneelis ja muudes seadetes, kui privaatne ruum on lukus.\n\nPrivaatset ruumi ei saa uues seadmes taastada. Kui soovite seda teises seadmes kasutada, peate seadistama teise ruumi.\n\nKõik, kes ühendavad teie seadme arvutiga või installivad teie seadmesse pahatahtlikke rakendusi, võivad pääseda juurde teie privaatsele ruumile."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Lisateave privaatsete ruumide kohta"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klaviatuur eirab kiiresti tehtud sama klahvi korduvaid vajutusi"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Põrkeklahvi lävi"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Valige kestus, kui kaua teie klaviatuur korduvaid klahvivajutusi eirab"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Kohandatud"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"kohandatud väärtus"</string>
<string name="slow_keys" msgid="2891452895499690837">"Aeglased klahvid"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Määrab klahvivajutuse aktiveerumiseks kuluva aja"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Nakkeklahvid"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Otseteede puhul klahvide korraga allhoidmise asemel vajutage klahve ükshaaval"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Hiireklahvid"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Hiire klahvide kasutamine"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Kasutage kursori juhtimiseks klaviatuuri"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Hiirega tagurpidi kerimine"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Lehe allapoole liigutamiseks kerige üles"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Vasaku ja parema nupu vahetamine"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Kasutage hiire vasakut nuppu parema nupuna"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Hiire klahvid klaviatuuri <xliff:g id="KEYBOARD_NAME">%s</xliff:g> jaoks"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Kasutage klahvi <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> hiire kursori liigutamiseks"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Kasutage klahvi <xliff:g id="CLICK_LABEL">%s</xliff:g> hiire põhinupul klõpsamiseks"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Kasutage klahvi <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> hiire põhinupu pikalt vajutamiseks"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Kasutage klahvi <xliff:g id="RELEASE_LABEL">%s</xliff:g> hiire põhinupu vabastamiseks"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Kasutage klahvi <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> kerimisrežiimi lülitamiseks Selles režiimis saate vaadet klahviga <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> üles, alla, vasakule või paremale kerida"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Kasutage klahvi <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> hiire teisesel nupul klõpsamiseks"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Klaviatuuri otseteed"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Kuva otseteede loend"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tööprofiili klaviatuurid ja tööriistad"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Valige muuteklahvi <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> jaoks uus klahv:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Füüsilise klaviatuuri juurdepääsetavus"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Nakkeklahvid, põrkeklahvid, hiireklahvid"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Korduvad klahvid"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Viivitus enne kordamist"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Kordusmäär"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hoidke klahvi all, et selle tähemärki kuni klahvi vabastamiseni korrata"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Paigutus: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Vaikeseade"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automaatne: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2211,7 +2223,7 @@
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"Juurdepääsetavuse liigutuse otsetee"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Juurdepääsuliigutuse kasutamine"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Selle funktsiooni kasutamiseks puudutage ekraani allservas juurdepääsetavuse nuppu <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nFunktsioonide vahetamiseks puudutage ja hoidke juurdepääsetavuse nuppu."</string>
- <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"Selle funktsiooni kasutamiseks puudutage ekraanil juurdepääsetavuse nuppu"</string>
+ <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"Selle funktsiooni kasutamiseks puudutage ekraanil juurdepääsetavuse nuppu."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="3785791536286606664">"Selle funktsiooni kasutamiseks vajutage pikalt mõlemat helitugevuse klahvi"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Suurenduse käivitamiseks ja peatamiseks puudutage ekraani kolm korda."</string>
<string name="accessibility_tutorial_dialog_tripletap_instruction" msgid="7549293553589934">"Suurenduse käivitamiseks ja peatamiseks puudutage ekraani kiiresti %1$d korda"</string>
@@ -2224,7 +2236,7 @@
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Juurdepääsufunktsiooni kasutamiseks pühkige ekraanikuva allosast kahe sõrmega üles.\n\nFunktsioonide vahel vahetamiseks pühkige kahe sõrmega üles ja hoidke sõrmi ekraanil."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Juurdepääsufunktsiooni kasutamiseks pühkige ekraanikuva allosast kolme sõrmega üles.\n\nFunktsioonide vahel vahetamiseks pühkige kolme sõrmega üles ja hoidke sõrmi ekraanil."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Selge"</string>
- <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Kohandamisnupp"</string>
+ <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Nupu kohandamine"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Rohkem valikuid"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"Funktsiooni <xliff:g id="SERVICE">%1$s</xliff:g> otsetee"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"juurdepääsetavuse nupp"</string>
@@ -2232,19 +2244,19 @@
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"Pühkige kahe sõrmega üles"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"Pühkige kolme sõrmega üles"</string>
<string name="accessibility_shortcut_edit_dialog_title_software" msgid="6505512764022389951">"Juurdepääsetavuse nupp"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"Puudutage hõljuvat nuppu"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"Puudutage hõljuvat nuppu."</string>
<string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"Juurdepääsetavuse liigutus"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"Puudutage ekraani allservas juurdepääsetavuse nuppu <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>. Funktsioonide vahetamiseks puudutage ja hoidke juurdepääsetavuse nuppu."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Tõmmake sõrmega ekraani allservast üles. Funktsioonide vahetamiseks tõmmake sõrmega üles ja hoidke sõrme ekraanil.}other{Tõmmake # sõrmega ekraani allservast üles. Funktsioonide vahetamiseks tõmmake # sõrmega üles ja hoidke sõrmi ekraanil.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"Rohkem valikuid"</annotation></string>
<string name="footer_learn_more_content_description" msgid="8843798273152131341">"Lisateave: <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"Kiirseaded"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{Tõmmake sõrmega ekraani ülaservast alla}other{Tõmmake # sõrmega ekraani ülaservast alla}}"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{Tõmmake sõrmega ekraani ülaservast alla.}other{Tõmmake # sõrmega ekraani ülaservast alla.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{Tõmmake sõrmega ekraani ülaservast alla. See otsetee on saadaval pärast seadme seadistuse lõpetamist.}other{Tõmmake # sõrmega ekraani ülaservast alla. See otsetee on saadaval pärast seadme seadistuse lõpetamist.}}"</string>
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"Kiirseaded"</string>
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"Helitugevuse klahvid"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"helitugevuse klahvid"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Hoidke all mõlemat helitugevuse klahvi"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Hoidke all mõlemat helitugevuse klahvi."</string>
<string name="accessibility_shortcut_edit_screen_title_two_finger_double_tap" msgid="8952595692906527694">"%1$d sõrmega topeltpuudutus"</string>
<string name="accessibility_shortcut_edit_screen_summary_two_finger_double_tap" msgid="385404127425496362">"Puudutage ekraani %1$d sõrmega kiiresti kaks korda"</string>
<string name="accessibility_shortcut_edit_screen_title_triple_tap" msgid="3314488747597058942">"Kolmikpuudutus"</string>
@@ -2260,7 +2272,7 @@
<string name="accessibility_shortcut_description" msgid="2184693606202133549">"Lukustuskuval sisselülitamiseks lubage funktsiooni otsetee. Hoidke mõlemat helitugevuse klahvi mõni sekund all."</string>
<string name="accessibility_button_title" msgid="5251235485581552614">"Juurdepääsetavuse nupp"</string>
<string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Juurdepääsetavuse nupp ja liigutus"</string>
- <string name="accessibility_button_intro_text" msgid="80993874471745687">"Pääsege juurdepääsufunktsioonidele kiiresti ligi igalt kuvalt"</string>
+ <string name="accessibility_button_intro_text" msgid="80993874471745687">"Pääsege juurdepääsufunktsioonidele kiiresti ligi igalt kuvalt."</string>
<string name="accessibility_button_about_title" msgid="3581116105084067926">"Juurdepääsetavuse nupu teave"</string>
<string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"Juurdepääsetavuse nupu ja liigutuse teave"</string>
<string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"Lisateave juurdepääsetavuse nupu ja liigutuse kohta"</string>
@@ -2370,7 +2382,7 @@
<string name="captioning_appearance_summary" msgid="4620682807315588019">"<xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g> teksti suurus"</string>
<string name="captioning_more_options_title" msgid="3484496882942539652">"Rohkem valikuid"</string>
<string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"Kohandage subtiitrite suurust ja stiili, et neid oleks lihtsam lugeda"</string>
- <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"Kõik meediarakendused ei toeta neid subtiitrite eelistusi"</string>
+ <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"Kõik meediarakendused ei toeta neid subtiitrite eelistusi."</string>
<string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"Juurdepääsetavuse nupp"</string>
<string name="accessibility_shortcut_type_software_gesture" msgid="5608959693931019059">"Kahe sõrmega alt üles pühkimine"</string>
<string name="accessibility_shortcut_type_hardware" msgid="4834144210432451916">"Helitugevuse klahvide allhoidmine"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Reguleerige energiakasutust"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Kaasnevad paketid"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Rakendused töötavad tavapäraselt"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Soovitatav on akuvahetus"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Aku mahutavus ja laadimisvõimsus on vähenenud ning soovitatav on aku välja vahetada."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Akutase on madal"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Lülitage aku tööea pikendamiseks sisse akusäästja"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Pikendage aku tööiga"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Kas soovite katkestada ühenduse selle VPN-iga?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Katkesta ühendus"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versioon"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versioon <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Unusta VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Kas asendada olemasolev VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Kas määrata alati sisselülitatud VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„9.00–17.00 tööpäevadel”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalendrisündmused"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} on aktiivne}=2{{mode_1} ja {mode_2} on aktiivsed}=3{{mode_1}, {mode_2} ja {mode_3} on aktiivsed}other{{mode_1}, {mode_2} ja veel # režiimi on aktiivsed}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 režiim võib automaatselt sisse lülituda}other{# režiimi võivad automaatselt sisse lülituda}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Mitte segada}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"SEES"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Määramata"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Keelatud"</string>
@@ -3481,7 +3494,7 @@
<string name="zen_mode_restrict_notifications_custom" msgid="5469078057954463796">"Kohandatud"</string>
<string name="zen_mode_restrict_notifications_enable_custom" msgid="4303255634151330401">"Kohandatud seade lubamine"</string>
<string name="zen_mode_restrict_notifications_disable_custom" msgid="5062332754972217218">"Kohandatud seade eemaldamine"</string>
- <string name="zen_mode_restrict_notifications_summary_muted" msgid="2826459087306271381">"Märguanded on kuvatud"</string>
+ <string name="zen_mode_restrict_notifications_summary_muted" msgid="2826459087306271381">"Märguandeid kuvatakse"</string>
<string name="zen_mode_restrict_notifications_summary_custom" msgid="6455811408721183198">"Märguanded on osaliselt peidetud"</string>
<string name="zen_mode_restrict_notifications_summary_hidden" msgid="2157279412167366119">"Märguanded on peidetud"</string>
<string name="zen_mode_what_to_block_title" msgid="5692710098205334164">"Kohandatud piirangud"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kui saate lühikese aja jooksul palju märguandeid, vähendab teie seade helitugevust ja minimeerib hoiatused kuni kaheks minutiks. See ei mõjuta kõnesid, äratusi ega prioriteetseid vestlusi. \n\nSummutamise ajal saadud märguanded leiate, kui ekraani ülaosast alla tõmbate."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Rakenda tööprofiilidele"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Rakendage tööprofiili rakendustele"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR-abilise teenused"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ükski installitud rakendus pole taotlenud VR-abilise teenusena käitamist."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Kas lubada VR-teenuse juurdepääs teenusele <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3851,7 +3874,7 @@
<string name="zen_mode_from_starred_settings" msgid="3389516761063134119">"tärniga tähistatud kontaktide seaded"</string>
<string name="zen_mode_none_calls" msgid="2047166006414016327">"Mitte ükski"</string>
<string name="zen_mode_none_messages" msgid="1386626352943268342">"Mitte ükski"</string>
- <string name="zen_mode_alarms" msgid="5989343060100771099">"Alarmid"</string>
+ <string name="zen_mode_alarms" msgid="5989343060100771099">"Äratused"</string>
<string name="zen_mode_alarms_summary" msgid="3388679177457223967">"Taimeritelt, äratustelt, turvasüsteemidelt ja muudelt rakendustelt"</string>
<string name="zen_mode_alarms_list" msgid="334782233067365405">"äratused"</string>
<string name="zen_mode_alarms_list_first" msgid="2780418316613576610">"Äratused"</string>
@@ -3930,20 +3953,20 @@
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Teave ja seaded rakenduses <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Haldab <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Kas keelata režiim <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"See režiim ei lülitu kunagi sisse, kui see on keelatud"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"See režiim ei lülitu kunagi sisse, kui see on keelatud."</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Keela"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Kas lubada režiim <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"See režiim võib oma seadete alusel automaatselt sisse lülituda"</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"See režiim võib oma seadete alusel automaatselt sisse lülituda."</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Luba"</string>
- <string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Seadistage režiim, mis järgib tavapärast ajakava"</string>
+ <string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Seadistage režiim, mis järgib tavapärast ajakava."</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Määrake kalendrisündmustega sünkroonimise ja kutsetele vastamise režiim"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"Looge rahustav unerutiin. Seadistage alarmid, hämardage ekraan ja blokeerige märguanded."</string>
<string name="zen_mode_blurb_driving" msgid="1316054379000667305">"Sõitke keskendunult ja segamatult, et tagada teel ohutus"</string>
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Blokeerige seadme segavad märguanded, et tagada hea keskendumine"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"Eemaldage kõik segajad, et tagada vaikne keskkond"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"Isikupärastage seadme kasutuskogemust ja seadeid eri kasutajate jaoks"</string>
- <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Vähendage katkestusi, lubades ainult olulistel inimestel ja rakendustel teiega ühendust võtta"</string>
- <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Seadistage režiim, mis järgib tavapärast ajakava"</string>
+ <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Vähendage katkestusi, lubades ainult olulistel inimestel ja rakendustel teiega ühendust võtta."</string>
+ <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Seadistage režiim, mis järgib tavapärast ajakava."</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"Hoidke oma seade päevasündmustega sünkroonis"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"Ärgake üles 100% puhanuna"</string>
<string name="zen_mode_inspiration_driving" msgid="8237825783857483135">"Keskenduge teel olles ennekõike ohutusele"</string>
@@ -5145,7 +5168,7 @@
<string name="dark_theme_main_switch_title" msgid="4045147031947562280">"Kasuta tumedat teemat"</string>
<string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Kasuta Bluetoothi"</string>
<string name="prevent_ringing_main_switch_title" msgid="4726252811262086643">"Helisemise vältimise kasutamine"</string>
- <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"WiFi-kuumkoha kasutamine"</string>
+ <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Kasuta WiFi-kuumkohta"</string>
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Rakenduse kinnitamise kasutamine"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Kasuta arendaja valikuid"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Printimisteenuse kasutamine"</string>
@@ -5155,7 +5178,7 @@
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Juhtmevaba silumise kasutamine"</string>
<string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Graafikadraiveri eelistuste kasutamine"</string>
<string name="night_light_main_switch_title" msgid="3428298022467805219">"Kasuta öövalgust"</string>
- <string name="nfc_main_switch_title" msgid="6295839988954817432">"NFC kasutamine"</string>
+ <string name="nfc_main_switch_title" msgid="6295839988954817432">"Kasuta NFC-d"</string>
<string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"Kasuta kohanduvat eredust"</string>
<string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"WiFi-kõnede kasutamine"</string>
<string name="default_see_all_apps_title" msgid="7481113230662612178">"Kuva kõik rakendused"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Kuula voogu"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kuulamiseks skannige helivoo QR-kood"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Parooli ei saa jagamise ajal muuta. Parooli muutmiseks lülitage esmalt heli jagamine välja."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Teie parool peab sisaldama 4–16 tähemärki ning selles tohib kasutada ainult tähti, numbreid ja sümboleid"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-koodi skanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Kas vajate abi?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Otsige seadetest"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Ainult seade"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Uusi kontakte ei sünkroonita kontoga"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontaktid salvestatakse teie seadmesse ja sünkroonitakse vaikimisi teie kontoga"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ühtegi vaikekontot pole määratud"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Viga vaikekonto seadistamisel"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ühtegi vaikekontot pole määratud"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Ainult seade"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Lisage alustamiseks konto"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Ring otsimiseks"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Puudutage pikalt avakuva nuppu või navigeerimispidet, et otsida ekraanil oleva sisu järgi."</string>
</resources>
diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml
index c55f571..6ff3f1b 100644
--- a/res/values-eu/arrays.xml
+++ b/res/values-eu/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Maletatxoa"</item>
+ <item msgid="184985872234062767">"Eraikin klasikoa"</item>
+ <item msgid="9189550412466785530">"Apartamentu-eraikina"</item>
+ <item msgid="2142527562511049422">"Testu-globoa"</item>
+ <item msgid="2548100558260478605">"Pertsona taldea"</item>
+ <item msgid="2270003903304578284">"Bonbilla"</item>
+ <item msgid="4793496619091161864">"Egutegia"</item>
+ <item msgid="5673625795644364100">"Ez molestatzeko"</item>
+ <item msgid="1423820834865831361">"Pertsona bat korrika"</item>
+ <item msgid="2037298830718732608">"Golfa"</item>
+ <item msgid="2197835014443491074">"Gimnasioko pisua"</item>
+ <item msgid="2730180105015616518">"Igeriketa"</item>
+ <item msgid="2666922823253345958">"Pertsona bat mendian"</item>
+ <item msgid="8234880356472211396">"Pertsona bat pilota bat botatzen"</item>
+ <item msgid="4642980625253001443">"Pertsona bat ostiko egiten"</item>
+ <item msgid="4324795269518833500">"Joko-kontrolagailua"</item>
+ <item msgid="7789966425125441125">"Artisten kolore-paleta"</item>
+ <item msgid="663512680597461570">"Elur-maluta"</item>
+ <item msgid="7952183800501346803">"Eguzkitakoa"</item>
+ <item msgid="799139025758265891">"Lantegiko tresnak"</item>
+ <item msgid="8112685757657659269">"Pianoa"</item>
+ <item msgid="3861584909935022342">"Film-bobina"</item>
+ <item msgid="5827426100157335512">"Liburua"</item>
+ <item msgid="8585828346253128384">"Loto-lorea"</item>
+ <item msgid="8788370542815300188">"Pertsona baten burua"</item>
+ <item msgid="7287354964767553293">"Entzungailuak"</item>
+ <item msgid="2530059623783800987">"Telebista"</item>
+ <item msgid="5307182323469376758">"Trena"</item>
+ <item msgid="4903790544026923026">"Autoa"</item>
+ <item msgid="5010405583912314582">"Sardexka eta labana"</item>
+ <item msgid="8939998598599064900">"Erosketa-saskia"</item>
+ <item msgid="3379605903308731893">"Haurra"</item>
+ <item msgid="7808668968550293112">"Animalia-atzaparra"</item>
+ <item msgid="1000692647524056504">"Izar-bereizgarria"</item>
+ <item msgid="8270261073421676502">"2 pertsona"</item>
+ <item msgid="5767782819651505460">"Izarra"</item>
+ <item msgid="4368451291862729334">"Bihotza"</item>
+ <item msgid="2613199102208419986">"Etxea"</item>
+ <item msgid="3022279986430275040">"Ilargierdia"</item>
+ <item msgid="5421089790869483206">"Erlojua"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index cdba71e..2ecc723 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Parekatu beste gailu batekin"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetootha"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Aktibatu automatikoki bihar"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Parekatu eskuineko audifonoa"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Parekatu ezkerreko audifonoa"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Parekatu beste audifonoa"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desgaitu kontsumo txikiko Bluetooth bidezko audioa"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Kontsumo txikiko Bluetooth bidezko audioa darabilten hardware-gaitasunak gailuarekin bateragarriak badira, Kontsumo txikiko Bluetooth bidezko audioa eginbidea desgaitzen du."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Kontsumo txikiko Bluetooth bidezko audioaren modua"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Gaitu kontsumo txikiko Bluetooth bidezko audioa igortzeko erabiltzaile-interfazearen aurrebista"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Kontsumo txikiko Bluetooth bidezko audioa partekatzeko erabiltzaile-interfazearen aurrebista gaitzen du, audio pertsonala partekatzeko eginbidea eta aldi bereko igorpen pribatuak barne"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Erakutsi kontsumo txikiko audioaren etengailua gailuaren xehetasunetan"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ez aplikatu kontsumo txikiko Bluetooth bidezko audioaren baimendutakoen zerrenda"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Erabili kontsumo txikiko audioa modu lehenetsian, hura darabilen gailu periferikoak baimendutakoen zerrendako irizpideak betetzen dituen egiaztatu ez bada ere."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Ezarri automatikoki sarea eta hari gabeko seinaleak erabilita"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Ordu-zona automatikoa"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Ezarri automatikoki inguruko sare mugikorretan oinarrituta"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Ezarri automatikoki gailuaren kokapena erabilita, halakorik badago"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Erabili lurraldeko ezarpen lehenetsiak"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Erabili 24 orduko formatua"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Ordua"</string>
@@ -415,11 +418,11 @@
<string name="security_settings_fingerprint_single_face_watch_preference_summary" msgid="764951912234638192">"Gehitu dira aurpegia, hatz-marka eta <xliff:g id="WATCH">%s</xliff:g> erlojua"</string>
<string name="security_settings_fingerprint_multiple_face_watch_preference_summary" msgid="3935500711366489380">"Gehitu dira aurpegia, hatz-markak eta <xliff:g id="WATCH">%s</xliff:g> erlojua"</string>
<string name="mandatory_biometrics_prompt_description" msgid="6790144699440050735">"Identitate-egiaztapena aktibatuta dago eta sistema biometriko bat behar du"</string>
- <string name="go_to_settings" msgid="4394928396153474179">"Joan ezarpenetara"</string>
+ <string name="go_to_settings" msgid="4394928396153474179">"Joan Ezarpenak atalera"</string>
<string name="identity_check_lockout_error_title" msgid="7486409651908283892">"Identitate-egiaztapena aktibatuta dago eta ezin du egiaztatu zu zarenik"</string>
<string name="identity_check_lockout_error_description_1" msgid="4882147327291296884">"Sistema biometrikoak gehiegitan huts egin du. Berriro saiatzeko, blokeatu eta desblokeatu gailua berriro."</string>
<string name="identity_check_lockout_error_two_factor_auth_description_1" msgid="8369894114882274736">"Sistema biometrikoak gehiegitan huts egin du. Saiatu berriro."</string>
- <string name="identity_check_lockout_error_description_2" msgid="5512321457771307067">"Identitate-egiaztapena lapurreten aurkako babesaren ezarpenetan kudea dezakezu. Joan ezarpenetara"</string>
+ <string name="identity_check_lockout_error_description_2" msgid="5512321457771307067">"Identitate-egiaztapena lapurreten aurkako babesaren ezarpenetan kudea dezakezu. Joan Ezarpenak atalera"</string>
<string name="identity_check_general_error_title" msgid="5073929400896102674">"Aurrera egiteko, sistema biometriko bat behar da"</string>
<string name="identity_check_general_error_description_1" msgid="5260846996256699095">"Identitate-egiaztapena aktibatuta dago eta sistema biometriko bat behar du, baina aurpegiaren edo hatz-marken sentsorea ez dago erabilgarri.\n"<ul><li>"Egiaztatu kamera aktibatuta dagoela eta saiatu berriro."</li>\n<li>"Identitate-egiaztapena desaktibatzeko, joan Google Kontua atalera."</li></ul></string>
<string name="identity_check_biometric_error_cancel" msgid="3353689146211669291">"Utzi"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Jaso hatza eta sakatu berriro sentsorea"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Ezin da erabili hatz-marken sentsorea"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Joan konponketak egiten dituen hornitzaile baten webgunera edo dendara."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Pantaila itzalita dagoela hatz-marka bidez desblokeatzeko eginbidea"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Erabili hatz-marka bidez desblokeatzeko eginbidea pantaila itzalita badago ere"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Pantaila itzalita dagoela desblokeatzeko eginbidea"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Segurtasun-ezarpen gehiago"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Laneko profilaren blokeoa, enkriptatzea eta abar"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Enkriptatzea, kredentzialak eta abar"</string>
@@ -630,7 +636,7 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalatu aplikazioak"</b>\n"Instalatu zure eremuan eduki nahi dituzun aplikazio pribatuak"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Gogoratu"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikazioak gelditu egiten dira eremua blokeatzen duzunean"</b>\n"Eremua blokeatzen duzunean, bertan dauzkazun aplikazioak gelditu egiten dira, eta haien jakinarazpenak jasotzeari uzten diozu"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Eremu pribatuak ez dira egokiak atzeko planoan exekutatu behar diren edo funtsezko jakinarazpenak bidali behar dituzten aplikazioetarako (adibidez, medikuntza-aplikazioak). Izan ere, jakinarazpenak eta atzeko planoko jarduerak gelditu egiten dira eremua blokeatuta dagoenean.\n\nZure eremu pribatuko aplikazioak ez dira agertuko baimenen kudeatzailean, pribatutasun-panelean eta beste ezarpenetan eremu pribatua blokeatuta dagoenean.\n\nEremu pribatua ezin da eraman beste gailu batera. Eremu pribatua beste gailu batean erabili nahi baduzu, beste bat konfiguratu beharko duzu.\n\nBaliteke zure gailua ordenagailu batekin konektatzen duten edo gailuan aplikazio kaltegarriak instalatzen dituzten guztiek zure eremu pribatua atzitu ahal izatea."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Eremu pribatuak ez dira egokiak atzeko planoan exekutatu behar diren edo jakinarazpen larriak bidali behar dituzten aplikazioetarako (adibidez, medikuntza-aplikazioak). Izan ere, jakinarazpenak eta atzeko planoko jarduerak gelditu egiten dira eremua blokeatuta dagoenean.\n\nZure eremu pribatuko aplikazioak ez dira agertuko baimenen kudeatzailean, pribatutasun-panelean eta beste ezarpenetan eremu pribatua blokeatuta dagoenean.\n\nEremu pribatua ezin da eraman beste gailu batera. Eremu pribatua beste gailu batean erabili nahi baduzu, beste bat konfiguratu beharko duzu.\n\nBaliteke zure gailua ordenagailu batekin konektatzen duten edo gailuan aplikazio kaltegarriak instalatzen dituzten guztiek zure eremu pribatua atzitu ahal izatea."</string>
<string name="private_space_settings_footer_text" msgid="3742468470394835356">"Eremu pribatuak ez dira egokiak atzeko planoan exekutatu behar diren edo funtsezko jakinarazpenak bidali behar dituzten aplikazioetarako (adibidez, medikuntza-aplikazioak). Izan ere, jakinarazpenak eta atzeko planoko jarduerak gelditu egiten dira eremua blokeatuta dagoenean.\n\nZure eremu pribatuko aplikazioak ez dira agertuko baimenen kudeatzailean, pribatutasun-panelean eta beste ezarpenetan eremu pribatua blokeatuta dagoenean.\n\nEremu pribatua ezin da leheneratu beste gailu batean. Eremua beste gailu batean erabili nahi baduzu, beste bat konfiguratu beharko duzu.\n\nBaliteke zure gailua ordenagailu batekin konektatzen duten edo gailuan asmo txarreko aplikazioak instalatzen dituzten guztiek zure eremu pribatua atzitu ahal izatea."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Lortu eremu pribatuari buruzko informazio gehiago"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Une bat beharko da"</string>
@@ -1306,7 +1312,7 @@
<string name="dark_ui_text" msgid="4392646155331126666">"Gai ilunak atzeko plano beltza erabiltzen du bateriak gehiago iraun dezan pantaila batzuetan. Gai ilunaren programazioak ez dira aktibatzen pantaila itzaltzen den arte."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Une honetan, gai iluna lo egiteko garaiaren moduaren programazioarekin bat dator"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Lo egiteko garaiaren moduaren ezarpenak"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Moduek gai iluna ere aktiba dezakete}=1{{mode_1} moduak gai iluna ere aktibatzen du}=2{{mode_1} eta {mode_2} moduek gai iluna ere aktibatzen dute}=3{{mode_1}, {mode_2} eta {mode_3} moduek gai iluna ere aktibatzen dute}other{{mode_1}, {mode_2} eta beste # moduk gai iluna ere aktibatzen dute}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Moduek ere gai iluna aktiba dezakete}=1{{mode_1} moduak ere gai iluna aktibatzen du}=2{{mode_1} eta {mode_2} moduek ere gai iluna aktibatzen dute}=3{{mode_1}, {mode_2} eta {mode_3} moduek ere gai iluna aktibatzen dute}other{{mode_1}, {mode_2} eta beste # moduk ere gai iluna aktibatzen dute}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Moduen ezarpenak"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Are ilunago"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Eman ohi baino gehiago iluntzeko baimena gailuari"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Teklatuak ez ikusi egiten du tekla bera behin eta berriro bizkor sakatzen bada"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Tekla-sakatze errepikatuen atalasea"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Aukeratu zer iraupenarekin egiten duen teklatuak ez ikusi tekla bera behin eta berriro sakatzen bada"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Pertsonalizatua"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"balio pertsonalizatua"</string>
<string name="slow_keys" msgid="2891452895499690837">"Tekla motelak"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Tekla bat sakatzean aktibatzeko behar den denbora doitzen du"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Tekla itsaskorrak"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Lasterbideetan, sakatu teklak banan-banan, guztiak aldi berean sakatu ordez"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Saguaren teklak"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Erabili saguaren teklak"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Erabili teklatua erakuslea kontrolatzeko"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Saguarekin gora eta behera alderantziz egiteko aukera"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Egin gora orria beherantz mugitzeko"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Aldatu ezkerreko eta eskuineko botoiak"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Erabili saguaren ezkerreko botoia eskuinekoa balitz bezala"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> teklatuko saguaren teklak"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Erabili <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> teklak saguaren erakuslea mugitzeko"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Erabili <xliff:g id="CLICK_LABEL">%s</xliff:g> tekla saguaren botoi nagusia sakatzeko"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Erabili <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> tekla saguaren botoi nagusia sakatuta edukitzeko"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Erabili <xliff:g id="RELEASE_LABEL">%s</xliff:g> tekla saguaren botoi nagusia askatzeko"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Erabili <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> tekla gora/behera egiteko modua aldatzeko. Horrela, <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> teklekin gora, behera, ezkerrera edo eskuinera mugituko da ikuspegia."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Erabili <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> tekla saguaren bigarren mailako botoia sakatzeko"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Lasterbideak"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Erakutsi lasterbideen zerrenda"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Laneko profilaren teklatuak eta tresnak"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Aukeratu <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> teklarako beste tekla bat:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Teklatu fisikoaren erabilerraztasuna"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Tekla itsaskorrak, errebote-teklak, saguaren teklak"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Errepikatutako teklak"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Errepikatu aurreko tartea"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Errepikapen-abiadura"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Eduki sakatuta tekla bat, eta askatu arte errepikatuko da haren karakterea"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> teklatuaren diseinua"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Lehenetsia"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatikoa: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Doitu energia-erabilera"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Sartutako paketeak"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikazioak ohiko moduan dabiltza"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Bateria aldatzea gomendatzen da"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Bateriaren ahalmena eta kargatzeko abiadura murriztuta daude, eta bateria ordeztea gomendatzen da."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Bateria-maila baxua"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Aktibatu Bateria-aurreztailea bateriaren iraupena luzatzeko"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Hobetu bateriaren iraupena"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"VPN saretik deskonektatu nahi duzu?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Deskonektatu"</string>
<string name="vpn_version" msgid="6344167191984400976">"Bertsioa"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g> bertsioa"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Ahaztu VPN konexioa"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Dagoen VPN konexioa ordeztu nahi duzu?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"VPNa beti aktibatuta egoteko aukera ezarri nahi duzu?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"09:00-17:00, astegunetan\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Egutegiko gertaerak"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{\"{mode_1}\" aktibo dago}=2{\"{mode_1}\" eta \"{mode_2}\" aktibo daude}=3{\"{mode_1}\", \"{mode_2}\" eta \"{mode_3}\" aktibo daude}other{\"{mode_1}\", \"{mode_2}\" eta beste # aktibo daude}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modu aktiba daiteke automatikoki}other{# modu aktiba daitezke automatikoki}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ez molestatzeko modua}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AKTIBATUTA"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ezarri gabe"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Desgaituta"</string>
@@ -3715,11 +3728,21 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Epe labur batean jakinarazpen ugari jasotzen badituzu, gailuak bolumena jaitsiko du eta alertak murriztuko ditu 2 minutuz (gehienez). Ezarpen horrek ez die eragiten deiei, alarmei eta lehentasunezko elkarrizketei. \n\nArintze-aldi horretan jasotako jakinarazpenak ikusteko, pasatu hatza pantailaren goialdetik behera."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplikatu laneko profiletan"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplikatu laneko profileko aplikazioetan"</string>
- <string name="vr_listeners_title" msgid="4960357292472540964">"Errealitate birtualeko laguntza-zerbitzuak"</string>
- <string name="no_vr_listeners" msgid="8442646085375949755">"Ez dago errealitate birtualeko laguntza-zerbitzu gisa abiaraztea eskatu duen aplikaziorik instalatuta."</string>
- <string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Errealitate birtualeko zerbitzuak erabiltzeko baimena eman nahi diozu <xliff:g id="SERVICE">%1$s</xliff:g> zerbitzuari?"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
+ <string name="vr_listeners_title" msgid="4960357292472540964">"EBko laguntza-zerbitzuak"</string>
+ <string name="no_vr_listeners" msgid="8442646085375949755">"Ez dago EBko laguntza-zerbitzu gisa abiaraztea eskatu duen aplikaziorik instalatuta."</string>
+ <string name="vr_listener_security_warning_title" msgid="7026351795627615177">"EBko zerbitzuak erabiltzeko baimena eman nahi diozu <xliff:g id="SERVICE">%1$s</xliff:g> zerbitzuari?"</string>
<string name="vr_listener_security_warning_summary" msgid="1888843557687017791">"Aplikazioak errealitate birtualean erabiltzen dituzunean abiarazi ahal izango da <xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g>."</string>
- <string name="display_vr_pref_title" msgid="4850474436291113569">"Errealitate birtualeko moduan"</string>
+ <string name="display_vr_pref_title" msgid="4850474436291113569">"EBko moduan"</string>
<string name="display_vr_pref_low_persistence" msgid="7039841277157739871">"Murriztu lausotzea (gomendatua)"</string>
<string name="display_vr_pref_off" msgid="4008841566387432721">"Murriztu distira"</string>
<string name="picture_in_picture_title" msgid="9001594281840542493">"Pantaila txiki gainjarria"</string>
@@ -3801,7 +3824,7 @@
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"Edozein egutegi"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"Erantzuna hau denean"</string>
<string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Bai, Agian edo Erantzun gabe"</string>
- <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"\"Bai\" edo \"Agian\""</string>
+ <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Bai edo Agian"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"Bai"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"Ez da aurkitu araua."</string>
<string name="zen_mode_rule_summary_enabled_combination" msgid="1183604368083885789">"Aktibatuta / <xliff:g id="MODE">%1$s</xliff:g>"</string>
@@ -4126,7 +4149,7 @@
<string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Eman pantailako irudi bat erabiltzeko baimena laguntza-aplikazioari"</string>
<string name="assist_flash_title" msgid="5449512572885550108">"Distirarazi pantaila"</string>
<string name="assist_flash_summary" msgid="3032289860177784594">"Distirarazi pantailaren ertzak laguntza-aplikazioak pantailako edo pantaila-argazkiko testua erabiltzen duenean"</string>
- <string name="assist_footer" msgid="8248015363806299068">"Laguntza-aplikazioek ikusten ari zaren pantailako informazioaren araberako laguntza eskain diezazukete. Zenbait aplikaziok abiarazlea eta ahots bidezko zerbitzuak onartzen dituzte laguntza integratua eskaintzeko."</string>
+ <string name="assist_footer" msgid="8248015363806299068">"Laguntza-aplikazioek ikusten ari zaren pantailako informazioaren araberako laguntza eskain diezazukete. Zenbait aplikaziok exekutatzeko tresna eta ahots bidezko zerbitzuak onartzen dituzte laguntza integratua eskaintzeko."</string>
<string name="average_memory_use" msgid="717313706368825388">"Batez best. memoria-erabilera"</string>
<string name="maximum_memory_use" msgid="2171779724001152933">"Gehieneko memoria-erabilera"</string>
<string name="memory_usage" msgid="5594133403819880617">"Memoriaren erabilera"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Entzun zuzeneko igorpena"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin entzuteko, eskaneatu zuzeneko audio-igorpen baten QR kodea"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Ezin da editatu pasahitza audioa partekatu bitartean. Pasahitza aldatzeko, desaktibatu audioa partekatzeko eginbidea."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Pasahitzak 4-16 karaktere eduki behar ditu, eta hizkiak, zenbakiak eta ikurrak soilik erabil daitezke"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR kodeen eskanerra"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Laguntza behar duzu?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Bilatu ezarpenetan"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Gailua soilik"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Kontaktu berriak ez dira sinkronizatuko kontu batekin"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontaktuak gailuan gordeko dira, eta modu lehenetsian kontuarekin sinkronizatuko"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ez da ezarri kontu lehenetsirik"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Errore bat gertatu da kontu lehenetsia ezartzean"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ez da ezarri kontu lehenetsirik"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Gailua soilik"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Hasteko, gehitu kontu bat"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Inguratu bilatzeko"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Pantailako edukia erabilita bilaketa egiteko, eduki sakatuta orri nagusira joateko botoia edo nabigazioaren kontrol-puntua."</string>
</resources>
diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml
index 598b30d..ac5cd80 100644
--- a/res/values-fa/arrays.xml
+++ b/res/values-fa/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"کیف اداری"</item>
+ <item msgid="184985872234062767">"ساختمان کلاسيک"</item>
+ <item msgid="9189550412466785530">"آپارتمان"</item>
+ <item msgid="2142527562511049422">"حباب گفتگو"</item>
+ <item msgid="2548100558260478605">"گروهی از افراد"</item>
+ <item msgid="2270003903304578284">"لامپ حبابی"</item>
+ <item msgid="4793496619091161864">"تقویم"</item>
+ <item msgid="5673625795644364100">"مزاحم نشوید"</item>
+ <item msgid="1423820834865831361">"فردی درحال دویدن"</item>
+ <item msgid="2037298830718732608">"گلف"</item>
+ <item msgid="2197835014443491074">"دمبل باشگاهی"</item>
+ <item msgid="2730180105015616518">"شنا"</item>
+ <item msgid="2666922823253345958">"فردی درحال پیادهگردی"</item>
+ <item msgid="8234880356472211396">"فردی درحال توپ انداختن"</item>
+ <item msgid="4642980625253001443">"فردی درحال لگد زدن"</item>
+ <item msgid="4324795269518833500">"کنترل بازی"</item>
+ <item msgid="7789966425125441125">"پالت رنگ هنرمند"</item>
+ <item msgid="663512680597461570">"دانه برف"</item>
+ <item msgid="7952183800501346803">"چتر ساحلی"</item>
+ <item msgid="799139025758265891">"ابزارهای کارگاه"</item>
+ <item msgid="8112685757657659269">"پیانو"</item>
+ <item msgid="3861584909935022342">"حلقه فیلم"</item>
+ <item msgid="5827426100157335512">"کتاب"</item>
+ <item msgid="8585828346253128384">"گل نیلوفر آبی"</item>
+ <item msgid="8788370542815300188">"ذهن فرد"</item>
+ <item msgid="7287354964767553293">"هدفون"</item>
+ <item msgid="2530059623783800987">"تلویزیون"</item>
+ <item msgid="5307182323469376758">"قطار"</item>
+ <item msgid="4903790544026923026">"خودرو"</item>
+ <item msgid="5010405583912314582">"کارد و چنگال"</item>
+ <item msgid="8939998598599064900">"سبد خرید"</item>
+ <item msgid="3379605903308731893">"کودک"</item>
+ <item msgid="7808668968550293112">"پنجه حیوان"</item>
+ <item msgid="1000692647524056504">"نشان ستاره"</item>
+ <item msgid="8270261073421676502">"دو شخص"</item>
+ <item msgid="5767782819651505460">"ستاره"</item>
+ <item msgid="4368451291862729334">"قلب"</item>
+ <item msgid="2613199102208419986">"خانه"</item>
+ <item msgid="3022279986430275040">"ماه نیمه"</item>
+ <item msgid="5421089790869483206">"ساعت"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 3c85810..0ce94bf 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"جفت کردن دستگاه جدید"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"بلوتوث"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"فردا بهطور خودکار روشن شود"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"جفت کردن گوش راست"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"جفت کردن گوش چپ"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"جفت کردن گوش دیگر"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"غیرفعال کردن «صدای بلوتوث کممصرف»"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"اگر دستگاه از ویژگیهای سختافزار «صدای کممصرف» پشتیبانی کند، ویژگی «صدای بلوتوث کممصرف» را غیرفعال میکند."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"حالت «صدای بلوتوث کممصرف»"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"فعال کردن پیشنمایش واسط کاربر «همهفرستی صدای بلوتوث کممصرف»"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"پیشنمایش واسط کاربر «اشتراک صدای کممصرف» را فعال میکند، ازجمله اشتراک صدای شخصی و همهفرستی خصوصی"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"نمایش تنظیم «صدای کممصرف» در جزئیات دستگاه"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"کنار گذاشتن فهرست «صدای بلوتوث کممصرف» مجاز"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"استفاده از «صدای کممصرف» بهطور پیشفرض حتی درصورتیکه دستگاه جانبی مجهز به «صدای کممصرف» ازلحاظ مطابقت با معیارهای «فهرست مجازها» تأیید نشده باشد"</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"بهطور خودکار بااستفاده از سیگنالهای شبکه و بیسیم تنظیم میشود"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"منطقه زمانی خودکار"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"بهطور خودکار براساس شبکههای تلفن همراه اطرافتان تنظیم میشود"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"بهطور خودکار با مکان دستگاه (اگر دردسترس باشد) تنظیم میشود"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"استفاده از پیشفرض منطقه زبانی"</string>
<string name="date_time_24hour" msgid="286679379105653406">"استفاده از قالب ۲۴ ساعته"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"زمان"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"انگشت را بلند کنید، سپس دوباره حسگر را لمس کنید"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"امکان استفاده از حسگر اثر انگشت وجود ندارد"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"به ارائهدهنده خدمات تعمیر مراجعه کنید."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"«قفلگشایی با اثر انگشت» در صفحهنمایش خاموش"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"از «قفلگشایی با اثر انگشت» حتی وقتی صفحهنمایش خاموش است استفاده کنید"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"صفحهنمایش خاموش، باز کردن قفل"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"تنظیمات ایمنی بیشتر"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"قفل نمایه کاری، رمزگذاری، و غیره"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"رمزگذاری، اطلاعات اعتباری، و غیره"</string>
@@ -570,7 +576,7 @@
<string name="private_space_biometric_title" msgid="3934339826674553174">"قفلگشایی با اثر انگشت و چهره"</string>
<string name="private_space_fingerprint_title" msgid="5989254643211889931">"قفلگشایی با اثر انگشت"</string>
<string name="private_space_face_title" msgid="3290402865367663079">"قفلگشایی با چهره"</string>
- <string name="private_space_biometric_summary" msgid="4403837276018724581">"برای راهاندازی تکضرب بزنید"</string>
+ <string name="private_space_biometric_summary" msgid="4403837276018724581">"برای راهاندازی، تکضرب بزنید"</string>
<string name="private_space_fingerprint_unlock_title" msgid="3614016453395789051">"قفلگشایی با اثر انگشت برای فضای خصوصی"</string>
<string name="private_space_face_unlock_title" msgid="462248384776453613">"قفلگشایی با چهره برای فضای خصوصی"</string>
<string name="private_space_biometric_unlock_title" msgid="1978145237698659673">"قفلگشایی با اثر انگشت و چهره برای فضای خصوصی"</string>
@@ -626,8 +632,8 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"برنامههای خصوصی را در فضای جداگانهای پنهان یا قفل کنید. برای امنیت بیشتر، از یک «حساب Google» اختصاصی استفاده کنید."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"روش کار"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320">""<b>"ایجاد «حساب Google» برای فضا"</b>\n"اگر از حساب اختصاصی استفاده کنید، این کار کمک میکند فایلها، عکسها، و ایمیلهای همگامسازیشده در خارج از فضای شما نشان داده نشود"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"تنظیم قفل"</b>\n"فضایتان را قفل کنید تا دیگران نتوانند آن را باز نکنند"</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"نصب برنامه"</b>\n"برنامههایی را که میخواهید در فضایتان بهصورت خصوصی حفظ شود نصب کنید"</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"تنظیم قفل"</b>\n"میتوانید فضا را قفل کنید تا دیگران نتوانند آن را باز نکنند"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"نصب برنامه"</b>\n"برنامههایی را که میخواهید در فضا بهصورت خصوصی نگه دارید نصب کنید"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"بهخاطر داشته باشید"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"برنامهها هنگام قفل کردن فضا متوقف میشوند"</b>\n"وقتی فضای خود را قفل میکنید، برنامههای موجود در فضا متوقف میشوند و اعلانی از آنها دریافت نخواهید کرد"</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"فضاهای خصوصی برای برنامههایی که لازم است در پسزمینه اجرا شوند یا اعلانهای مهم ارسال کنند (مانند برنامههای پزشکی) مناسب نیستند. زیرا وقتی فضای شما قفل باشد، اعلانها و فعالیت پسزمینه متوقف میشود.\n\nوقتی فضای خصوصی شما قفل است، برنامههای موجود در فضای خصوصی شما در مدیر اجازهها، داشبورد حریم خصوصی، و تنظیمات دیگر نشان داده نمیشود.\n\nفضای خصوصی را نمیتوان به دستگاه جدید منتقل کرد. اگر میخواهید از آن در دستگاه دیگری استفاده کنید، باید فضای خصوصی دیگری راهاندازی کنید.\n\nهر کسی که دستگاه شما را به رایانه متصل کند یا برنامههای مخرب در دستگاهتان نصب کند ممکن است بتواند به فضای خصوصی شما دسترسی داشته باشد."</string>
@@ -1386,7 +1392,7 @@
<string name="module_version" msgid="1787518340082046658">"بهروزرسانی سیستم Google Play"</string>
<string name="battery_info" msgid="7873528123969546728">"اطلاعات باتری"</string>
<string name="device_info_not_available" msgid="4804474466616712326">"موجود نیست"</string>
- <string name="storage_settings" msgid="7472188817781592677">"حافظه"</string>
+ <string name="storage_settings" msgid="7472188817781592677">"فضای ذخیرهسازی"</string>
<string name="storage_settings_for_app" msgid="229425418984637483">"فضای ذخیرهسازی و حافظه پنهان"</string>
<string name="storage_settings_title" msgid="486118156723194815">"تنظیمات ذخیرهسازی"</string>
<string name="status_eid" msgid="3588471107671992684">"سند شناسایی جاسازیشده (EID)"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"صفحهکلید فشردنهای تکراری و سریع یک کلید را نادیده میگیرد"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"آستانه کلیدهای ضدتکرار"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"مدت زمانی را که صفحهکلید شما فشردنهای تکراری کلید را نادیده میگیرد انتخاب کنید"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"۰٫۲ ثانیه"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"۰٫۴ ثانیه"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"۰٫۶ ثانیه"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"۰٫۲ ثانیه"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"۰٫۴ ثانیه"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"۰٫۶ ثانیه"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"سفارشی"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"مقدار سفارشی"</string>
<string name="slow_keys" msgid="2891452895499690837">"کلیدهای آهسته"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"فاصله زمانی بین فشردن کلید و فعالسازی آن را تنظیم میکند"</string>
<string name="sticky_keys" msgid="7317317044898161747">"کلیدهای چسبان"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"بهجای اینکه چند کلید را بهطور همزمان پایین نگه دارید، هربار یک کلید را برای میانبرها فشار دهید"</string>
<string name="mouse_keys" msgid="6237254627808525540">"کلیدهای موشواره"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"استفاده از کلیدهای موشواره"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"استفاده از صفحهکلید برای کنترل کردن اشارهگر"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"پیمایش معکوس موشواره"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"برای رفتن بهپایین صفحه، بهبالا پیمایش کنید"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"جابهجا کردن دکمههای چپ و راست"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"استفاده از دکمه چپ موشواره بهعنوان کلیک راست"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"کلیدهای موشواره برای <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"از کلیدهای <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> برای حرکت دادن اشارهگر موشواره استفاده کنید"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"از کلید <xliff:g id="CLICK_LABEL">%s</xliff:g> برای کلیک کردن با دکمه اصلی موشواره استفاده کنید"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"از کلید <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> برای فشار دادن و نگه داشتن دکمه اصلی موشواره استفاده کنید"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"از کلید <xliff:g id="RELEASE_LABEL">%s</xliff:g> برای رها کردن دکمه اصلی موشواره استفاده کنید"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"از کلید <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> برای روشن/خاموش کردن حالت پیمایش استفاده کنید. با این کار، کلیدهای <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> نما را به بالا، پایین، چپ، یا راست پیمایش میکنند"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"از کلید <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> برای کلیک کردن با دکمه دوم موشواره استفاده کنید"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"میانبرهای صفحهکلید"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"نمایش فهرست میانبرها"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"نمایه کاری صفحهکلیدها و ابزارها"</string>
@@ -1971,8 +1987,8 @@
<string name="trackpad_settings" msgid="2071131324087677005">"صفحه لمسی"</string>
<string name="trackpad_mouse_settings" msgid="136226693583218429">"صفحه لمسی و موشواره"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"سرعت اشارهگر، اشارهها"</string>
- <string name="trackpad_tap_to_click" msgid="1938230946542070746">"ضربه بهجای کلیک"</string>
- <string name="trackpad_tap_dragging_title" msgid="798644199582480712">"کشیدن با ضربه"</string>
+ <string name="trackpad_tap_to_click" msgid="1938230946542070746">"کلیک با تکضرب"</string>
+ <string name="trackpad_tap_dragging_title" msgid="798644199582480712">"کشیدن با تکضرب"</string>
<string name="trackpad_tap_dragging_summary" msgid="5276968646031591058">"برای جابهجایی عناصر، روی آنها تکضرب بزنید و انگشتتان را روی صفحه لمسی بکشید"</string>
<string name="trackpad_touchpad_gesture_title" msgid="7568052847609914436">"اشارههای صفحه لمسی"</string>
<string name="trackpad_touchpad_gesture_summary" msgid="6256074591395359124">"سفارشی کردن هر یک از اشارههای پیمایش صفحه لمسی"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"کلید جدیدی برای <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> انتخاب کنید:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"دسترسپذیری صفحهکلید فیزیکی"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"کلیدهای چسبان، کلیدهای کمانهای، کلیدهای موشواره"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"تکرار کردن کلیدها"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"تأخیر پیشاز تکرار"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"سرعت تکرار"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"با نگه داشتن کلید، نویسه آن تا زمانیکه آن را رها نکنید تکرار میشود"</string>
<string name="ime_label_title" msgid="8994569521516807168">"چیدمان <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"پیشفرض"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"خودکار: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2217,7 +2229,7 @@
<string name="accessibility_tutorial_dialog_tripletap_instruction" msgid="7549293553589934">"برای راهاندازی یا متوقف کردن درشتنمایی، سریع %1$d بار روی صفحهنمایش تکضرب بزنید"</string>
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"برای راهاندازی یا متوقف کردن درشتنمایی، سریع با %1$d انگشت دوبار روی صفحهنمایش تکضرب بزنید"</string>
<string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{برای استفاده از این ویژگی، از بالای صفحهنمایش تند بهپایین بکشید. سپس، کاشی {featureName} را پیدا کنید.}one{برای استفاده از این ویژگی، با # انگشت از بالای صفحهنمایش تند بهپایین بکشید. سپس، کاشی {featureName} را پیدا کنید.}other{برای استفاده از این ویژگی، با # انگشت از بالای صفحهنمایش تند بهپایین بکشید. سپس، کاشی {featureName} را پیدا کنید.}}"</string>
- <string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"این میانبر پساز تکمیل راهاندازی دستگاه دردسترس خواهد بود."</string>
+ <string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"این میانبر پساز تمام کردن راهاندازی دستگاه دردسترس خواهد بود."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"برای استفاده از این ویژگی، با ۲ انگشت از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۲ انگشت تند بهبالا بکشید و نگه دارید."</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{برای استفاده از این ویژگی، از پایین صفحهنمایش تند بهبالا بکشید}one{برای استفاده از این ویژگی، با # انگشت از پایین صفحهنمایش تند بهبالا بکشید}other{برای استفاده از این ویژگی، با # انگشت از پایین صفحهنمایش تند بهبالا بکشید}}"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"برای استفاده از این ویژگی، با ۳ انگشت از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۳ انگشت تند بهبالا بکشید و نگه دارید."</string>
@@ -2240,7 +2252,7 @@
<string name="footer_learn_more_content_description" msgid="8843798273152131341">"درباره <xliff:g id="SERVICE">%1$s</xliff:g> بیشتر بدانید"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"تنظیمات فوری"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{از بالای صفحهنمایش تند بهپایین بکشید}one{از بالای صفحهنمایش با # انگشت تند بهپایین بکشید}other{از بالای صفحهنمایش با # انگشت تند بهپایین بکشید}}"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{از بالای صفحهنمایش تند بهپایین بکشید. این میانبر پساز تکمیل راهاندازی دستگاه دردسترس خواهد بود.}one{از بالای صفحهنمایش با # انگشت تند بهپایین بکشید. این میانبر پساز تکمیل راهاندازی دستگاه دردسترس خواهد بود.}other{از بالای صفحهنمایش با # انگشت تند بهپایین بکشید. این میانبر پساز تکمیل راهاندازی دستگاه دردسترس خواهد بود.}}"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{از بالای صفحهنمایش تند بهپایین بکشید. این میانبر پساز تمام کردن راهاندازی دستگاه دردسترس خواهد بود.}one{از بالای صفحهنمایش با # انگشت تند بهپایین بکشید. این میانبر پساز تمام کردن راهاندازی دستگاه دردسترس خواهد بود.}other{از بالای صفحهنمایش با # انگشت تند بهپایین بکشید. این میانبر پساز تمام کردن راهاندازی دستگاه دردسترس خواهد بود.}}"</string>
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"تنظیمات فوری"</string>
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"کلیدهای میزان صدا"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"کلیدهای میزان صدا"</string>
@@ -2366,10 +2378,10 @@
<string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"درباره وارونگی رنگ بیشتر بدانید"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"نشان دادن زیرنویس ناشنوایان"</string>
<string name="accessibility_captioning_primary_switch_summary" msgid="2544094070306830218">"فقط برای برنامه پشتیبانیشده"</string>
- <string name="captioning_appearance_title" msgid="3128792092290011408">"اندازه و سبک زیرنویس"</string>
+ <string name="captioning_appearance_title" msgid="3128792092290011408">"اندازه و زیرنویس ناشنوایان"</string>
<string name="captioning_appearance_summary" msgid="4620682807315588019">"اندازه نوشتار <xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g>"</string>
<string name="captioning_more_options_title" msgid="3484496882942539652">"گزینههای دیگر"</string>
- <string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"اندازه و سبک زیرنویس ناشنوایان را سفارشی کنید تا خواندن نوشتار آسانتر شود"</string>
+ <string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"اندازه و زیرنویس ناشنوایان ناشنوایان را سفارشی کنید تا خواندن نوشتار آسانتر شود"</string>
<string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"همه برنامههای رسانه از این اولویتهای زیرنویس ناشنوایان پشتیبانی نمیکنند"</string>
<string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"دکمه دسترسپذیری"</string>
<string name="accessibility_shortcut_type_software_gesture" msgid="5608959693931019059">"با ۲ انگشت تند بهبالا بکشید"</string>
@@ -2444,7 +2456,7 @@
<string name="captioning_standard_options_title" msgid="5360264497750980205">"گزینههای استاندارد"</string>
<string name="captioning_locale" msgid="5533303294290661590">"زبان"</string>
<string name="captioning_text_size" msgid="5764254558945371745">"اندازه زیرنویس ناشنوایان"</string>
- <string name="captioning_preset" msgid="4174276086501638524">"سبک زیرنویس"</string>
+ <string name="captioning_preset" msgid="4174276086501638524">"سبک زیرنویس ناشنوایان"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"گزینههای سفارشی"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"رنگ پسزمینه"</string>
<string name="captioning_background_opacity" msgid="6453738649182382614">"ماتی پسزمینه"</string>
@@ -2455,7 +2467,7 @@
<string name="captioning_edge_color" msgid="6035818279902597518">"رنگ لبه"</string>
<string name="captioning_edge_type" msgid="5281259280060811506">"نوع لبه"</string>
<string name="captioning_typeface" msgid="285325623518361407">"گروه قلم"</string>
- <string name="captioning_preview_text" msgid="4973475065545995704">"زیرنویسها شبیه به این هستند"</string>
+ <string name="captioning_preview_text" msgid="4973475065545995704">"زیرنویس ناشنوایان به این شکل خواهد بود"</string>
<string name="captioning_preview_characters" msgid="7854812443613580460">"Aa"</string>
<string name="locale_default" msgid="8948077172250925164">"پیشفرض"</string>
<string name="color_title" msgid="2511586788643787427">"رنگی"</string>
@@ -2481,7 +2493,7 @@
<string name="accessibility_no_service_selected" msgid="1310596127128379897">"سرویسی انتخاب نشده است"</string>
<string name="accessibility_service_default_description" msgid="7801435825448138526">"شرحی ارائه نشده است."</string>
<string name="settings_button" msgid="2195468788019730377">"تنظیمات"</string>
- <string name="keywords_reduce_bright_colors" msgid="1683190961013139183">"حساسیت به نور، نورهراسی، زمینه تاریک، میگرن، سردرد، حالت خواندن، حالت شب، کاهش روشنایی، درجه سفیدی"</string>
+ <string name="keywords_reduce_bright_colors" msgid="1683190961013139183">"حساسیت به نور، نورهراسی، زمینه تاریک، میگرن، سردرد، حالت خواندن، حالت شب، کاهش روشنایی، نقطه سفید"</string>
<string name="keywords_accessibility" msgid="8593989878379366798">"بینایی، شنوایی، نابینا، ناشنوا، حرکتی، دستورزی، یاریرسان، یاری، کاربری آسان، دسترسی آسان، دست، کمک"</string>
<string name="keywords_magnification" msgid="3908145308269840862">"ذرهبین پنجره، زوم، درشتنمایی، کمبینا، بزرگ کردن، بزرگتر کردن"</string>
<string name="keywords_talkback" msgid="2816435437095102527"></string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"تنظیم استفاده از نیرو"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"شامل بسته ها"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"برنامهها عادی اجرا میشوند"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"تعویض باتری توصیه میشود"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ظرفیت باتری و عملکرد شارژ کاهش یافته است، توصیه میشود باتری را تعویض کنید."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"میزان شارژ باتری کم است"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"برای افزایش عمر باتری، «بهینهسازی باتری» را روشن کنید"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"بهبود عمر باتری"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"اتصال به این VPN.قطع شود؟"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"قطع ارتباط"</string>
<string name="vpn_version" msgid="6344167191984400976">"نسخه"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"نسخه <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"فراموش کردن VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"VPN موجود جایگزین شود؟"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"VPN همیشه روشن تنظیم شود؟"</string>
@@ -3210,7 +3223,7 @@
<string name="sim_status_title_sim_slot" msgid="4932996839194493313">"وضعیت سیمکارت (شیار سیمکارت %1$d)"</string>
<string name="sim_signal_strength" msgid="6351052821700294501">"<xliff:g id="DBM">%1$d</xliff:g> dBm <xliff:g id="ASU">%2$d</xliff:g> asu"</string>
<string name="sim_notification_title" msgid="6839556577405929262">"سیمکارتها تغییر کرد"</string>
- <string name="sim_notification_summary" msgid="5593339846307029991">"برای راهاندازی تکضرب بزنید"</string>
+ <string name="sim_notification_summary" msgid="5593339846307029991">"برای راهاندازی، تکضرب بزنید"</string>
<string name="sim_calls_ask_first_prefs_title" msgid="3077694594349657933">"هر بار پرسیده شود"</string>
<string name="sim_selection_required_pref" msgid="231437651041498359">"انتخاب مورد نیاز است"</string>
<string name="sim_selection_channel_title" msgid="3193666315607572484">"انتخاب سیمکارت"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"«۹ صبح تا ۵ عصر روزهای هفته»"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"رویدادهای تقویم"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} فعال است}=2{{mode_1} و {mode_2} فعال هستند}=3{{mode_1}، {mode_2}، و {mode_3} فعال هستند}one{{mode_1}، {mode_2}، و # حالت دیگر فعال هستند}other{{mode_1}، {mode_2}، و # حالت دیگر فعال هستند}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{۱ حالت میتواند بهطور خودکار روشن شود}one{# حالت میتواند بهطور خودکار روشن شود}other{# حالت میتواند بهطور خودکار روشن شود}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{مزاحم نشوید}=1{{mode_1}}=2{{mode_1}، {mode_2}}one{{mode_1}، {mode_2}، {mode_3}}other{{mode_1}، {mode_2}، {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"روشن"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"تنظیم نشده است"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"غیرفعال شده"</string>
@@ -3422,7 +3435,7 @@
<string name="zen_mode_not_found_text" msgid="692090778655810329">"حالت پیدا نشد"</string>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"محدود کردن وقفهها"</string>
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"وقفهها و حواسپرتیها را مسدود کنید"</string>
- <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"راهاندازی <xliff:g id="MODE">%1$s</xliff:g>"</string>
+ <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"راهاندازی «<xliff:g id="MODE">%1$s</xliff:g>»"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"روشن کردن «مزاحم نشوید»"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"صداهای رسانه و هشدارها میتوانند وقفه ایجاد کنند"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"زمانبندیها"</string>
@@ -3436,8 +3449,8 @@
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"زمانبندی"</string>
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"زمان روشن شدن خودکار"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"زمانبندی کردن رویداد"</string>
- <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"روشن شدن درطول رویدادهای"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"مکان پاسخ به دعوت"</string>
+ <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"روشن شدن درطول رویدادها برای"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"بسته به پاسخ به دعوت"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"برنامه زمانی"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"زمانبندی"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> ساعت، <xliff:g id="MINUTES">%2$d</xliff:g> دقیقه"</string>
@@ -3494,7 +3507,7 @@
<string name="zen_mode_block_effect_status" msgid="5765965061064691918">"نمادهای نوار وضعیت در بالای صفحه پنهان شود"</string>
<string name="zen_mode_block_effect_badge" msgid="332151258515152429">"نقطههای اعلان در نمادهای برنامه پنهان شود"</string>
<string name="zen_mode_block_effect_ambient" msgid="1247740599476031543">"با دریافت اعلان بیدار نشود"</string>
- <string name="zen_mode_block_effect_list" msgid="7549367848660137118">"در کشوی اعلانهای پایینبر مخفی شود"</string>
+ <string name="zen_mode_block_effect_list" msgid="7549367848660137118">"از کشو کرکرهای پنهان شود"</string>
<string name="zen_mode_block_effect_summary_none" msgid="6688519142395714659">"هرگز"</string>
<string name="zen_mode_block_effect_summary_screen_off" msgid="6989818116297061488">"وقتی صفحهنمایش روشن است"</string>
<string name="zen_mode_block_effect_summary_screen_on" msgid="4876016548834916087">"وقتی صفحهنمایش روشن است"</string>
@@ -3528,7 +3541,7 @@
<string name="zen_category_apps" msgid="1167374545618451925">"برنامهها"</string>
<string name="zen_category_exceptions" msgid="1316097981052752811">"هشدارها و دیگر وقفهها"</string>
<string name="zen_category_schedule" msgid="2003707171924226212">"زمانبندیها"</string>
- <string name="zen_category_duration" msgid="7515850842082631460">"مدتزمان «تنظیمات فوری»"</string>
+ <string name="zen_category_duration" msgid="7515850842082631460">"مدت برای «تنظیمات فوری»"</string>
<string name="zen_settings_general" msgid="2704932194620124153">"کلی"</string>
<string name="zen_sound_footer" msgid="4090291351903631977">"وقتی «مزاحم نشوید» روشن باشد، بهغیراز مواردی که در بالا مجاز میکنید، صدا و لرزش صامت میشوند."</string>
<string name="zen_custom_settings_dialog_title" msgid="4613603772432720380">"تنظیمات سفارشی"</string>
@@ -3650,8 +3663,8 @@
<string name="recent_convo_removed" msgid="8686414146325958281">"مکالمه حذف شد"</string>
<string name="clear" msgid="5092178335409471100">"پاک کردن"</string>
<string name="clear_conversation" msgid="5564321180363279096">"پاک کردن <xliff:g id="CONVERSATION_NAME">%1$s</xliff:g>"</string>
- <string name="conversation_onboarding_title" msgid="5194559958353468484">"مکالمههای اولویتدار و اصلاحشده در اینجا نشان داده میشوند"</string>
- <string name="conversation_onboarding_summary" msgid="2484845363368486941">"وقتی مکالمهای را بهعنوان اولویتدار علامتگذاری کنید یا تغییرات دیگری در مکالمهها ایجاد کنید، در اینجا نشان داده میشوند. \n\nبرای تغییر تنظیمات مکالمه: \nاز بالای صفحه به پایین بکشید تا کشوی پایینپر باز شود و سپس مکالمه را لمس کنید و نگه دارید."</string>
+ <string name="conversation_onboarding_title" msgid="5194559958353468484">"مکالمههای اولویتدار و اصلاحشده در اینجا نشان داده خواهند شد"</string>
+ <string name="conversation_onboarding_summary" msgid="2484845363368486941">"وقتی مکالمهای را بهعنوان اولویتدار علامتگذاری کنید یا تغییرات دیگری در مکالمهها ایجاد کنید، در اینجا نشان داده خواهند شد. \n\nبرای تغییر تنظیمات مکالمه: \nاز بالای صفحه به پایین بکشید تا کشو کرکرهای باز شود و سپس مکالمه را لمس کنید و نگه دارید."</string>
<string name="notification_importance_min_title" msgid="7676541266705442501">"کوچک کردن"</string>
<string name="notification_importance_high_title" msgid="394129291760607808">"صفحه بازشو"</string>
<string name="notification_silence_title" msgid="4085829874452944989">"بیصدا"</string>
@@ -3661,7 +3674,7 @@
<string name="notification_priority_title" msgid="5554834239080425229">"اولویت"</string>
<string name="notification_channel_summary_priority" msgid="7225362351439076913">"در بالای بخش مکالمه بهصورت حبابک شناور نشان داده میشود و عکس نمایه را در صفحه قفل نمایش میدهد"</string>
<string name="convo_not_supported_summary" msgid="4285471045268268048">"<xliff:g id="APP_NAME">%1$s</xliff:g> از اکثر ویژگیهای مکالمه پشتیبانی نمیکند. نمیتوانید مکالمهای را بهعنوان اولویتدار تنظیم کنید و مکالمهها بهصورت حبابک شناور نشان داده نمیشوند."</string>
- <string name="notification_channel_summary_min" msgid="8823399508450176842">"در اعلانهای پایینپر تیره و کوچک در یک سطر"</string>
+ <string name="notification_channel_summary_min" msgid="8823399508450176842">"در کشو کرکرهای، اعلانها در یک سطر نشان داده شوند"</string>
<string name="notification_channel_summary_low" msgid="5549662596677692000">"بدون صدا یا لرزش"</string>
<string name="notification_conversation_summary_low" msgid="6352818857388412326">"بدون صدا و لرزش در پایین بخش مکالمه نشان داده میشود"</string>
<string name="notification_channel_summary_default" msgid="1168420867670390611">"بسته به تنظیمات دستگاه ممکن است زنگ بزند یا بلرزد"</string>
@@ -3682,12 +3695,12 @@
<string name="notification_assistant_security_warning_summary" msgid="4846559755787348129">"در Android نسخه ۱۲، اعلانهای بهبودیافته جایگزین «اعلانهای تطبیقی» شده است. این ویژگی پاسخها و کنشهای پیشنهادی را نمایش میدهد و اعلانهایتان را سازماندهی میکند. \n\nاعلانهای بهبودیافته میتواند به محتوای اعلان، ازجمله اطلاعات شخصی مثل نامها و پیامهای مخاطبین دسترسی داشته باشد. این ویژگی همچنین میتواند اعلانها را رد کند یا به آنها پاسخ دهد؛ مثلاً پاسخ به تماسهای تلفنی و کنترل کردن «مزاحم نشوید»."</string>
<string name="notification_listener_security_warning_title" msgid="5791700876622858363">"به دسترسی به اعلان برای <xliff:g id="SERVICE">%1$s</xliff:g> اجازه میدهید؟"</string>
<string name="notification_listener_security_warning_summary" msgid="1131986567509818121">"برنامه <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> میتواند همه اعلانها را بخواند؛ ازجمله اطلاعات شخصی مثل نام مخاطبین، عکسها، و متن پیامهایی که دریافت میکنید. همچنین این برنامه میتواند اعلانها را بهتعویق بیندازد یا رد کند یا براساس دکمههای موجود در اعلانها اقداماتی انجام دهد (ازجمله پاسخ دادن به تماسهای تلفنی). \n\nهمچنین به این برنامه امکان میدهد «مزاحم نشوید» را روشن یا خاموش کند و تنظیمات مربوطه را تغییر دهد."</string>
- <string name="nls_warning_prompt" msgid="1486887096703743841">"برنامه <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> میتواند:"</string>
+ <string name="nls_warning_prompt" msgid="1486887096703743841">"برنامه <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> میتواند کارهای زیر را انجام دهد:"</string>
<string name="nls_feature_read_title" msgid="7629713268744220437">"خواندن اعلانها"</string>
<string name="nls_feature_read_summary" msgid="1064698238110273593">"میتواند اعلانهای شما را بخواند، ازجمله اطلاعات شخصی مثل مخاطبین، پیامها، و عکسها."</string>
- <string name="nls_feature_reply_title" msgid="7925455553821362039">"پاسخ به پیام"</string>
+ <string name="nls_feature_reply_title" msgid="7925455553821362039">"پاسخ دادن به پیامها"</string>
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"میتواند به پیامها پاسخ دهد و روی دکمههای موجود در اعلانها اقدام کند، ازجمله بهتعویق انداختن یا رد کردن اعلانها و پاسخ به تماس."</string>
- <string name="nls_feature_settings_title" msgid="8208164329853194414">"تغییر تنظیمات"</string>
+ <string name="nls_feature_settings_title" msgid="8208164329853194414">"تغییر دادن تنظیمات"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"میتواند «مزاحم نشوید» را روشن یا خاموش کند و تنظیمات مربوطه را تغییر دهد."</string>
<string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"میتواند «حالتها» را مدیریت و فعال کند و تنظیمات مربوطه را تغییر دهد."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"اگر دسترسی اعلان را برای <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> خاموش کنید، دسترسی «مزاحم نشوید» نیز ممکن است خاموش شود."</string>
@@ -3703,7 +3716,7 @@
<string name="notif_type_silent" msgid="6273951794420331010">"بیصدا"</string>
<string name="notif_type_silent_summary" msgid="7820923063105060844">"اعلانهایی که همیشه بیصدا هستند و نمیلرزند"</string>
<string name="notification_listener_allowed" msgid="5536962633536318551">"مجاز"</string>
- <string name="notification_listener_not_allowed" msgid="3352962779597846538">"مجاز نبودن"</string>
+ <string name="notification_listener_not_allowed" msgid="3352962779597846538">"مجاز نیست"</string>
<string name="notif_listener_excluded_app_title" msgid="6679316209330349730">"مشاهده همه برنامهها"</string>
<string name="notif_listener_excluded_app_summary" msgid="2914567678047195396">"تغییر دادن تنظیمات هر برنامهای که اعلان ارسال میکند"</string>
<string name="notif_listener_excluded_app_screen_title" msgid="8636196723227432994">"برنامههایی که در دستگاه نشان داده میشوند"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"وقتی در مدت کوتاهی اعلانهای زیادی دریافت کنید، دستگاهتان تا ۲ دقیقه میزان صدایش را کاهش میدهد و هشدارها را بهحداقل میرساند. تماسها، زنگهای ساعت، و مکالمههای اولویتدار تحتتأثیر قرار نمیگیرند. \n\nاعلانهای دریافتشده در زمان استراحت را میتوان با پایین کشیدن انگشت از بالای صفحهنمایش پیدا کرد."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"اعمال کردن بر نمایههای کاری"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"برای برنامههای نمایه کاری اعمال میشود"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"خدمات یاور VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"هیچ برنامه نصبشدهای درخواست نکرده بهعنوان خدمات یاور VR اجرا شود."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"به <xliff:g id="SERVICE">%1$s</xliff:g> امکان داده شود به خدمات VR دسترسی یابد؟"</string>
@@ -3929,10 +3952,10 @@
<string name="zen_mode_trigger_title_generic" msgid="1347753445938095789">"تنظیمات برنامه"</string>
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"اطلاعات و تنظیمات <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"تحتمدیریت <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"<xliff:g id="MODE_NAME">%1$s</xliff:g> غیرفعال شود؟"</string>
+ <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"<xliff:g id="MODE_NAME">%1$s</xliff:g> غیرفعال شود؟"</string>
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"این حالت هنگام غیرفعال بودن هرگز روشن نمیشود"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"غیرفعال کردن"</string>
- <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> فعال شود؟"</string>
+ <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> فعال شود؟"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"این حالت ممکن است بسته به تنظیمات آن بهطور خودکار روشن شود"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"فعال کردن"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"حالتی را تنظیم کنید که زمانبندی منظمی را دنبال میکند"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"گوش دادن به جاریسازی"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"برای گوش دادن با <xliff:g id="DEVICE_NAME">%1$s</xliff:g>، رمزینه پاسخسریع جاریسازی صوتی را اسکن کنید"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"نمیتوان گذرواژه را درحین همرسانی ویرایش کرد. برای تغییر دادن گذرواژه، ابتدا «اشتراک صدا» را خاموش کنید."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"گذرواژه باید ۴ تا ۱۶ نویسه داشته باشد و فقط از حرف، عدد، و نماد استفاده کنید"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"کدخوان پاسخسریع"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"به راهنمایی نیاز دارید؟"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"جستجو در «تنظیمات»"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"فقط دستگاه"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"مخاطبین جدید با هیچ حسابی همگامسازی نمیشوند"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"مخاطبین بهطور پیشفرض در دستگاه شما ذخیره میشوند و با حسابتان همگامسازی میشوند"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"حساب پیشفرضی تنظیم نشده است"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"خطا هنگام تنظیم حساب پیشفرض"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"حساب پیشفرضی تنظیم نشده است"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"فقط دستگاه"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"برای شروع، حسابی اضافه کنید"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"حلقه جستجو"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"برای جستجو بااستفاده از محتوای روی صفحه، دکمه «صفحه اصلی» یا دستگیره پیمایش را لمس کنید و نگه دارید."</string>
</resources>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
index 0e9ff9e..d5f6b29 100644
--- a/res/values-fi/arrays.xml
+++ b/res/values-fi/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Salkku"</item>
+ <item msgid="184985872234062767">"Klassinen rakennus"</item>
+ <item msgid="9189550412466785530">"Kerrostalo"</item>
+ <item msgid="2142527562511049422">"Puhekupla"</item>
+ <item msgid="2548100558260478605">"Ryhmä ihmisiä"</item>
+ <item msgid="2270003903304578284">"Hehkulamppu"</item>
+ <item msgid="4793496619091161864">"Kalenteri"</item>
+ <item msgid="5673625795644364100">"Älä häiritse"</item>
+ <item msgid="1423820834865831361">"Juokseva henkilö"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Kuntosalin käsipaino"</item>
+ <item msgid="2730180105015616518">"Uinti"</item>
+ <item msgid="2666922823253345958">"Vaelluksella oleva henkilö"</item>
+ <item msgid="8234880356472211396">"Palloa heittävä henkilö"</item>
+ <item msgid="4642980625253001443">"Potkiva henkilö"</item>
+ <item msgid="4324795269518833500">"Peliohjain"</item>
+ <item msgid="7789966425125441125">"Taiteilijan väripaletti"</item>
+ <item msgid="663512680597461570">"Lumihiutale"</item>
+ <item msgid="7952183800501346803">"Rantavarjo"</item>
+ <item msgid="799139025758265891">"Työkalut"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Vanha kotivideo"</item>
+ <item msgid="5827426100157335512">"Kirja"</item>
+ <item msgid="8585828346253128384">"Lootuskukka"</item>
+ <item msgid="8788370542815300188">"Ihmisen mieli"</item>
+ <item msgid="7287354964767553293">"Kuulokkeet"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Juna"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Haarukka ja veitsi"</item>
+ <item msgid="8939998598599064900">"Ostoskori"</item>
+ <item msgid="3379605903308731893">"Lapsi"</item>
+ <item msgid="7808668968550293112">"Eläimen tassu"</item>
+ <item msgid="1000692647524056504">"Tähtimerkki"</item>
+ <item msgid="8270261073421676502">"Kaksi henkilöä"</item>
+ <item msgid="5767782819651505460">"Tähti"</item>
+ <item msgid="4368451291862729334">"Sydän"</item>
+ <item msgid="2613199102208419986">"House"</item>
+ <item msgid="3022279986430275040">"Puolikuu"</item>
+ <item msgid="5421089790869483206">"Kello"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 39f10e2..c09b2bb 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Muodosta uusi laitepari"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Laita automaattisesti päälle huomenna"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Liitä oikea korva"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Liitä vasen korva"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Liitä toinen korva"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Poista Bluetooth LE audio käytöstä"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Poistaa Bluetooth LE ‑audio-ominaisuuden käytöstä, jos laite tukee LE-audiolaitteistoja"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio ‑tila"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Ota käyttöön Bluetooth LE Audion lähetys-UI:n esikatselu"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Ottaa käyttöön LE Audion jakamis-UI:n esikatselun, joka sisältää henkilökohtaisen audion jakamisen ja yksityisen lähetyksen"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Näytä LE Audio ‑valitsin laitetiedoissa"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ohita Bluetooth LE Audio ‑sallitut"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Käytä oletuksena LE Audiota, vaikka LE Audio ‑lisälaitteen ei olisi vahvistettu täyttävän sallitut-listan kriteerejä."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Määritä automaattisesti verkon ja langattomien signaalien perusteella"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automaattinen aikavyöhyke"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Määritä automaattisesti lähellä olevien mobiiliverkkojen perusteella"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Määritä automaattisesti sijainnin perusteella, jos saatavilla"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Käytä paikallista oletusasetusta"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Käytä 24-tuntista kelloa"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Aika"</string>
@@ -414,7 +417,7 @@
<string name="security_settings_face_watch_preference_summary" msgid="5817376447253802793">"Kasvot ja <xliff:g id="WATCH">%s</xliff:g> lisätty"</string>
<string name="security_settings_fingerprint_single_face_watch_preference_summary" msgid="764951912234638192">"Kasvot, sormenjälki ja <xliff:g id="WATCH">%s</xliff:g> lisätty"</string>
<string name="security_settings_fingerprint_multiple_face_watch_preference_summary" msgid="3935500711366489380">"Kasvot, sormenjäljet ja <xliff:g id="WATCH">%s</xliff:g> lisätty"</string>
- <string name="mandatory_biometrics_prompt_description" msgid="6790144699440050735">"Henkilöllisyyden tunnistaminen on päällä ja edellyttää biometristä tunnistetta"</string>
+ <string name="mandatory_biometrics_prompt_description" msgid="6790144699440050735">"Tunnistautuminen on päällä ja edellyttää biometrisen tunnisteen käyttöä"</string>
<string name="go_to_settings" msgid="4394928396153474179">"Avaa Asetukset"</string>
<string name="identity_check_lockout_error_title" msgid="7486409651908283892">"Henkilöllisyyden tarkistus on päällä, eikä sinua voida tunnistaa"</string>
<string name="identity_check_lockout_error_description_1" msgid="4882147327291296884">"Biometriikka epäonnistui liian monta kertaa. Lukitse ja avaa laite uudelleen."</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Nosta sormesi ja kosketa tunnistinta uudelleen"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Sormenjälkitunnistinta ei voi käyttää"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Ota yhteyttä korjauspalveluun."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Sormenjälkiavaus näytön ollessa sammutettu"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Käytä sormenjälkiavausta, kun näyttö on pois päältä"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Näyttö pois päältä, lukituksen avaaminen"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Lisää tietoturva-asetuksia"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Työprofiilin lukitus, salaus ja muuta"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Salaus, kirjautumistiedot ja muuta"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Näppäimistö ei huomioi nopeasti toistettuja saman näppäimen painalluksia"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Toistuvan painalluksen ohituskynnys"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Valitse, kuinka kauan näppäimistö ohittaa toistuvat painallukset"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Oma"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"oma arvo"</string>
<string name="slow_keys" msgid="2891452895499690837">"Hitaat näppäimet"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Muuta aikaa, joka näppäimellä kuluu aktivoitumiseen painalluksen jälkeen"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Päälle jäävät näppäimet"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Käytä pikanäppäimiä painamalla yhtä näppäintä kerralla monen näppäimen sijaan"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Hiiren painikkeet"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Käytä hiiren näppäimiä"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Ohjaa osoitinta näppäimistöllä"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Hiiren käänteinen vieritys"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Siirry alaspäin sivulla vierittämällä ylöspäin"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Vaihda vasemman ja oikean painikkeen paikkaa"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Käytä hiiren vasenta painiketta oikeana"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Hiiren näppäimet: <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Siirrä hiiren osoitinta <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> -näppäimillä"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Klikkaa hiiren ensisijaista painiketta <xliff:g id="CLICK_LABEL">%s</xliff:g>-näppäimellä"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Pidä hiiren ensisijaista painiketta painettuna <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>-näppäimellä"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Vapauta hiiren ensisijainen painike <xliff:g id="RELEASE_LABEL">%s</xliff:g>-näppäimellä"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Vaihda vieritystilaa <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>-näppäimellä. <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ‑näppäimillä voi vierittää näkymää ylös, alas, vasemmalle tai oikealle"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Klikkaa hiiren toissijaista painiketta <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>-näppäimellä"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Pikanäppäimet"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Näytä pikanäppäimet"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Työprofiilin näppäimistöt ja työkalut"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Valitse uusi näppäin (<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>):"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Fyysisen näppäimistön saavutettavuus"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Päälle jäävät näppäimet, toistuvien painallusten ohitus, hiiren painikkeet"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Toistettavat näppäimet"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Viive ennen toistoa"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Toistonopeus"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pidä näppäintä painettuna, niin sen merkki toistuu, kunnes näppäin vapautetaan"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Asettelu: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Oletus"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automaattinen: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Säädä virrankäyttöä"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Sisältyvät paketit"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Sovellukset toimivat normaalisti"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Akun vaihtamista suositellaan"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Akun kapasiteetti ja latauskyky ovat heikentyneet, ja akun vaihtamista suositellaan."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Akun varaustaso alhainen"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Laita virransäästö päälle akunkeston parantamiseksi"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Paranna akunkestoa"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Katkaistaanko VPN-yhteys?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Katkaise yhteys"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versio"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versio <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Unohda VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Korvataanko nykyinen VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Määritetäänkö aina käytössä oleva VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"klo 9–17 arkipäivisin\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalenteritapahtumat"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} on aktiivinen}=2{{mode_1} ja {mode_2} ovat aktiivisia}=3{{mode_1}, {mode_2} ja {mode_3} ovat aktiivisia}other{{mode_1}, {mode_2} ja # muuta ovat aktiivisia}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 tila voi mennä päälle automaattisesti}other{# tilaa voi mennä päälle automaattisesti}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Älä häiritse}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"PÄÄLLÄ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ei asetettu"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Ei käytössä"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kun saat monia ilmoituksia lyhyen ajan sisällä, laite vähentää äänenvoimakkuutta ja minimoi ilmoitukset enintään kahdeksi minuutiksi. Tämä ei koske soittoja, hälytyksiä ja tärkeitä keskusteluja. \n\nVaimennuksen aikana saadut ilmoitukset näkyvät, kun vedät alas näytön yläreunasta."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Käytä työprofiileissa"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Käytä työprofiilin sovelluksissa"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR-avustinpalvelut"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Asennettuja sovelluksia ei ole pyydetty toimimaan VR-avustinpalveluina."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Sallitaanko VR-palveluiden käyttöoikeus palvelulle <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Kuuntele striimiä"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skannaa QR-koodi, niin <xliff:g id="DEVICE_NAME">%1$s</xliff:g> voi toistaa audiostriimiä"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Salasanaa ei voi muokata jakamisen aikana. Jos haluat vaihtaa salasanaa, laita ensin audionjako pois päältä."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Salasanassa on oltava 4–16 merkkiä, ja siinä voi olla vain kirjaimia, numeroita ja symboleita"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-koodiskanneri"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Tarvitsetko apua?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Hae asetuksista"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Vain laite"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Uusia yhteystietoja ei synkronoida tilille"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Yhteystiedot tallennetaan laitteelle ja synkronoidaan tilillesi oletuksena"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Oletusta ei ole asetettu."</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Oletustilin valinta epäonnistui"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ei oletusta"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Vain laite"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Aloita lisäämällä tili"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Kosketa aloitusnäyttöpainiketta tai siirtymiskahvaa pitkään, jotta voit tehdä haun näytöllä olevasta sisällöstä."</string>
</resources>
diff --git a/res/values-fr-rCA/arrays.xml b/res/values-fr-rCA/arrays.xml
index 6c77e66..2993aa6 100644
--- a/res/values-fr-rCA/arrays.xml
+++ b/res/values-fr-rCA/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Mallette"</item>
+ <item msgid="184985872234062767">"Bâtiment classique"</item>
+ <item msgid="9189550412466785530">"Bâtiment résidentiel"</item>
+ <item msgid="2142527562511049422">"Bulle de texte"</item>
+ <item msgid="2548100558260478605">"Groupe de personnes"</item>
+ <item msgid="2270003903304578284">"Ampoule"</item>
+ <item msgid="4793496619091161864">"Agenda"</item>
+ <item msgid="5673625795644364100">"Ne pas déranger"</item>
+ <item msgid="1423820834865831361">"Personne qui court"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Haltères d\'entraînement"</item>
+ <item msgid="2730180105015616518">"Natation"</item>
+ <item msgid="2666922823253345958">"Personne faisant de la randonnée pédestre"</item>
+ <item msgid="8234880356472211396">"Personne lançant un ballon"</item>
+ <item msgid="4642980625253001443">"Personne donnant un coup de pied"</item>
+ <item msgid="4324795269518833500">"Manette de jeu"</item>
+ <item msgid="7789966425125441125">"Palette de couleurs d\'un artiste"</item>
+ <item msgid="663512680597461570">"Flocon de neige"</item>
+ <item msgid="7952183800501346803">"Parasol"</item>
+ <item msgid="799139025758265891">"Outils d\'atelier"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Pellicule de film"</item>
+ <item msgid="5827426100157335512">"Livre"</item>
+ <item msgid="8585828346253128384">"Fleur de lotus"</item>
+ <item msgid="8788370542815300188">"Esprit d\'une personne"</item>
+ <item msgid="7287354964767553293">"Casque d\'écoute"</item>
+ <item msgid="2530059623783800987">"Téléviseur"</item>
+ <item msgid="5307182323469376758">"Train"</item>
+ <item msgid="4903790544026923026">"Voiture"</item>
+ <item msgid="5010405583912314582">"Fourchette et couteau"</item>
+ <item msgid="8939998598599064900">"Panier de magasinage"</item>
+ <item msgid="3379605903308731893">"Enfant"</item>
+ <item msgid="7808668968550293112">"Patte d\'animal"</item>
+ <item msgid="1000692647524056504">"Badge d\'étoile"</item>
+ <item msgid="8270261073421676502">"Deux personnes"</item>
+ <item msgid="5767782819651505460">"Étoile"</item>
+ <item msgid="4368451291862729334">"Cœur"</item>
+ <item msgid="2613199102208419986">"Maison"</item>
+ <item msgid="3022279986430275040">"Demi-lune"</item>
+ <item msgid="5421089790869483206">"Horloge"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index e396f79..350512d 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Associer un autre appareil"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"L\'activer automatiquement demain"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Si vous désactivez le Bluetooth, il se réactivera le lendemain"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Asso. oreille droite"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Asso. oreille gauche"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Associer l\'autre oreille"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Désactiver le Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Désactive la fonctionnalité Bluetooth LE Audio si l\'appareil prend en charge les capacités matérielles LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Mode Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Activer l\'aperçu de l\'IU de diffusion Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Active l\'aperçu de l\'IU de diffusion Bluetooth LE Audio, y compris le partage audio personnel et la diffusion privée"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Afficher comm. LE Audio dans les détails"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Contourner la liste verte du Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Utiliser LE Audio par défaut même si le périphérique LE Audio n\'a pas été vérifié en fonction des critères de la liste verte."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Configurez automatiquement ce paramètre à l\'aide de votre réseau et de vos signaux sans fil"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuseau horaire automatique"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Configurez ce paramètre automatiquement en fonction des réseaux cellulaires à proximité"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Configurez automatiquement ce paramètre si la localisation de l\'appareil est disponible"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Utiliser les paramètres régionaux par défaut"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Utiliser le format 24 h"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Heure"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Relevez le doigt, puis touchez le capteur à nouveau"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Impossible d\'utiliser le capteur d\'empreintes digitales"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Consultez un fournisseur de services de réparation."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Déverrouillage par empreinte digitale lorsque l\'écran est éteint"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Utiliser le Déverrouillage par empreinte digitale même lorsque l\'écran est éteint"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Écran éteint, déverrouiller"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Plus de paramètres de sécurité"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Verrouillage de profil professionnel, chiffrement et plus"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Chiffrement, authentifiants et plus"</string>
@@ -562,7 +567,7 @@
<string name="privacy_header" msgid="5526002421324257007">"Confidentialité"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Profil professionnel"</string>
<string name="private_space_title" msgid="1752064212078238723">"Espace privé"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"Verrouiller et cacher les applis privées"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"Verrouillez et cachez les applis privées"</string>
<string name="private_space_description" msgid="4059594203775816136">"Conservez les applis privées dans un espace séparé que vous pouvez masquer ou verrouiller"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Verrouillage de l\'espace privé"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Vous pouvez déverrouiller votre Espace privé de la même manière que votre appareil ou choisir un autre type de verrouillage"</string>
@@ -621,7 +626,7 @@
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Définir Verrouillage d\'écran"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Annuler"</string>
<string name="private_space_cancel_label" msgid="379259667396956886">"Annuler"</string>
- <string name="private_space_setup_button_label" msgid="2094882154623560585">"Configuration"</string>
+ <string name="private_space_setup_button_label" msgid="2094882154623560585">"Configurer"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"Espace privé"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Masquez ou verrouillez les applis privées dans un espace à part. Utilisez un compte Google dédié pour plus de sécurité."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Fonctionnement"</string>
@@ -630,8 +635,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installer les applis"</b>\n"Installez les applis que vous voulez garder privées dans votre espace"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Garder à l\'esprit"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Les applis s\'arrêtent lorsque vous verrouillez votre espace"</b>\n"Lorsque vous verrouillez votre espace, les applis qui s\'y trouvent sont arrêtées, et vous ne recevez aucune notification de leur part"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Les espaces privés ne conviennent pas aux applis qui doivent être exécutées en arrière-plan ou qui doivent envoyer des notifications critiques, comme les applis médicales. En effet, les notifications et les activités en arrière-plan sont interrompues lorsque votre espace est verrouillé.\n\nLes applis contenues dans votre espace privé n\'apparaîtront pas dans le gestionnaire des autorisations, sur le tableau de bord de confidentialité ni dans les autres paramètres quand l\'espace privé est verrouillé.\n\nVotre espace privé ne peut être déplacé vers un autre appareil. Vous devrez créer un autre espace privé si vous souhaitez l\'utiliser sur un autre appareil.\n\nToute personne qui connecte votre appareil à un ordinateur ou installe des applis nuisibles sur votre appareil peut être en mesure d\'accéder à votre espace privé."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Les espaces privés ne conviennent pas aux applis qui doivent être exécutées en arrière-plan ou qui doivent envoyer des notifications critiques, comme les applis médicales. En effet, les notifications et les activités en arrière-plan sont interrompues lorsque votre espace est verrouillé.\n\nLes applis contenues dans votre espace privé n\'apparaîtront pas dans le gestionnaire des autorisations, sur le tableau de bord de confidentialité ni dans les autres paramètres quand l\'espace privé est verrouillé.\n\nVotre espace privé ne peut être restauré sur un autre appareil. Vous devrez créer un autre espace si vous souhaitez l\'utiliser sur un autre appareil.\n\nToute personne qui connecte votre appareil à un ordinateur ou installe des applis malveillantes sur votre appareil peut être en mesure d\'accéder à votre espace privé."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Les espaces privés ne conviennent pas aux applis qui doivent être exécutées en arrière-plan ou qui doivent envoyer des notifications critiques, comme les applis médicales. En effet, les notifications et les activités en arrière-plan sont interrompues lorsque votre espace est verrouillé.\n\nLes applis contenues dans votre espace privé n\'apparaîtront pas dans le gestionnaire des autorisations, sur le tableau de bord de confidentialité ni dans les autres paramètres quand l\'espace privé est verrouillé.\n\nVotre espace privé ne peut pas être déplacé vers un autre appareil. Vous devrez créer un autre espace privé si vous souhaitez l\'utiliser sur un autre appareil.\n\nToute personne qui connecte votre appareil à un ordinateur ou qui installe des applis nuisibles sur votre appareil peut être en mesure d\'accéder à votre espace privé."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Les espaces privés ne conviennent pas aux applis qui doivent être exécutées en arrière-plan ou qui doivent envoyer des notifications critiques, comme les applis médicales. En effet, les notifications et les activités en arrière-plan sont interrompues lorsque votre espace est verrouillé.\n\nLes applis contenues dans votre espace privé n\'apparaîtront pas dans le gestionnaire des autorisations, sur le tableau de bord de confidentialité ni dans les autres paramètres quand l\'espace privé est verrouillé.\n\nVotre espace privé ne peut pas être restauré sur un autre appareil. Vous devrez créer un autre espace si vous souhaitez l\'utiliser sur un autre appareil.\n\nToute personne qui connecte votre appareil à un ordinateur ou qui installe des applis malveillantes sur votre appareil peut être en mesure d\'accéder à votre espace privé."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"En savoir plus sur l\'espace privé"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"L\'opération prendra quelques instants"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configuration de l\'Espace privé en cours…"</string>
@@ -1303,7 +1308,7 @@
<string name="dark_ui_summary_on_auto_mode_custom" msgid="2526935680241734784">"Se désactivera automatiquement à <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"Se désactivera automatiquement après l\'heure du coucher"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"Se désactivera lorsque <xliff:g id="ID_1">%1$s</xliff:g> se terminera"</string>
- <string name="dark_ui_text" msgid="4392646155331126666">"Le thème sombre utilise un arrière-plan noir pour aider à prolonger l\'autonomie de votre pile sur certains écrans. Les horaires du thème sombre attendent que votre écran soit éteint pour s\'activer."</string>
+ <string name="dark_ui_text" msgid="4392646155331126666">"Le thème sombre utilise un arrière-plan noir pour contribuer à prolonger l\'autonomie de votre pile. Les horaires du thème sombre s\'activent une fois que votre écran est éteint."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"L\'activation du thème sombre suit actuellement votre horaire de mode Nuit"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Paramètres du mode Nuit"</string>
<string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Les modes peuvent également activer le thème sombre}=1{{mode_1} active également le thème sombre}=2{{mode_1} et {mode_2} activent également le thème sombre}=3{{mode_1}, {mode_2} et {mode_3} activent également le thème sombre}one{{mode_1}, {mode_2} et # autre activent également le thème sombre}other{{mode_1}, {mode_2} et # autres activent également le thème sombre}}"</string>
@@ -1336,7 +1341,7 @@
<string name="lift_to_wake_title" msgid="8994218158737714046">"Soulever pour activer"</string>
<string name="ambient_display_screen_title" msgid="8615947016991429325">"Affichage en mode Veille"</string>
<string name="ambient_display_category_triggers" msgid="1216640141609270011">"Activation du mode Veille"</string>
- <string name="doze_title" msgid="1523090408230862316">"Réactiv. écran pour notifications"</string>
+ <string name="doze_title" msgid="1523090408230862316">"Activer écran si notifications"</string>
<string name="doze_summary" msgid="8252867381522942804">"Lorsque l\'écran est sombre, il s\'allume en cas de nouvelles notifications"</string>
<string name="doze_always_on_title" msgid="7326245192352868477">"Toujours affich. heure et données"</string>
<string name="doze_always_on_summary" msgid="509097829739647852">"Utilisation accrue de la pile"</string>
@@ -1950,21 +1955,31 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Le clavier ignore les appuis répétés rapidement sur la même touche"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Seuil de la touche non répétée"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Choisissez la durée pendant laquelle votre clavier ignore les appuis répétés sur une touche"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personnalisée"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valeur personnalisée"</string>
<string name="slow_keys" msgid="2891452895499690837">"Touches lentes"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Règle le temps nécessaire pour qu\'un appui sur une touche soit activé"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Touches rémanentes"</string>
- <string name="sticky_keys_summary" msgid="1844953803625480623">"Appuyer sur une clé à la fois pour activer les raccourcis plutôt que de maintenir plusieurs touches enfoncées en même temps"</string>
+ <string name="sticky_keys_summary" msgid="1844953803625480623">"Appuyez sur une clé à la fois pour activer les raccourcis plutôt que de maintenir plusieurs touches enfoncées en même temps"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Touches de la souris"</string>
- <string name="mouse_keys_summary" msgid="7030731235143286467">"Utiliser votre clavier pour contrôler le pointeur"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Utiliser les touches de la souris"</string>
+ <string name="mouse_keys_summary" msgid="7030731235143286467">"Utilisez votre clavier pour contrôler le pointeur"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Défilement inversé de la souris"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Faites défiler l\'écran vers le haut pour déplacer la page vers le bas"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Inverser les boutons gauche et droit"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Utilisez le bouton gauche de la souris comme bouton droit"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Touches de la souris pour <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Utilisez les touches <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> pour déplacer le pointeur de la souris"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Utilisez la touche <xliff:g id="CLICK_LABEL">%s</xliff:g> pour cliquer sur le bouton principal de la souris"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Utilisez la touche <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> pour maintenir le bouton principal de la souris enfoncé"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Utilisez la touche <xliff:g id="RELEASE_LABEL">%s</xliff:g> pour relâcher le bouton principal de la souris"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Utilisez la touche <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> pour activer le mode de défilement. Les touches <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> feront alors défiler l\'affichage vers le haut, le bas, la gauche ou la droite"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Utilisez la touche <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> pour cliquer sur le bouton secondaire de la souris"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Raccourcis clavier"</string>
- <string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Afficher la liste de raccourcis"</string>
+ <string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Affichez la liste de raccourcis"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Claviers et outils pour le profil professionnel"</string>
<string name="virtual_keyboards_for_work_title" msgid="786459157034008675">"Clavier à l\'écran pour le travail"</string>
<string name="keyboard_default_layout" msgid="5377811770620422301">"Par défaut"</string>
@@ -1978,7 +1993,7 @@
<string name="trackpad_touchpad_gesture_summary" msgid="6256074591395359124">"Personna. les gestes individuels de navigation du pavé tactile"</string>
<string name="trackpad_reverse_scrolling_title" msgid="422877284529360866">"Défilement inversé"</string>
<string name="trackpad_reverse_scrolling_summary" msgid="6048648562887499036">"Le contenu remonte lorsque la page défile vers le bas"</string>
- <string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"Cliquez en bas à droite"</string>
+ <string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"Clic en bas à droite"</string>
<string name="trackpad_bottom_right_tap_summary" msgid="4467915480282133447">"Cliquez dans le coin inférieur droit du pavé tactile pour plus d\'options"</string>
<string name="trackpad_pointer_speed" msgid="7786579408631352625">"Vitesse du pointeur"</string>
<string name="pointer_fill_style" msgid="8794616790175016092">"Couleur du pointeur"</string>
@@ -2020,7 +2035,7 @@
<string name="trackpad_switch_apps_title" msgid="7342032935377284039">"Changer d\'appli"</string>
<string name="trackpad_switch_apps_summary" msgid="9193942041912927440">"Balayez vers la gauche ou vers la droite avec quatre doigts"</string>
<string name="modifier_keys_settings" msgid="2537108435032034683">"Touches de modification"</string>
- <string name="modifier_keys_settings_summary" msgid="6933143361657444436">"Modifier le comportement des touches"</string>
+ <string name="modifier_keys_settings_summary" msgid="6933143361657444436">"Modifiez le comportement des touches"</string>
<string name="modifier_keys_reset_title" msgid="948294258402761066">"Tout réinitialiser"</string>
<string name="modifier_keys_default_summary" msgid="8701640508670973258">"Par défaut"</string>
<string name="modifier_keys_reset_message" msgid="5236994817619936058">"Voulez-vous vraiment réinitialiser toutes les touches de modification à leur valeur par défaut?"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Choisir une nouvelle touche pour <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> :"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accessibilité du clavier physique"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Touches rémanentes, touches non répétées, touches de la souris"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Touches de répétition"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Délai avant la répétition"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Fréquence de répétition"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Maintenez une touche enfoncée pour répéter son caractère jusqu\'à ce que la touche soit relâchée"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Mise en page <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Par défaut"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatique : <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2244,7 +2255,7 @@
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"Paramètres rapides"</string>
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"Touches de volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"touches de volume"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Maintenez enfoncées les deux touches de volume"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Maintenez les deux touches de volume enfoncées"</string>
<string name="accessibility_shortcut_edit_screen_title_two_finger_double_tap" msgid="8952595692906527694">"Toucher deux fois avec %1$d doigts"</string>
<string name="accessibility_shortcut_edit_screen_summary_two_finger_double_tap" msgid="385404127425496362">"Touchez rapidement l\'écran deux fois avec %1$d doigts"</string>
<string name="accessibility_shortcut_edit_screen_title_triple_tap" msgid="3314488747597058942">"Toucher trois fois"</string>
@@ -2336,8 +2347,8 @@
<string name="accessibility_vibration_setting_disabled_for_silent_mode_summary" msgid="3982701772953323190">"Le paramètre est désactivé parce que l\'appareil est en mode silencieux"</string>
<string name="accessibility_call_vibration_category_title" msgid="2545607568768192318">"Appels"</string>
<string name="accessibility_notification_alarm_vibration_category_title" msgid="2683635252414849417">"Notifications et alarmes"</string>
- <string name="accessibility_interactive_haptics_category_title" msgid="3162855291184592021">"Effets tactils interactifs"</string>
- <string name="accessibility_vibration_primary_switch_title" msgid="6162579254864450592">"Utiliser les vibrations et les effets tactils"</string>
+ <string name="accessibility_interactive_haptics_category_title" msgid="3162855291184592021">"Effets tactiles interactifs"</string>
+ <string name="accessibility_vibration_primary_switch_title" msgid="6162579254864450592">"Utiliser les vibrations et les effets tactiles"</string>
<string name="accessibility_alarm_vibration_title" msgid="4661294337828522745">"Vibration pour les alarmes"</string>
<string name="accessibility_media_vibration_title" msgid="1372073715403945428">"Vibration multimédia"</string>
<string name="accessibility_keyboard_vibration_title" msgid="7559967730626765441">"Vibration du clavier"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajuster la consommation"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Modules inclus"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Les applis fonctionnent normalement"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Le remplacement de la pile est recommandé"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"La capacité de la pile et les performances de recharge sont réduites; le remplacement de la pile est recommandé."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Pile faible"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Activez l\'économiseur de pile pour prolonger l\'autonomie de la pile"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Améliorer l\'autonomie de la pile"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Déconnecter ce RPV?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Déconnecter"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Oublier le profil RPV"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Remplacer le RPV existant?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Définir le RPV permanent?"</string>
@@ -3335,14 +3347,14 @@
<string name="keywords_default_payment_app" msgid="5162298193637362104">"paiement, par défaut"</string>
<string name="keywords_ambient_display" msgid="3149287105145443697">"notification entrante"</string>
<string name="keywords_hotspot_tethering" msgid="3688439689671232627">"partage de connexion usb, partage de connexion bluetooth, partage de connexion wi-fi, fonction modem"</string>
- <string name="keywords_accessibility_vibration_primary_switch" msgid="730692154347231253">"effets tactils, vibrer, vibration"</string>
+ <string name="keywords_accessibility_vibration_primary_switch" msgid="730692154347231253">"effets tactiles, vibrer, vibration"</string>
<string name="keywords_touch_vibration" msgid="1125291201902251273">"haptique, vibrer, écran, sensibilité"</string>
<string name="keywords_ring_vibration" msgid="1736301626537417541">"haptique, vibration, téléphone, appel, sensibilité, sonnerie"</string>
<string name="keywords_ramping_ringer_vibration" msgid="3678966746742257366">"haptique, vibration, téléphone, appel, sonnerie, graduellement"</string>
<string name="keywords_notification_vibration" msgid="2620799301276142183">"haptique, vibration, sensibilité, notification"</string>
<string name="keywords_alarm_vibration" msgid="4833220371621521817">"haptique, vibration, sensibilité, alarme"</string>
<string name="keywords_media_vibration" msgid="723896490102792327">"haptique, vibration, sensibilité, multimédia"</string>
- <string name="keywords_vibration" msgid="670455132028025952">"effets tactils, vibrer, vibration"</string>
+ <string name="keywords_vibration" msgid="670455132028025952">"effets tactiles, vibrer, vibration"</string>
<string name="keywords_battery_saver_sticky" msgid="1646191718840975110">"économiseur de pile, fixe, persistant, économie d\'énergie, pile"</string>
<string name="keywords_battery_saver_schedule" msgid="8240483934368455930">"routine, horaire, économiseur de pile, économie d\'énergie, pile, automatique, pour cent"</string>
<string name="keywords_enhance_4g_lte" msgid="658889360486800978">"volte, appels avancés, appels 4g"</string>
@@ -3402,7 +3414,7 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Aucun}=1{1 horaire programmé}one{# horaire programmé}other{# horaires programmés}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne pas déranger"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"Modes"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"Réduisez les distractions et prenez le contrôle de votre attention à l\'aide des modes pour le sommeil, le travail, la conduite et tout ce qu\'il y a entre les deux."</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"Réduisez les distractions et prenez le contrôle de votre attention à l\'aide des modes pour le sommeil, le travail, la conduite et tout le reste."</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Créer votre propre mode"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Recevez uniquement les notifications des personnes et des applis importantes"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Définir un horaire"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"« 9 h à 17 h les jours de semaine »"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Événements d\'agenda"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Le mode {mode_1} est actif}=2{Les modes {mode_1} et {mode_2} sont actifs}=3{Les modes {mode_1}, {mode_2} et {mode_3} sont actifs}one{Les modes {mode_1}, {mode_2}, et # autre sont actifs}other{Les modes {mode_1}, {mode_2}, et # autres sont actifs}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode peut s\'activer automatiquement}one{# mode peut s\'activer automatiquement}other{# modes peuvent s\'activer automatiquement}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne pas déranger}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVÉ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Non défini"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Désactivé"</string>
@@ -3436,7 +3448,7 @@
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Horaire"</string>
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Quand l\'activer automatiquement"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Programme de l\'événement"</string>
- <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Activez lors des événements pour"</string>
+ <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Activer lors des événements pour"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Là où la réponse à l\'invitation est"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Programmation de l\'horaire"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programmer"</string>
@@ -3457,13 +3469,13 @@
<string name="mode_display_options_section" msgid="5151597748243866532">"Options d\'affichage"</string>
<string name="mode_grayscale_title" msgid="6027553257331235461">"Nuances de gris"</string>
<string name="mode_grayscale_title_secondary_list" msgid="2662593380253642581">"nuances de gris"</string>
- <string name="mode_grayscale_summary" msgid="6682099523626777038">"Activer l\'affichage noir et blanc"</string>
+ <string name="mode_grayscale_summary" msgid="6682099523626777038">"Activez l\'affichage noir et blanc"</string>
<string name="mode_aod_title" msgid="5903435070341237325">"Garder l\'écran sombre"</string>
<string name="mode_aod_title_secondary_list" msgid="8268180392811027557">"garder l\'écran sombre"</string>
- <string name="mode_aod_summary" msgid="7516159044827627065">"Désactiver l\'écran actif en permanence"</string>
+ <string name="mode_aod_summary" msgid="7516159044827627065">"Désactivez l\'écran actif en permanence"</string>
<string name="mode_wallpaper_title" msgid="5549693923133928374">"Assombrir le fond d\'écran"</string>
<string name="mode_wallpaper_title_secondary_list" msgid="5034602021811580157">"assombrir le fond d\'écran"</string>
- <string name="mode_wallpaper_summary" msgid="665480011615603784">"Filtrer la luminosité du fond d\'écran"</string>
+ <string name="mode_wallpaper_summary" msgid="665480011615603784">"Filtrez la luminosité du fond d\'écran"</string>
<string name="mode_dark_theme_title" msgid="8099007897943513209">"Activer le thème sombre"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activer le thème sombre"</string>
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"Changez le thème de l\'appareil pour utiliser un arrière-plan sombre qui est plus doux pour les yeux"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Lorsque vous recevez de nombreuses notifications pendant un court laps de temps, votre appareil baisse le volume et réduit les alertes pour une période maximale de deux minutes. Les appels, les alarmes et les conversations prioritaires ne sont pas concernés par cette mesure. \n\nVous pouvez afficher les notifications reçues pendant cette période en faisant glisser votre doigt du haut de l\'écran vers le bas."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Appliquer aux profils professionnels"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Appliquez ce paramètre aux applis du profil professionnel"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Services d\'assistance pour la réalité virtuelle"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Aucune demande d\'exécution en tant que services d\'assistance pour la réalité virtuelle n\'a été envoyée pour les applis installées."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Autoriser <xliff:g id="SERVICE">%1$s</xliff:g> à accéder au service de réalité virtuelle?"</string>
@@ -3854,10 +3876,10 @@
<string name="zen_mode_alarms" msgid="5989343060100771099">"Alarmes"</string>
<string name="zen_mode_alarms_summary" msgid="3388679177457223967">"Des minuteries, des alarmes, des systèmes de sécurité et d\'autres applis"</string>
<string name="zen_mode_alarms_list" msgid="334782233067365405">"alarmes"</string>
- <string name="zen_mode_alarms_list_first" msgid="2780418316613576610">"Alarmes"</string>
+ <string name="zen_mode_alarms_list_first" msgid="2780418316613576610">"Les alarmes"</string>
<string name="zen_mode_media" msgid="885017672250984735">"Sons des éléments multimédias"</string>
<string name="zen_mode_media_summary" msgid="7174081803853351461">"Sons des vidéos, des jeux et d\'autres éléments multimédias"</string>
- <string name="zen_mode_media_list" msgid="2006413476596092020">"média"</string>
+ <string name="zen_mode_media_list" msgid="2006413476596092020">"le contenu multimédia"</string>
<string name="zen_mode_media_list_first" msgid="7824427062528618442">"Éléments multimédias"</string>
<string name="zen_mode_system" msgid="7301665021634204942">"Sons des touches"</string>
<string name="zen_mode_system_summary" msgid="7225581762792177522">"Sons du clavier et des autres boutons"</string>
@@ -3994,7 +4016,7 @@
<string name="app_launch_open_domain_urls_title" msgid="4805388403977096285">"Ouvrir les liens compatibles"</string>
<string name="app_launch_open_in_app" msgid="2208182888681699512">"Dans l\'appli"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"Dans votre navigateur"</string>
- <string name="app_launch_top_intro_message" msgid="9037324384325518290">"Choisir comment ouvrir les liens Web pour cette appli"</string>
+ <string name="app_launch_top_intro_message" msgid="9037324384325518290">"Choisissez comment ouvrir les liens Web pour cette appli"</string>
<string name="app_launch_links_category" msgid="2380467163878760037">"Liens à ouvrir dans cette appli"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"Liens compatibles"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"Autres préférences par défaut"</string>
@@ -5032,7 +5054,7 @@
<string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Maintenir l\'interrupteur enfoncé pour accéder au menu"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Menu de l\'interrupteur"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Assistant numérique"</string>
- <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Accéder à l\'assistant numérique"</string>
+ <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Accédez à l\'assistant numérique"</string>
<string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"Accédez au menu de l\'interrupteur"</string>
<string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"Pour l\'utiliser, définissez d\'abord un écran de verrouillage"</string>
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Menu de l\'interrupteur :\nAppuyez simultanément sur l\'interrupteur et sur le bouton d\'augmentation du volume"</string>
@@ -5045,9 +5067,9 @@
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"Autoriser l\'accès au portefeuille à partir de l\'écran de verrouillage"</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"Afficher le lecteur de code QR"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Autorisez l\'accès au lecteur de code QR à partir de l\'écran verrouillé"</string>
- <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Afficher les commandes des appareils"</string>
+ <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Afficher les commandes de l\'appareil"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"À partir de l\'écran de verrouillage"</string>
- <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Utiliser les Commandes de l\'appareil"</string>
+ <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Utiliser les commandes de l\'appareil"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Pour les utiliser, activez d\'abord « Afficher les commandes de l\'appareil »"</string>
<string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"La taille de l\'horloge varie en fonction du contenu de l\'écran de verrouillage"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"Horloge dynamique"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Écouter le flux"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Balayez le code QR d\'un flux audio pour l\'écouter avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Impossible de modifier le mot de passe lors du partage. Pour modifier le mot de passe, désactivez d\'abord le partage audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Votre mot de passe doit contenir de 4 à 16 caractères et utiliser uniquement des lettres, des chiffres et des symboles"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Lecteur de code QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Besoin d\'aide?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Paramètres de recherche"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Appareil uniquement"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Les nouveaux contacts ne seront pas synchronisés avec un compte"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Les contacts seront enregistrés sur votre appareil et synchronisés avec votre compte par défaut"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Aucun compte par défaut n\'a été défini"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Erreur lors de la définition du compte par défaut"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Aucun compte par défaut n\'a été défini"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Appareil uniquement"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Ajoutez un compte pour commencer"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Encercler et rechercher"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Maintenez le doigt sur la touche d\'accueil ou sur la barre de navigation pour effectuer une recherche à l\'aide du contenu de votre écran."</string>
</resources>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index c04d39c..1059146 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Sacoche"</item>
+ <item msgid="184985872234062767">"Bâtiment classique"</item>
+ <item msgid="9189550412466785530">"Immeuble d\'appartements"</item>
+ <item msgid="2142527562511049422">"Bulle de texte"</item>
+ <item msgid="2548100558260478605">"Groupe de personnes"</item>
+ <item msgid="2270003903304578284">"Ampoule"</item>
+ <item msgid="4793496619091161864">"Agenda"</item>
+ <item msgid="5673625795644364100">"Ne pas déranger"</item>
+ <item msgid="1423820834865831361">"Personne qui court"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Haltère"</item>
+ <item msgid="2730180105015616518">"Natation"</item>
+ <item msgid="2666922823253345958">"Personne faisant de la randonnée"</item>
+ <item msgid="8234880356472211396">"Personne lançant une balle"</item>
+ <item msgid="4642980625253001443">"Personne donnant un coup de pied"</item>
+ <item msgid="4324795269518833500">"Manette de jeu"</item>
+ <item msgid="7789966425125441125">"Palette de couleurs d\'artiste"</item>
+ <item msgid="663512680597461570">"Flocon de neige"</item>
+ <item msgid="7952183800501346803">"Parasol"</item>
+ <item msgid="799139025758265891">"Outils d\'atelier"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Bobine de film"</item>
+ <item msgid="5827426100157335512">"Livre"</item>
+ <item msgid="8585828346253128384">"Fleur de lotus"</item>
+ <item msgid="8788370542815300188">"Esprit d\'une personne"</item>
+ <item msgid="7287354964767553293">"Écouteurs"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Train"</item>
+ <item msgid="4903790544026923026">"Voiture"</item>
+ <item msgid="5010405583912314582">"Fourchette et couteau"</item>
+ <item msgid="8939998598599064900">"Panier"</item>
+ <item msgid="3379605903308731893">"Enfant"</item>
+ <item msgid="7808668968550293112">"Patte d\'animal"</item>
+ <item msgid="1000692647524056504">"Badge en forme d\'étoile"</item>
+ <item msgid="8270261073421676502">"Deux personnes"</item>
+ <item msgid="5767782819651505460">"Étoile"</item>
+ <item msgid="4368451291862729334">"Cœur"</item>
+ <item msgid="2613199102208419986">"Maison"</item>
+ <item msgid="3022279986430275040">"Demi-lune"</item>
+ <item msgid="5421089790869483206">"Horloge"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index ae080f7..64b97b9 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Associer un appareil"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Activer automatiquement demain"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Associer le droit"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Associer le gauche"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Associer l\'autre appareil"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Désactiver Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Désactive la fonctionnalité Bluetooth LE Audio si l\'appareil est compatible avec les capacités matérielles LE Audio"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Mode Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Activer l\'aperçu de l\'UI de diffusion Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Active l\'aperçu de l\'UI de partage LE Audio, y compris le partage audio personnel et la diffusion privée"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Bouton LE Audio dans Détails appareil"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Liste d\'autorisation de contournement Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Utilisez LE Audio par défaut même si le respect des critères de la liste d\'autorisation par le périphérique LE Audio n\'a pas été validé."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Définir automatiquement à l\'aide de votre réseau et de vos signaux sans fil"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuseau horaire automatique"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Définir automatiquement en fonction des réseaux mobiles à proximité"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Définir automatiquement grâce à la position de votre appareil, si celle-ci est disponible"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Utiliser les paramètres régionaux par défaut"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Utiliser le format 24h"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Heure"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Relevez le doigt, puis reposez-le sur le lecteur"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Impossible d\'utiliser le lecteur d\'empreinte digitale"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Contactez un réparateur."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Déverrouillage par empreinte digitale avec l\'écran éteint"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Utilisez le déverrouillage par empreinte digitale même lorsque l\'écran est éteint"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Écran éteint, déverrouillage"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Autres paramètres de sécurité"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Verrouillage du profil professionnel, chiffrement et plus"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Chiffrement, identifiants et plus"</string>
@@ -627,7 +633,7 @@
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Fonctionnement"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Créer un compte Google pour votre espace"</b>\n"En utilisant un compte dédié, vous empêchez les fichiers, photos et e-mails synchronisés d\'apparaître en dehors de votre espace"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Activez le verrouillage"</b>\n"Verrouillez votre espace afin que personne ne puisse y accéder."</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Applis installées"</b>\n"Les applis installées que vous souhaitez garder privées dans votre espace"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installer les applis"</b>\n"Installez les applis que vous souhaitez garder privées dans votre espace"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"À noter"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Les applis s\'arrêtent lorsque vous verrouillez votre espace"</b>\n"Lorsque vous verrouillez votre espace, les applis qui s\'y trouvent s\'arrêtent et vous ne recevez plus de notifications de leur part"</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"Les espaces privés ne sont pas adaptés aux applis qui doivent s\'exécuter en arrière-plan ou envoyer des notifications critiques, comme les applis médicales. En effet, les notifications et les activités en arrière-plan sont interrompues lorsque votre espace est verrouillé.\n\nLes applis contenues dans votre espace privé n\'apparaissent pas dans le gestionnaire d\'autorisations, dans le tableau de bord Confidentialité ni dans d\'autres paramètres quand votre espace privé est verrouillé.\n\nVotre espace privé ne peut pas être transféré vers un nouvel appareil. Si vous souhaitez l\'utiliser sur un autre appareil, vous devrez configurer un nouvel espace privé.\n\nQuiconque connecte votre appareil à un ordinateur ou y installe des applis malveillantes peut avoir accès à votre espace privé."</string>
@@ -1306,7 +1312,7 @@
<string name="dark_ui_text" msgid="4392646155331126666">"Le thème sombre utilise un fond noir pour préserver l\'autonomie de la batterie sur certains écrans. Si vous le programmez, il attend que l\'écran soit éteint pour s\'activer."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Actuellement, le thème sombre s\'active au même horaire que le mode Coucher."</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Paramètres du mode Coucher"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Aucun mode n\'active le thème sombre}=1{{mode_1} active également le thème sombre}=2{{mode_1} et {mode_2} activent également le thème sombre}=3{{mode_1}, {mode_2} et {mode_3} activent également le thème sombre}one{{mode_1}, {mode_2} et # autre mode activent également le thème sombre}other{{mode_1}, {mode_2} et # autres modes activent également le thème sombre}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Les modes peuvent également activer le thème sombre}=1{{mode_1} active également le thème sombre}=2{{mode_1} et {mode_2} activent également le thème sombre}=3{{mode_1}, {mode_2} et {mode_3} activent également le thème sombre}one{{mode_1}, {mode_2} et # autre mode activent également le thème sombre}other{{mode_1}, {mode_2} et # autres modes activent également le thème sombre}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Paramètres des modes"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Luminosité ultra-réduite"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Autoriser une diminution plus importante de la luminosité de l\'appareil"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Le clavier ignore les frappes rapides et consécutives d\'une même touche"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Seuil de touches filtres"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Choisissez la durée pendant laquelle votre clavier ignore les frappes consécutives d\'une touche"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personnalisé"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valeur personnalisée"</string>
<string name="slow_keys" msgid="2891452895499690837">"Touches lentes"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Règle le temps de réponse à la pression d\'une touche"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Touches persistantes"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Pour les raccourcis, appuyer sur une touche à la fois au lieu de maintenir les touches enfoncées"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Touches pour la souris"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Utiliser les boutons de la souris"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Utilisez le clavier pour contrôler le pointeur"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Défilement inversé avec la souris"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Faire défiler vers le haut pour déplacer la page vers le bas"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Inverser les boutons gauche et droit"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Utiliser le bouton gauche de la souris comme bouton droit"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Boutons de la souris pour <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Utilisez les touches <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> pour déplacer le pointeur de la souris"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Utilisez la touche <xliff:g id="CLICK_LABEL">%s</xliff:g> pour cliquer sur le bouton principal de la souris"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Utilisez la touche <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> pour appuyer de manière prolongée sur le bouton principal de la souris"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Appuyez sur la touche <xliff:g id="RELEASE_LABEL">%s</xliff:g> pour relâcher le bouton principal de la souris"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Utilisez la touche <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> pour activer ou désactiver le mode Défilement. Cette option permet de faire défiler l\'affichage vers le haut, le bas, la gauche ou la droite à l\'aide des touches <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Utilisez la touche <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> pour cliquer sur le bouton secondaire de la souris"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Raccourcis clavier"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Afficher la liste des raccourcis"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Claviers et outils du profil professionnel"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Choisir une nouvelle touche pour <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> :"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accessibilité du clavier physique"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Touches rémanentes, touches à rebonds, touches pour la souris"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Répéter les touches"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Délai avant répétition"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Fréquence de répétition"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Maintenez une touche enfoncée pour répéter le caractère correspondant jusqu\'à ce que vous la relâchiez"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Mise en page <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Par défaut"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatique : <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2207,7 +2219,7 @@
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"Raccourci des boutons de volume"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="5529704884360240365">"Raccourci Appuyer trois fois"</string>
<string name="accessibility_tutorial_dialog_title_two_finger_double" msgid="5749704453829390283">"Raccourci Appuyer deux fois avec %1$d doigts"</string>
- <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"Raccourci des réglages rapides"</string>
+ <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"Raccourci vers Réglages rapides"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"Raccourci : geste d\'accessibilité"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Utiliser le geste d\'accessibilité"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Pour utiliser cette fonctionnalité, appuyez sur le bouton Accessibilité (<xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>) en bas de votre écran.\n\nPour changer de fonctionnalité, appuyez dessus de manière prolongée."</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajuster la consommation"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Modules inclus"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Les applications s\'exécutent normalement"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Remplacement de la batterie recommandé"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"La capacité de la batterie et les performances de recharge sont réduites. Nous vous recommandons de remplacer la batterie."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Niveau de batterie faible"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Activer l\'économiseur de batterie pour prolonger l\'autonomie"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Améliorer l\'autonomie de la batterie"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Déconnecter ce VPN ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Déconnecter"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Supprimer le VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Remplacer le VPN existant ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Définir le VPN permanent ?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9h - 17h en semaine\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Événements d\'agenda"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} est actif}=2{{mode_1} et {mode_2} sont actifs}=3{{mode_1}, {mode_2} et {mode_3} sont actifs}one{{mode_1}, {mode_2} et # de plus sont actifs}other{{mode_1}, {mode_2} et # de plus sont actifs}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode peut s\'activer automatiquement}one{# mode peut s\'activer automatiquement}other{# modes peuvent s\'activer automatiquement}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne pas déranger}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVÉ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Non défini"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Désactivé"</string>
@@ -3684,12 +3697,12 @@
<string name="notification_listener_security_warning_summary" msgid="1131986567509818121">"L\'appli <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> pourra lire toutes les notifications, y compris des informations personnelles comme le nom des contacts, les photos et le texte des messages que vous recevez. Cette appli pourra aussi suspendre ou fermer des notifications, ou effectuer l\'action spécifique aux boutons dans ces notifications (répondre aux appels, par exemple). \n\nElle pourra enfin activer ou désactiver Ne pas déranger, et modifier les paramètres associés."</string>
<string name="nls_warning_prompt" msgid="1486887096703743841">"L\'appli <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> pourra :"</string>
<string name="nls_feature_read_title" msgid="7629713268744220437">"Lire vos notifications"</string>
- <string name="nls_feature_read_summary" msgid="1064698238110273593">"Pourra lire vos notifications, y compris des informations personnelles comme les contacts, les messages et les photos"</string>
+ <string name="nls_feature_read_summary" msgid="1064698238110273593">"Elle pourra lire vos notifications, y compris des informations personnelles comme les contacts, les messages et les photos."</string>
<string name="nls_feature_reply_title" msgid="7925455553821362039">"Répondre aux messages"</string>
- <string name="nls_feature_reply_summary" msgid="4492543411395565556">"Pourra répondre aux messages et agir sur les boutons dans les notifications, y compris mettre en attente ou fermer les notifications et répondre aux appels"</string>
+ <string name="nls_feature_reply_summary" msgid="4492543411395565556">"Elle pourra répondre aux messages et agir sur les boutons dans les notifications, y compris mettre en attente ou fermer les notifications et répondre aux appels."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Modifier les paramètres"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Pourra activer ou désactiver Ne pas déranger, et modifier les paramètres associés"</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Peut gérer et activer les modes ou encore modifier les paramètres associés."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Elle pourra gérer et activer les modes ou encore modifier les paramètres associés."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Si vous désactivez l\'accès aux notifications pour <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, l\'accès à Ne pas déranger pourra aussi être désactivé."</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Si vous désactivez l\'accès aux notifications pour <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, l\'accès aux modes peut également être désactivé."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Désactiver"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Si vous recevez beaucoup de notifications en peu de temps, votre appareil réduit le volume et les alertes pendant 2 minutes maximum. Les appels, les alarmes et les conversations prioritaires ne sont pas affectés. \n\nLes notifications reçues pendant la limitation sont accessibles en faisant glisser votre doigt du haut de l\'écran vers le bas."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Appliquer aux profils professionnels"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Appliquer aux applis des profils professionnels"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Services d\'assistance RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Aucune des applis installées n\'a demandé à être exécutée en tant que service d\'assistance pour la réalité virtuelle."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Autoriser \"<xliff:g id="SERVICE">%1$s</xliff:g>\" à accéder au service de RV ?"</string>
@@ -5333,7 +5356,7 @@
<string name="color_inversion_feature_summary" msgid="1199876648549627647">"Assombrir les écrans clairs et éclaircir les écrans sombres"</string>
<string name="magnification_feature_summary" msgid="2053971569640663564">"Faire un zoom avant sur l\'écran"</string>
<string name="autoclick_disabled" msgid="3213396804955002120">"Désactivé"</string>
- <string name="show_captions_disabled" msgid="690650956523818755">"Désactivées"</string>
+ <string name="show_captions_disabled" msgid="690650956523818755">"Désactivé"</string>
<string name="show_captions_enabled" msgid="7089043007924626">"Activé"</string>
<string name="live_caption_disabled" msgid="3562035026547887366">"Désactivés"</string>
<string name="live_caption_enabled" msgid="5269360946200718949">"Activés"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Écouter le flux"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scanner le code QR d\'un flux audio pour l\'écouter avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Impossible de modifier le mot de passe lors du partage. Pour modifier le mot de passe, il faut d\'abord désactiver le partage audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Votre mot de passe doit contenir entre 4 et 16 caractères et n\'être composé que de lettres, de chiffres et de symboles"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Lecteur de code QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Besoin d\'aide ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Rechercher un paramètre"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Appareil uniquement"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Les nouveaux contacts ne seront pas synchronisés avec un compte"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Les contacts seront enregistrés sur votre appareil et synchronisés avec votre compte par défaut"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Aucun compte par défaut n\'a été défini"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Erreur lors de la définition du compte par défaut"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Aucun compte par défaut n\'a été défini"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Appareil uniquement"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Ajoutez un compte pour commencer"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Entourer pour chercher"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Appuyez de manière prolongée sur le bouton d\'accueil ou la barre de navigation pour effectuer une recherche basée sur le contenu de votre écran."</string>
</resources>
diff --git a/res/values-gl/arrays.xml b/res/values-gl/arrays.xml
index 08f58f7..4ce2f6d 100644
--- a/res/values-gl/arrays.xml
+++ b/res/values-gl/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Portadocumentos"</item>
+ <item msgid="184985872234062767">"Edificio clásico"</item>
+ <item msgid="9189550412466785530">"Bloque de pisos"</item>
+ <item msgid="2142527562511049422">"Globo de diálogo"</item>
+ <item msgid="2548100558260478605">"Grupo de persoas"</item>
+ <item msgid="2270003903304578284">"Lámpada"</item>
+ <item msgid="4793496619091161864">"Calendario"</item>
+ <item msgid="5673625795644364100">"Modo Non molestar"</item>
+ <item msgid="1423820834865831361">"Persoa correndo"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Pesa de man de ximnasio"</item>
+ <item msgid="2730180105015616518">"Natación"</item>
+ <item msgid="2666922823253345958">"Persoa facendo sendeirismo"</item>
+ <item msgid="8234880356472211396">"Persoa lanzando unha pelota"</item>
+ <item msgid="4642980625253001443">"Persoa dando unha patada"</item>
+ <item msgid="4324795269518833500">"Mando de xogo"</item>
+ <item msgid="7789966425125441125">"Paleta de cores de artista"</item>
+ <item msgid="663512680597461570">"Folerpa"</item>
+ <item msgid="7952183800501346803">"Parasol"</item>
+ <item msgid="799139025758265891">"Ferramentas dun taller"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Rolo de película"</item>
+ <item msgid="5827426100157335512">"Libro"</item>
+ <item msgid="8585828346253128384">"Flor de loto"</item>
+ <item msgid="8788370542815300188">"Mente dunha persoa"</item>
+ <item msgid="7287354964767553293">"Auriculares"</item>
+ <item msgid="2530059623783800987">"Televisión"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Coche"</item>
+ <item msgid="5010405583912314582">"Garfo e coitelo"</item>
+ <item msgid="8939998598599064900">"Cesta da compra"</item>
+ <item msgid="3379605903308731893">"Nena ou neno"</item>
+ <item msgid="7808668968550293112">"Pouta"</item>
+ <item msgid="1000692647524056504">"Insignia de estrela"</item>
+ <item msgid="8270261073421676502">"Dúas persoas"</item>
+ <item msgid="5767782819651505460">"Estrela"</item>
+ <item msgid="4368451291862729334">"Corazón"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Media lúa"</item>
+ <item msgid="5421089790869483206">"Reloxo"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 012538e..ba4ed12 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Vincular novo dispositivo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Activar mañá automaticamente"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Vincular dereito"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Vincular esquerdo"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Vincula o outro audiófono"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Sen Bluetooth de baixo consumo (audio)"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Desactiva a función de audio por Bluetooth de baixo consumo se o dispositivo é compatible coas funcións do hardware de audio de baixo consumo."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modo audio por Bluetooth baixo consumo"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Actualizar vista previa da interface de difusión do audio por Bluetooth de baixo consumo"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Activa a vista previa da interface do audio de baixo consumo compartido, incluídos o uso compartido do audio persoal e a difusión privada"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Botón Audio de baixo consumo en detalles"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Sortear lista de entidades permitidas para o audio por Bluetooth de baixo consumo"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Usa o audio de baixo consumo de forma predeterminada mesmo no caso de que non se verificase se o seu dispositivo periférico cumpre os criterios da lista de entidades permitidas."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"A data e a hora definiranse automaticamente coa axuda da rede e os sinais sen fíos"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuso horario automático"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"O fuso horario definirase automaticamente en función das redes de telefonía móbil que teñas preto"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"A data e hora definiranse automaticamente segundo a localización do dispositivo, se está dispoñible"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usar configuración rexional predeterminada"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Usar formato de 24 horas"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Hora"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Levanta o dedo e despois volve tocar o sensor."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Non se puido usar o sensor de impresión dixital"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visita un provedor de reparacións."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueo dactilar coa pantalla apagada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Usa o desbloqueo dactilar mesmo cando estea apagada a pantalla"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Pantalla apagada, desbloqueo"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Máis opcións de configuración de seguranza"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueo do perfil de traballo, encriptación e moito máis"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encriptación, credenciais e moito máis"</string>
@@ -627,10 +633,10 @@
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Como funciona?"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crea unha Conta de Google para o teu espazo"</b>\n"Usar unha conta específica axuda a evitar que os ficheiros, fotos e correos electrónicos sincronizados aparezan fóra do teu espazo privado"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Define un bloqueo"</b>\n"Bloquea o espazo para que ninguén máis poida abrilo"</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instala aplicacións"</b>\n"Instala as aplicacións que queiras manter no teu espazo privado"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instala aplicacións"</b>\n"Instala no teu espazo as aplicacións que queiras manter en privado"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Importante"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"As aplicacións desactívanse ao bloquear o espazo privado"</b>\n"Cando bloqueas o espazo, as aplicacións que están nel detéñense, polo que non che enviarán notificacións"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Os espazos privados non son axeitados para as aplicacións que deben executarse en segundo plano ou enviar notificacións esenciais, como as aplicacións médicas. A razón é que se deteñen as notificacións e a actividade en segundo plano cando bloqueas o espazo.\n\nUnha vez bloqueado, as aplicacións do espazo privado non aparecerán no xestor de permisos, no panel de privacidade nin noutras opcións de configuración\n\nEste espazo non se pode mover a outro dispositivo. Terás que configurar un novo espazo privado se queres usalo noutro aparello.\n\nCalquera usuario que instale aplicacións daniñas no teu dispositivo ou o conecte a un ordenador poderá acceder ao teu espazo privado."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Os espazos privados non son axeitados para as aplicacións que deben executarse en segundo plano ou enviar notificacións esenciais, como as aplicacións médicas. A razón é que se deteñen as notificacións e a actividade en segundo plano cando bloqueas o espazo.\n\nUnha vez bloqueado, as aplicacións do espazo privado non aparecerán no xestor de permisos, no panel de privacidade nin noutras opcións de configuración.\n\nEste espazo non se pode mover a outro dispositivo. Terás que configurar un novo espazo privado se queres usalo noutro aparello.\n\nCalquera usuario que instale aplicacións daniñas no teu dispositivo ou o conecte a un ordenador poderá acceder ao teu espazo privado."</string>
<string name="private_space_settings_footer_text" msgid="3742468470394835356">"Os espazos privados non son axeitados para as aplicacións que deben executarse en segundo plano ou enviar notificacións esenciais, como as aplicacións médicas. A razón é que se deteñen as notificacións e a actividade en segundo plano cando bloqueas o espazo.\n\nUnha vez bloqueado, as aplicacións do espazo privado non aparecerán no xestor de permisos, no panel de privacidade nin noutras opcións de configuración\n\nEste espazo non se pode restaurar noutro dispositivo. Terás que configurar un novo se queres usalo noutro aparello.\n\nCalquera usuario que instale aplicacións maliciosas no teu dispositivo ou o conecte a un ordenador podería acceder ao teu espazo privado."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Máis información sobre o espazo privado"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Esta acción tardará uns intres"</string>
@@ -1950,23 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"O teclado ignorará as pulsacións repetidas rapidamente da mesma tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Límite das teclas de rebote"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Escolle o tempo durante o cal o teu teclado ignorará as pulsacións repetidas"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizado"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalizado"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Axusta o tempo que se tarda en activar a pulsación dunha tecla"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Teclas presas"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Preme unha tecla de cada vez para os atallos, en lugar de manter premidas varias"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Teclas para o rato"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Teclas do rato"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usar teclas do rato"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Usa o teclado para controlar o punteiro"</string>
- <!-- no translation found for mouse_reverse_vertical_scrolling (154907817154779952) -->
- <skip />
- <!-- no translation found for mouse_reverse_vertical_scrolling_summary (3386655598642587942) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button (3028204969091057207) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button_summary (3276638019321067902) -->
- <skip />
+ <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Desprazamento inverso do rato"</string>
+ <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Desprázate cara arriba para mover a páxina cara abaixo"</string>
+ <string name="mouse_swap_primary_button" msgid="3028204969091057207">"Cambiar botóns esquerdo e dereito"</string>
+ <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Usa o botón esquerdo do rato como se fose o dereito"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Teclas do rato de: <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Usa as teclas <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> para mover o punteiro do rato"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Usa a tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> para facer clic no botón principal do rato"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Usa a tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> para manter premido o botón principal do rato"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Usa a tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> para soltar o botón principal do rato"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Usa a tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> para activar ou desactivar o modo de desprazamento. Con esta acción, as teclas <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> desprazarán a vista arriba, abaixo, á esquerda e á dereita"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Usa a tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> para facer clic no botón secundario do rato"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Atallos de teclado"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostra a lista de atallos"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Teclados e ferramentas do perfil de traballo"</string>
@@ -1996,7 +2008,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"Branco"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"Negro"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"Ningún"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Descubrir xestos no panel táctil"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Consultar xestos do panel táctil"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"panel táctil, rato, cursor, desprazar, pasar o dedo, facer clic co botón dereito, facer clic, punteiro"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"facer clic co botón dereito, tocar"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"Ir a Inicio"</string>
@@ -2034,15 +2046,11 @@
<string name="modifier_keys_picker_title" msgid="244545904150587851">"Escoller unha tecla modificadora"</string>
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Escolle unha nova tecla para <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accesibilidade do teclado físico"</string>
- <string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas presas, teclas de rebote, teclas para o rato"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas presas, teclas de rebote, teclas do rato"</string>
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repetición de teclas"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Retardo previo á repetición"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Índice de repetición"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Mantén premida unha tecla para repetir o seu carácter ata que a soltes"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Deseño: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predeterminado"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Selección automática: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2419,8 +2427,8 @@
<string name="accessibility_description_state_stopped" msgid="5364752492861199133">"Este servizo non funciona correctamente."</string>
<string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"Atallos de accesibilidade"</string>
<string name="enable_quick_setting" msgid="6648073323202243604">"Mostrar en Configuración rápida"</string>
- <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Percepción débil do verde, vermello-verde"</string>
- <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Percepción débil do vermello, vermello-verde"</string>
+ <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Vermello-verde, percepción débil do verde"</string>
+ <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Vermello-verde, percepción débil do vermello"</string>
<string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Azul-amarelo"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Escala de grises"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Intensidade"</string>
@@ -2447,8 +2455,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"Vista previa"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"Opcións estándar"</string>
<string name="captioning_locale" msgid="5533303294290661590">"Idioma"</string>
- <!-- no translation found for captioning_text_size (5764254558945371745) -->
- <skip />
+ <string name="captioning_text_size" msgid="5764254558945371745">"Tamaño dos subtítulos"</string>
<string name="captioning_preset" msgid="4174276086501638524">"Estilo dos subtítulos"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"Opcións personalizadas"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"Cor do fondo"</string>
@@ -2575,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Axustar uso de enerxía"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Paquetes incluídos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"As aplicacións execútanse con normalidade"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Recoméndase substituír a batería"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Reducíronse a capacidade e o rendemento de carga da batería, polo que se recomenda substituíla."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Queda pouca batería"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Para que a batería dure máis, activa a función Aforro de batería"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Mellora a duración da batería"</string>
@@ -2992,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Queres desconectar esta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desconectar"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versión"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Esquecer perfil da VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Queres substituír a VPN existente?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Queres definir a VPN como sempre activa?"</string>
@@ -3416,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Días de semana, de 9:00 a 17:00\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventos do calendario"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{O modo {mode_1} está activo}=2{Os modos {mode_1} e {mode_2} están activos}=3{Os modos {mode_1}, {mode_2} e {mode_3} están activos}other{Os modos {mode_1}, {mode_2} e # máis están activos}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Hai 1 modo que se pode activar de forma automática}other{Hai # modos que se poden activar de forma automática}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Modo Non molestar}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVADO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Sen configurar"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Desactivado"</string>
@@ -3439,10 +3447,10 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editar"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Planificacións"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Planificación"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Cando activar automaticamente?"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Cando activar automaticamente"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Programación do evento"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Activar durante os eventos de"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Cando a resposta á invit. sexa"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Se a resposta é"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Planificación da hora"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programar"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> h e <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
@@ -3691,7 +3699,7 @@
<string name="nls_feature_read_title" msgid="7629713268744220437">"Ler as notificacións"</string>
<string name="nls_feature_read_summary" msgid="1064698238110273593">"Pode ler as notificacións, incluída a información persoal, como os contactos, as mensaxes e as fotos."</string>
<string name="nls_feature_reply_title" msgid="7925455553821362039">"Responder as mensaxes"</string>
- <string name="nls_feature_reply_summary" msgid="4492543411395565556">"Permite responder mensaxes e levar a cabo acción cos botóns nas notificacións, como adiar ou ignorar as notificacións e responder chamadas."</string>
+ <string name="nls_feature_reply_summary" msgid="4492543411395565556">"Permite responder mensaxes e levar a cabo accións cos botóns nas notificacións, como adiar ou ignorar as notificacións e responder chamadas."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Cambiar a configuración"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Permite activar ou desactivar o modo Non molestar e cambiar a configuración relacionada."</string>
<string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Pode xestionar e activar os modos, e cambiar as opcións de configuración relacionadas."</string>
@@ -3720,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Cando recibas moitas notificacións en pouco tempo, o teu dispositivo baixará o volume e reducirá ao mínimo o número de alertas durante un máximo de dous minutos. As chamadas, alarmas e conversas prioritarias non se verán afectadas. \n\nPara ver as notificacións amainadas, arrastra cara abaixo a parte superior da pantalla."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplicar aos perfís de traballo"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Usa esta opción coas aplicacións do perfil de traballo"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Servizos do asistente de RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ningunha aplicación instalada solicitou executarse como servizo do asistente de RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Queres permitir o acceso do servizo de RV para <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3766,7 +3784,7 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"Esta aplicación non envía notificacións"</string>
<string name="notification_channels" msgid="1502969522886493799">"Categorías"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Outros"</string>
- <string name="no_channels" msgid="4716199078612071915">"Esta aplicación non emitiu notificacións"</string>
+ <string name="no_channels" msgid="4716199078612071915">"Esta aplicación non publicou notificacións"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"Mostrar categorías sen usar"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Configuración adicional da aplicación"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostrar categorías sen usar"</string>
@@ -3805,8 +3823,8 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"Durante os eventos de"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"Calquera calendario"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"Cando a resposta é"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Si, Quizais ou Sen resposta"</string>
- <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Si ou Quizais"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Si, quizais ou sen resposta"</string>
+ <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Si ou quizais"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"Si"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"Non se atopou a norma."</string>
<string name="zen_mode_rule_summary_enabled_combination" msgid="1183604368083885789">"Activado / <xliff:g id="MODE">%1$s</xliff:g>"</string>
@@ -5052,7 +5070,7 @@
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Permite acceder ao escáner de códigos QR desde a pantalla de bloqueo"</string>
<string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Mostrar control de dispositivos"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Desde a pantalla de bloqueo"</string>
- <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Utilizar controis de dispositivos"</string>
+ <string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Utilizar control de dispositivos"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Para usar isto, primeiro activa Mostrar control de dispositivos"</string>
<string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"O tamaño do reloxo cambia en función do contido da pantalla de bloqueo"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"Reloxo dinámico"</string>
@@ -5347,7 +5365,7 @@
<string name="about_phone_device_name_warning" msgid="3243226572404472381">"As aplicacións que teñas instaladas poderán consultar o nome do teu dispositivo. Tamén poderán velo outros usuarios cando te conectes a dispositivos Bluetooth ou a redes wifi, así como cando configures zonas wifi."</string>
<string name="grammatical_gender_title" msgid="8584242850477270828">"Xénero gramatical"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"Seleccionar o xénero gramatical"</string>
- <string name="content_protection_preference_title" msgid="5069260032659193074">"Buscando aplicacións enganosas"</string>
+ <string name="content_protection_preference_title" msgid="5069260032659193074">"Busca de aplicacións enganosas"</string>
<string name="content_protection_preference_summary" msgid="2252393849408445391">"Revisa a actividade das aplicacións para detectar phishing"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"Usar análise para detectar aplicacións enganosas"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"Usar análise para detectar aplicacións enganosas para o traballo"</string>
@@ -5464,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Escoitar emisión"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Escanea o código QR dunha emisión de audio para escoitala con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Non se pode modificar o contrasinal mentres se comparte audio. Para facelo, primeiro desactiva o audio compartido."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"O contrasinal debe ter entre 4 e 16 caracteres, e só pode incluír letras, números e símbolos"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Escáner de códigos QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Precisas axuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Buscar en Configuración"</string>
@@ -5472,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Só dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Os novos contactos non se sincronizarán cunha conta"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"De forma predeterminada, os contactos gardaranse no teu dispositivo e sincronizaranse coa túa conta"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Non se definiu ningunha conta predeterminada"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Produciuse un erro ao configurar a conta predeterminada"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ningunha conta predeterminada definida"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Só dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Engade unha conta para comezar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Rodear para buscar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Mantén premido o botón de inicio ou o controlador de navegación para facer buscas usando o contido da pantalla."</string>
</resources>
diff --git a/res/values-gu/arrays.xml b/res/values-gu/arrays.xml
index 06e23f9..b5b7b34 100644
--- a/res/values-gu/arrays.xml
+++ b/res/values-gu/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"બ્રીફકેસ"</item>
+ <item msgid="184985872234062767">"ક્લાસિકલ બિલ્ડિંગ"</item>
+ <item msgid="9189550412466785530">"અપાર્ટમેન્ટ બિલ્ડિંગ"</item>
+ <item msgid="2142527562511049422">"સ્પીચ બબલ"</item>
+ <item msgid="2548100558260478605">"લોકોનું ગ્રૂપ"</item>
+ <item msgid="2270003903304578284">"લાઇટ બલ્બ"</item>
+ <item msgid="4793496619091161864">"કૅલેન્ડર"</item>
+ <item msgid="5673625795644364100">"ખલેલ પાડશો નહીં"</item>
+ <item msgid="1423820834865831361">"દોડતી વ્યક્તિ"</item>
+ <item msgid="2037298830718732608">"ગોલ્ફ"</item>
+ <item msgid="2197835014443491074">"જિમ ડમ્બબેલ"</item>
+ <item msgid="2730180105015616518">"સ્વિમિંગ"</item>
+ <item msgid="2666922823253345958">"હાઇક કરતી વ્યક્તિ"</item>
+ <item msgid="8234880356472211396">"બૉલ ફેંકતી વ્યક્તિ"</item>
+ <item msgid="4642980625253001443">"લાત મારતી વ્યક્તિ"</item>
+ <item msgid="4324795269518833500">"ગેમ કન્ટ્રોલર"</item>
+ <item msgid="7789966425125441125">"કલાકારના વિવિધ રંગ"</item>
+ <item msgid="663512680597461570">"સ્નોફ્લૅક"</item>
+ <item msgid="7952183800501346803">"બીચ પરની છત્રી"</item>
+ <item msgid="799139025758265891">"વર્કશોપ ટૂલ"</item>
+ <item msgid="8112685757657659269">"પિયાનો"</item>
+ <item msgid="3861584909935022342">"ફિલ્મ રીલ"</item>
+ <item msgid="5827426100157335512">"પુસ્તક"</item>
+ <item msgid="8585828346253128384">"કમળનું ફૂલ"</item>
+ <item msgid="8788370542815300188">"વ્યક્તિનું મગજ"</item>
+ <item msgid="7287354964767553293">"હૅડફોન"</item>
+ <item msgid="2530059623783800987">"ટીવી"</item>
+ <item msgid="5307182323469376758">"ટ્રેન"</item>
+ <item msgid="4903790544026923026">"કાર"</item>
+ <item msgid="5010405583912314582">"છરી કાંટાવાળી ચમચી અને છરી"</item>
+ <item msgid="8939998598599064900">"શૉપિંગ કાર્ટ"</item>
+ <item msgid="3379605903308731893">"બાળક"</item>
+ <item msgid="7808668968550293112">"પ્રાણીનો પંજો"</item>
+ <item msgid="1000692647524056504">"સ્ટાર બૅજ"</item>
+ <item msgid="8270261073421676502">"બે લોકો"</item>
+ <item msgid="5767782819651505460">"સ્ટાર"</item>
+ <item msgid="4368451291862729334">"હૃદય"</item>
+ <item msgid="2613199102208419986">"ઘર"</item>
+ <item msgid="3022279986430275040">"અર્ધચંદ્ર"</item>
+ <item msgid="5421089790869483206">"Clock"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 1800d72..38d229a 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"નવા ડિવાઇસ જોડો"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"બ્લૂટૂથ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"આવતીકાલે ઑટોમૅટિક રીતે ચાલુ કરો"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"જમણા કાનને જોડો"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ડાબા કાનને જોડો"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"તમારા બીજા કાનનું જોડો"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"બ્લૂટૂથ LE ઑડિયો બંધ કરો"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"જો ડિવાઇસ LE ઑડિયો હાર્ડવેર ક્ષમતાઓને સપોર્ટ કરતું હોય, તો બ્લૂટૂથ LE ઑડિયો સુવિધા બંધ કરે છે."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"બ્લૂટૂથ LE ઑડિયો મોડ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"બ્લૂટૂથ LE ઑડિયો બ્રોડકાસ્ટ UI પ્રીવ્યૂ ચાલુ કરો"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"વ્યક્તિગત ઑડિયો શેરિંગ અને ખાનગી બ્રોડકાસ્ટ સહિત LE ઑડિયો શેરિંગ UI પ્રીવ્યૂ ચાલુ કરે છે"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ડિવાઇસની વિગતોમાં LE ઑડિયો ટૉગલ બતાવો"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"બ્લૂટૂથ LE ઑડિયો માટેની વ્હાઇટલિસ્ટને બાયપાસ કરો"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"વ્હાઇટલિસ્ટના માપદંડનું પાલન કરવા માટે LE ઑડિયો પેરિફેરલની ચકાસણી કરવામાં આવી ન હોય, તો પણ ડિફૉલ્ટ તરીકે LE ઑડિયોનો ઉપયોગ કરો."</string>
@@ -247,16 +251,15 @@
<string name="roaming_disable" msgid="729512894708689604">"જ્યારે રોમિંગ હોય ત્યારે ડેટા સેવાઓથી કનેક્ટ કરો"</string>
<string name="roaming_warning" msgid="7703647889040229013">"રોમિંગ શુલ્ક લાગુ થઈ શકે છે."</string>
<string name="date_time_auto" msgid="1759599045100040686">"ઑટોમૅટિક તારીખ અને સમય"</string>
- <string name="date_time_auto_summary" msgid="8294938565417729698">"તમારું નેટવર્ક અને વાયરલેસ સિગ્નલ વડે ઑટોમૅટિક રીતે સેટ કરેલું સેટિંગ"</string>
+ <string name="date_time_auto_summary" msgid="8294938565417729698">"તમારા નેટવર્ક અને વાયરલેસ સિગ્નલ વડે ઑટોમૅટિક રીતે સેટ કરેલું સેટિંગ"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ઑટોમૅટિક ટાઇમ ઝોન"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"તમારી નજીકના મોબાઇલ નેટવર્કના આધારે ઑટોમૅટિક રીતે સેટ કરેલું સેટિંગ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ઉપલબ્ધ હોવા પર ડિવાઇસના લોકેશન વડે ઑટોમૅટિક રીતે સેટ કરો"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ડિફૉલ્ટ લોકેલનો ઉપયોગ કરો"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-કલાક ફોર્મેટનો ઉપયોગ કરો"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"સમય"</string>
<string name="time_format_category_title" msgid="7108616745509689991">"સમયનું ફૉર્મેટ"</string>
- <string name="date_time_set_timezone_title" msgid="790404320569600222">"સમય ઝોન"</string>
+ <string name="date_time_set_timezone_title" msgid="790404320569600222">"ટાઈમ ઝોન"</string>
<string name="date_time_set_timezone" msgid="2915125337941495746">"સમય ઝોન પસંદ કરો"</string>
<string name="date_time_set_date_title" msgid="7624166157167528407">"તારીખ"</string>
<string name="date_time_search_region" msgid="1364133854952610919">"પ્રદેશ શોધો"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"આંગળીને ઉંચકો, પછી ફરીથી સેન્સરને સ્પર્શ કરો"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ફિંગરપ્રિન્ટ સેન્સરનો ઉપયોગ કરી શકાતો નથી"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"રિપેર કરવાની સેવા આપતા પ્રદાતાની મુલાકાત લો."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"સ્ક્રીન-ઑફ ફિંગરપ્રિન્ટ અનલૉક"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"સ્ક્રીન બંધ હોય ત્યારે પણ ફિંગરપ્રિન્ટ અનલૉકનો ઉપયોગ કરો"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"સ્ક્રીન-ઑફ, અનલૉક કરો"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"સુરક્ષાના વધુ સેટિંગ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ઑફિસની પ્રોફાઇલનું લૉક, એન્ક્રિપ્શન અને બીજું ઘણું"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"એન્ક્રિપ્શન, લૉગ ઇન વિગતો અને બીજું ઘણું"</string>
@@ -1835,7 +1841,7 @@
<string name="filter" msgid="9039576690686251462">"ફિલ્ટર"</string>
<string name="filter_dlg_title" msgid="3086282431958601338">"ફિલ્ટર વિકલ્પો પસંદ કરો"</string>
<string name="filter_apps_all" msgid="5705421199299914620">"બધી ઍપ"</string>
- <string name="filter_apps_disabled" msgid="5068011814871004105">"બંધ કરેલી ઍપ્લિકેશનો"</string>
+ <string name="filter_apps_disabled" msgid="5068011814871004105">"બંધ કરેલી ઍપ"</string>
<string name="filter_apps_third_party" msgid="9049447784849114843">"ડાઉનલોડ કરેલા"</string>
<string name="filter_apps_running" msgid="535465683273284141">"ચાલે છે"</string>
<string name="not_installed" msgid="5074606858798519449">"આ વપરાશકર્તા માટે ઇન્સ્ટોલ કરેલ નથી"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"એક જ કીને વારંવાર ઝડપથી દબાવવાની પ્રક્રિયાની કીબોર્ડ અવગણના કરે છે"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"બાઉન્સ કી સંબંધિત મર્યાદા"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"વારંવાર દબાવવામાં આવતી તમારા કીબોર્ડની કીને અવગણવા માટે જરૂરી અવધિ પસંદ કરો"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 સેકન્ડ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 સેકન્ડ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 સેકન્ડ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 સેકન્ડ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 સેકન્ડ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 સેકન્ડ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"કસ્ટમ"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"કસ્ટમ મૂલ્ય"</string>
<string name="slow_keys" msgid="2891452895499690837">"ધીમી કી"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"કોઈ કીને દબાવવાથી સક્રિય થવામાં લાગતા સમયમાં વધઘટ કરે છે"</string>
<string name="sticky_keys" msgid="7317317044898161747">"સ્ટીકી કી"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"શૉર્ટકટ માટે કીને એકસાથે દબાવી રાખવાને બદલે એક સમયે એક જ કી દબાવો"</string>
<string name="mouse_keys" msgid="6237254627808525540">"માઉસની કી"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"માઉસ કીનો ઉપયોગ કરો"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"પૉઇન્ટરનું નિયંત્રણ કરવા માટે, તમારા કીબોર્ડનો ઉપયોગ કરો"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"માઉસનું રિવર્સ સ્ક્રોલિંગ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"પેજને નીચે લઈ જવા માટે ઉપર સ્ક્રોલ કરો"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ડાબા અને જમણા બટનને સ્વૉપ કરો"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"માઉસના ડાબા બટનનો ઉપયોગ તમારા જમણા બટન તરીકે કરો"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> માટે માઉસ કી"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"માઉસના પૉઇન્ટરને ખસેડવા માટે <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> કીનો ઉપયોગ કરો"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"પ્રાથમિક માઉસ બટન ક્લિક કરવા માટે <xliff:g id="CLICK_LABEL">%s</xliff:g> કીનો ઉપયોગ કરો"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"પ્રાથમિક માઉસ બટન દબાવી રાખવા માટે <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> કીનો ઉપયોગ કરો"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"પ્રાથમિક માઉસ બટન છોડવા માટે <xliff:g id="RELEASE_LABEL">%s</xliff:g> કીનો ઉપયોગ કરો"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"સ્ક્રોલ મોડ ટૉગલ કરવા માટે <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> કીનો ઉપયોગ કરો. આમ કરવાથી <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> કી વ્યૂને ઉપર, નીચે, ડાબે કે જમણે સ્ક્રોલ કરશે"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ગૌણ માઉસ બટન ક્લિક કરવા માટે <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> કીનો ઉપયોગ કરો"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"કીબોર્ડ શૉર્ટકટ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"શૉર્ટકટની સૂચિ બતાવો"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"કાર્યાલયનું પ્રોફાઇલ અને સાધનો"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> માટે નવી કી પસંદ કરો:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"વાસ્તવિક કીબોર્ડની ઍક્સેસિબિલિટી"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"સ્ટીકી કી, બાઉન્સ કી, માઉસ કી"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"કી રિપીટ કરો"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"રિપીટ થવા પહેલાંનો વિલંબ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"રિપીટ રેટ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"જ્યાં સુધી કી રિલીઝ કરવામાં ન આવે ત્યાં સુધી કીના અક્ષરો રિપીટ કરવા માટે તેને નીચેની તરફ દબાવી રાખો"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> લેઆઉટ"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ડિફૉલ્ટ"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ઑટોમૅટિક રીતે: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2119,7 +2131,7 @@
<string name="color_contrast_preview_email_send_date" msgid="2108702726171600080">"2 દિવસ અગાઉ"</string>
<string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"ફૉલોઅપ કરીએ કે?"</string>
<string name="color_contrast_preview_email_title" msgid="198712116139754823">"વ્યવસાય ટ્રિપ રિપોર્ટ"</string>
- <string name="color_contrast_preview_email_body" msgid="2714343154965937945">"હજી વધુ સહાય માટે, કૃપા કરીને મારો કે હેલનનો સંપર્ક કરો. આ રિપોર્ટ"</string>
+ <string name="color_contrast_preview_email_body" msgid="2714343154965937945">"હજી વધુ સહાય માટે, કૃપા કરીને મારો કે હેલનનો સંપર્ક કરો. આ રિપોર્ટ આ પ્રમાણે હશે"</string>
<string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"ક્લાયન્ટ સંબંધી ખર્ચા"</string>
<string name="color_contrast_about_title" msgid="5939566801408667867">"રંગના કૉન્ટ્રાસ્ટ વિશે"</string>
<string name="accessibility_turn_screen_darker_title" msgid="5986223133285858349">"સ્ક્રીનને વધુ ઘેરી બનાવો"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"પાવર વપરાશ સમાયોજિત કરો"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"સમાવિષ્ટ પૅકેજીસ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ઍપ સામાન્ય રીતે ચાલી રહી છે"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"બૅટરી બદલવાનો સુઝાવ આપવામાં આવે છે"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"બૅટરીની ક્ષમતા અને ચાર્જિંગ પર્ફોર્મન્સ ઘટી ગયું છે અને બૅટરી બદલવાનો સુઝાવ આપવામાં આવે છે."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"બૅટરીનું લેવલ ઓછું છે"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"બૅટરીની આવરદા વધારવા માટે બૅટરી સેવર ચાલુ કરો"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"બૅટરીની આવરદા વધારો"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"આ VPNને ડિસ્કનેક્ટ કરીએ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ડિસ્કનેક્ટ કરો"</string>
<string name="vpn_version" msgid="6344167191984400976">"વર્ઝન"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"વર્ઝન <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN ભૂલી ગયાં"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"અસ્તિત્વમાંની VPN ને બદલીએ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"હંમેશાં ચાલુ VPN સેટ કરીએ?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"અઠવાડિયાના દિવસોમાં સવારે 9થી સાંજે 5 વાગ્યા સુધી\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"કૅલેન્ડર ઇવેન્ટ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} સક્રિય છે}=2{{mode_1} અને {mode_2} સક્રિય છે}=3{{mode_1}, {mode_2} અને {mode_3} સક્રિય છે}one{{mode_1}, {mode_2} અને વધુ # સક્રિય છે}other{{mode_1}, {mode_2} અને વધુ # સક્રિય છે}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 મોડ ઑટોમૅટિક રીતે ચાલુ થઈ શકે છે}one{# મોડ ઑટોમૅટિક રીતે ચાલુ થઈ શકે છે}other{# મોડ ઑટોમૅટિક રીતે ચાલુ થઈ શકે છે}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ખલેલ પાડશો નહીં}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ચાલુ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"સેટ નથી"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"બંધ છે"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"જ્યારે ટૂંકા સમયગાળામાં તમને ઘણા નોટિફિકેશન પ્રાપ્ત થાય, ત્યારે તમારું ડિવાઇસ તેનું વૉલ્યૂમ ઘટાડશે અને 2 મિનિટ સુધી અલર્ટને ઓછા કરશે. કૉલ, અલાર્મ અને પ્રાધાન્યતા ધરાવતી વાતચીતોને અસર થતી નથી. \n\nકૂલડાઉન દરમિયાન પ્રાપ્ત થયેલા નોટિફિકેશનને સ્ક્રીનની સૌથી ઉપરની બાજુએથી નીચેની તરફ સ્ક્રોલ કરીને શોધી શકાય છે."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ઑફિસની પ્રોફાઇલ પર લાગુ કરો"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ઑફિસની પ્રોફાઇલ ઍપ પર લાગુ કરો"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR સહાયક સેવાઓ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"કોઇ ઇન્સ્ટૉલ કરેલી ઍપએ VR સહાયક સેવાઓ તરીકે શરૂ કરવાની વિનંતી કરી નથી."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> માટે VR સેવા ઍક્સેસની મંજૂરી આપીએ?"</string>
@@ -3761,7 +3784,7 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"આ ઍપ નોટિફિકેશન મોકલતી નથી"</string>
<string name="notification_channels" msgid="1502969522886493799">"કૅટેગરી"</string>
<string name="notification_channels_other" msgid="18159805343647908">"અન્ય"</string>
- <string name="no_channels" msgid="4716199078612071915">"આ ઍપએ કોઈ નોટિફિકેશન પોસ્ટ કરી નથી"</string>
+ <string name="no_channels" msgid="4716199078612071915">"આ ઍપ દ્વારા કોઈ નોટિફિકેશન પોસ્ટ થઈ નથી"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"બિનવપરાયેલી કૅટેગરી બતાવો"</string>
<string name="app_settings_link" msgid="6725453466705333311">"ઍપમાંના વધારાના સેટિંગ"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"બિનવપરાયેલી કૅટેગરી બતાવો"</string>
@@ -4279,7 +4302,7 @@
<string name="ethernet_data_template" msgid="1429173767445201145">"<xliff:g id="AMOUNT">^1</xliff:g> ઇથરનેટ ડેટા"</string>
<string name="billing_cycle" msgid="6618424022653876279">"ડેટા સંબંધી ચેતવણી અને મર્યાદા"</string>
<string name="app_usage_cycle" msgid="341009528778520583">"મોબાઇલ ડેટા વપરાશની સાયકલ"</string>
- <string name="cell_data_warning" msgid="5664921950473359634">"ડેટા ચેતવણી <xliff:g id="ID_1">^1</xliff:g>"</string>
+ <string name="cell_data_warning" msgid="5664921950473359634">"ડેટા સંબંધી ચેતવણી <xliff:g id="ID_1">^1</xliff:g>"</string>
<string name="cell_data_limit" msgid="256855024790622112">"ડેટા મર્યાદા <xliff:g id="ID_1">^1</xliff:g>"</string>
<string name="cell_data_warning_and_limit" msgid="8393200831986035724">"ડેટા ચેતવણી <xliff:g id="ID_1">^1</xliff:g> / ડેટા મર્યાદા <xliff:g id="ID_2">^2</xliff:g>"</string>
<string name="operator_warning" msgid="5672761970087591211">"કૅરિઅર ડેટા ગણતરી, ડિવાઇસ ગણતરીથી અલગ હોઈ શકે છે"</string>
@@ -5343,7 +5366,7 @@
<string name="grammatical_gender_title" msgid="8584242850477270828">"વ્યાકરણ અનુસારનું લિંગ"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"વ્યાકરણ અનુસારનું લિંગ પસંદ કરો"</string>
<string name="content_protection_preference_title" msgid="5069260032659193074">"ભ્રામક ઍપ માટે સ્કૅન કરી રહ્યાં છીએ"</string>
- <string name="content_protection_preference_summary" msgid="2252393849408445391">"ફિશિંગ માટે ઍપ પ્રવૃત્તિ ચેક કરો"</string>
+ <string name="content_protection_preference_summary" msgid="2252393849408445391">"ફિશિંગ માટે ઍપ ઍક્ટિવિટી ચેક કરો"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"ભ્રામક ઍપ માટે સ્કૅનિંગનો ઉપયોગ કરો"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"ઑફિસ સંબંધિત ઍપ માટે સ્કૅનિંગનો ઉપયોગ કરો"</string>
<string name="content_protection_preference_subpage_summary" msgid="3595621220981703364"></string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"સ્ટ્રીમ સાંભળો"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> વડે સાંભળવા માટે, ઑડિયો સ્ટ્રીમનો QR કોડ સ્કૅન કરો"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"શેર કરતી વખતે પાસવર્ડમાં ફેરફાર કરી શકાતો નથી. પાસવર્ડ બદલવા માટે, પહેલાં ઑડિયો શેરિંગ બંધ કરો."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"તમારા પાસવર્ડમાં 4-16 અક્ષર હોવા જોઈએ અને તેમાં માત્ર અક્ષરો, અંકો અને પ્રતીકોનો ઉપયોગ થવો જોઈએ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR કોડ સ્કૅનર"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"શું સહાયની જરૂર છે?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"સેટિંગમાં શોધો"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"ફક્ત ડિવાઇસ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"નવા સંપર્કોને કોઈ એકાઉન્ટ સાથે સિંક કરવામાં આવશે નહીં"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ડિફૉલ્ટ તરીકે, સંપર્કોને તમારા ડિવાઇસમાં સાચવવામાં આવશે અને તેને તમારા એકાઉન્ટ સાથે સિંક કરવામાં આવશે"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"કોઈ ડિફૉલ્ટ સેટ નથી"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ડિફૉલ્ટ એકાઉન્ટ સેટ કરવામાં ભૂલ આવી"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"કોઈ ડિફૉલ્ટ સેટ નથી"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"ફક્ત ડિવાઇસ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"શરૂ કરવા માટે કોઈ એકાઉન્ટ ઉમેરો"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"શોધવા માટે વર્તુળ દોરો"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"તમારી સ્ક્રીન પરના કન્ટેન્ટનો ઉપયોગ કરીને શોધવા માટે હોમ બટનને અથવા નૅવિગેશન હૅન્ડલને ટચ કરીને થોડીવાર દબાવી રાખો."</string>
</resources>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index 3b7767f..7ff6293 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ब्रीफ़केस"</item>
+ <item msgid="184985872234062767">"क्लासिकल बिल्डिंग"</item>
+ <item msgid="9189550412466785530">"अपार्टमेंट बिल्डिंग"</item>
+ <item msgid="2142527562511049422">"स्पीच बबल"</item>
+ <item msgid="2548100558260478605">"लोगों का ग्रुप"</item>
+ <item msgid="2270003903304578284">"बल्ब"</item>
+ <item msgid="4793496619091161864">"कैलेंडर"</item>
+ <item msgid="5673625795644364100">"परेशान न करें"</item>
+ <item msgid="1423820834865831361">"दौड़ता हुआ व्यक्ति"</item>
+ <item msgid="2037298830718732608">"गॉल्फ़"</item>
+ <item msgid="2197835014443491074">"जिम डंबल"</item>
+ <item msgid="2730180105015616518">"तैराकी"</item>
+ <item msgid="2666922823253345958">"पैदल चलता हुआ व्यक्ति"</item>
+ <item msgid="8234880356472211396">"बॉल फेंकता हुआ व्यक्ति"</item>
+ <item msgid="4642980625253001443">"किक मारता हुआ व्यक्ति"</item>
+ <item msgid="4324795269518833500">"गेम कंट्रोलर"</item>
+ <item msgid="7789966425125441125">"कलाकार के लिए रंग पटल"</item>
+ <item msgid="663512680597461570">"स्नोफ़्लेक"</item>
+ <item msgid="7952183800501346803">"बीच अंब्रेला"</item>
+ <item msgid="799139025758265891">"वर्कशॉप टूल"</item>
+ <item msgid="8112685757657659269">"पियानो"</item>
+ <item msgid="3861584909935022342">"फ़िल्म रील"</item>
+ <item msgid="5827426100157335512">"किताब"</item>
+ <item msgid="8585828346253128384">"कमल का फूल"</item>
+ <item msgid="8788370542815300188">"व्यक्ति का दिमाग"</item>
+ <item msgid="7287354964767553293">"हेडफ़ोन"</item>
+ <item msgid="2530059623783800987">"टीवी"</item>
+ <item msgid="5307182323469376758">"ट्रेन"</item>
+ <item msgid="4903790544026923026">"कार"</item>
+ <item msgid="5010405583912314582">"कांटा और चाकू"</item>
+ <item msgid="8939998598599064900">"शॉपिंग कार्ट"</item>
+ <item msgid="3379605903308731893">"बच्चा"</item>
+ <item msgid="7808668968550293112">"जानवर का पंजा"</item>
+ <item msgid="1000692647524056504">"स्टार बैज"</item>
+ <item msgid="8270261073421676502">"दो लोग"</item>
+ <item msgid="5767782819651505460">"स्टार"</item>
+ <item msgid="4368451291862729334">"दिल"</item>
+ <item msgid="2613199102208419986">"घर"</item>
+ <item msgid="3022279986430275040">"हाफ़-मून"</item>
+ <item msgid="5421089790869483206">"घड़ी"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6905be2..08772e7 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"नया डिवाइस जोड़ें"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ब्लूटूथ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ब्लूटूथ कल अपने-आप चालू हो जाए"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"ब्लूटूथ बंद करने पर, यह अगले दिन फिर से चालू हो जाता है"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"दाईं मशीन को जोड़ें"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"बाईं मशीन को जोड़ें"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"दूसरे कान की मशीन जोड़ें"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"\'ब्लूटूथ LE Audio\' को बंद करें"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"अगर डिवाइस पर LE Audio हार्डवेयर चलता है, तो \'ब्लूटूथ LE Audio\' को बंद करें."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ब्लूटूथ LE Audio मोड"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ब्लूटूथ LE Audio के ज़रिए ऑडियो ब्रॉडकास्ट करने से जुड़े यूज़र इंटरफ़ेस (यूआई) की झलक दिखाने वाली सेटिंग चालू करें"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"यह सेटिंग चालू करने पर, LE Audio के ज़रिए ऑडियो शेयर करने से जुड़े यूआई की झलक दिखने लगती है. इसमें निजी ऑडियो शेयर करने और प्राइवेट ब्रॉडकास्ट करने से जुड़ी सुविधा की झलक भी शामिल होती है"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"डिवाइस डिटेल में LE Audio टॉगल दिखाएं"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ब्लूटूथ LE Audio के लिए अनुमति वाली सूची को बायपास करें"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio का इस्तेमाल डिफ़ॉल्ट रूप से करें, भले ही अनुमति वाली सूची में शामिल करने के लिए, LE Audio वाले सहायक डिवाइसों की पुष्टि न की गई हो."</string>
@@ -180,7 +183,7 @@
<string name="desc_no_available_supported_locale" msgid="7883271726226947273">"सेटिंग में, इस ऐप्लिकेशन की भाषा चुनने का विकल्प मौजूद नहीं है."</string>
<string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"भाषा, ऐप्लिकेशन में उपलब्ध भाषाओं से अलग हो सकती है. हो सकता है कि कुछ ऐप्लिकेशन के साथ, भाषा की यह सेटिंग काम न करे."</string>
<string name="desc_app_locale_selection_supported" msgid="6744909281573556379">"हर ऐप्लिकेशन के लिए भाषा सेट करें."</string>
- <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"आपका डिवाइस और ऐप्लिकेशन उस भाषा का इस्तेमाल करते हैं जिसे आपने पसंदीदा भाषा की अपनी सूची में पहली भाषा के तौर पर सेट किया है.\n\nकई ऐप्लिकेशन तारीखों, संख्याओं, और इकाइयों को उस देश या इलाके के हिसाब से भी फ़ॉर्मैट करेंगे जहां आपकी पसंदीदा भाषा बोली जाती है. अपने देश या इलाके की जानकारी बदलने के लिए, कोई भाषा जोड़ें और अपना पसंदीदा देश या इलाका चुनें."</string>
+ <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"आपका डिवाइस, उस पर मौजूद ऐप्लिकेशन, और देखी जाने वाली वेबसाइटें उस भाषा का इस्तेमाल करती हैं जिसे आपने अपनी पहली पसंदीदा भाषा के तौर पर सेट किया है. इसके लिए ज़रूरी है कि चुनी गई भाषा उस डिवाइस पर काम करती हो.\n\nकई ऐप्लिकेशन आपकी पसंदीदा भाषा के आधार पर देश या इलाका चुनते हैं और इसी के हिसाब से तारीख, संख्या, और इकाइयों का फ़ॉर्मैट दिखाते हैं."</string>
<string name="desc_notice_of_language_picker" msgid="3449290526457925447">"अगर आपको हर ऐप्लिकेशन के लिए अलग भाषा चुननी है, तो ऐप्लिकेशन की भाषा सेटिंग पर जाएं."</string>
<string name="desc_locale_helper_footer_general" msgid="6112153921151780303">"ऐप्लिकेशन की भाषाओं के बारे में ज़्यादा जानें"</string>
<string name="title_change_system_locale" msgid="8589844586256566951">"क्या सिस्टम की भाषा बदलकर %s करनी है ?"</string>
@@ -250,10 +253,9 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"नेटवर्क और वायरलेस सिग्नल के ज़रिए तारीख और समय अपने-आप सेट होने की सुविधा पाएं"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"टाइम ज़ोन अपने-आप सेट होने की सुविधा"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"अपने आस-पास के मोबाइल नेटवर्क के मुताबिक तारीख और समय अपने-आप सेट होने की सुविधा पाएं"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"उपलब्ध होने पर, डिवाइस की जगह के हिसाब से समय और तारीख अपने-आप सेट होने की सुविधा पाएं"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"जगह और भाषा के हिसाब से समय का फ़ॉर्मैट सेट करें"</string>
- <string name="date_time_24hour" msgid="286679379105653406">"24-घंटे वाले फ़ॉर्मैट का इस्तेमाल करें"</string>
+ <string name="date_time_24hour" msgid="286679379105653406">"24 घंटे वाले फ़ॉर्मैट का इस्तेमाल करें"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"समय"</string>
<string name="time_format_category_title" msgid="7108616745509689991">"समय का फ़ॉर्मैट"</string>
<string name="date_time_set_timezone_title" msgid="790404320569600222">"टाइम ज़ोन"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"उंगली हटाएं और सेंसर को फिर से छूएं"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"फ़िंगरप्रिंट सेंसर इस्तेमाल नहीं किया जा सकता"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"रिपेयर करने की सेवा देने वाली कंपनी से संपर्क करें."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"स्क्रीन के बंद होने पर, उसे फ़िंगरप्रिंट से अनलॉक करने की सुविधा"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"डिवाइस की स्क्रीन बंद होने पर भी, फ़िंगरप्रिंट अनलॉक का इस्तेमाल करें"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"स्क्रीन के बंद होने पर, उसे अनलॉक करने की सुविधा"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"सुरक्षा से जुड़ी और सेटिंग"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"वर्क प्रोफ़ाइल लॉक, एन्क्रिप्शन वगैरह"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"एन्क्रिप्शन, क्रेडेंशियल वगैरह"</string>
@@ -562,7 +567,7 @@
<string name="privacy_header" msgid="5526002421324257007">"निजता"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"वर्क प्रोफ़ाइल"</string>
<string name="private_space_title" msgid="1752064212078238723">"प्राइवेट स्पेस"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"निजी ऐप्लिकेशन को लॉक करके और छिपाकर रखें"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"यहां निजी ऐप्लिकेशन को लॉक करके और छिपाकर रखा जाता है"</string>
<string name="private_space_description" msgid="4059594203775816136">"निजी ऐप्लिकेशन ऐसी जगह पर रखें जहां आप उन्हें लॉक कर सकें या छिपा सकें"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"प्राइवेट स्पेस के लिए लॉक"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"डिवाइस की तरह ही, प्राइवेट स्पेस को अनलॉक किया जा सकता है या कोई दूसरा लॉक सेट किया जा सकता है"</string>
@@ -623,15 +628,15 @@
<string name="private_space_cancel_label" msgid="379259667396956886">"रद्द करें"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"सेट अप करें"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"प्राइवेट स्पेस"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"निजी ऐप्लिकेशन, एक अलग जगह पर छिपाएं या लॉक करें. ज़्यादा सुरक्षा के लिए, किसी Google खाते का इस्तेमाल करें."</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"अपने निजी ऐप्लिकेशन, अलग जगह पर छिपाएं या लॉक करें. ज़्यादा सुरक्षा के लिए, खास तौर पर इसके लिए बनाए Google खाते का इस्तेमाल करें."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"स्पेस कैसे काम करता है"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"अपने स्पेस के लिए Google खाता बनाएं"</b>\n"स्पेस के लिए खास एक ही खाता इस्तेमाल करने से, वह सिंक की गई फ़ाइलों, फ़ोटो, और ईमेल को स्पेस के बाहर आने से रोकता है"</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"अपने स्पेस के लिए Google खाता बनाएं"</b>\n"स्पेस के लिए खास तौर पर खाता बनाकर, सिंक की गई फ़ाइलों, फ़ोटो, और ईमेल को स्पेस के बाहर दिखने से रोका जा सकता है"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"लॉक सेट करें"</b>\n"अपने स्पेस को लॉक करके रखें, ताकि दूसरे लोग उसे खोल न पाएं"</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"ऐप्लिकेशन इंस्टॉल करें"</b>\n"ऐसे ऐप्लिकेशन इंस्टॉल करें जिन्हें आपको अपने स्पेस में निजी रखना है"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"ऐप्लिकेशन इंस्टॉल करें"</b>\n"ऐसे ऐप्लिकेशन इंस्टॉल करें जिन्हें अपने स्पेस में निजी तौर पर रखना है"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"ध्यान रखें"</string>
- <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"स्पेस को लॉक करने से, ऐप्लिकेशन बंद हो जाते हैं"</b>\n"स्पेस को लॉक करने से, स्पेस में मौजूद ऐप्लिकेशन बंद हो जाते हैं, जिस वजह से आपको ऐप्लिकेशन से सूचनाएं नहीं मिलती हैं"</string>
+ <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"स्पेस को लॉक करने से ऐप्लिकेशन बंद हो जाते हैं"</b>\n"स्पेस को लॉक करने से, उसमें मौजूद ऐप्लिकेशन बंद हो जाते हैं. इस वजह से आपको ऐप्लिकेशन से सूचनाएं नहीं मिलतीं"</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"प्राइवेट स्पेस का इस्तेमाल, बैकग्राउंड में चलाए जाने वाले या ज़रूरी सूचनाएं भेजने वाले ऐप्लिकेशन के लिए नहीं किया जा सकता. जैसे, चिकित्सा से जुड़े ऐप्लिकेशन. ऐसा इसलिए है, क्योंकि स्पेस के लॉक होने पर सूचनाएं भेजने की सुविधा और बैकग्राउंड में चल रही गतिविधि बंद हो जाती है.\n\nप्राइवेट स्पेस के लॉक होने पर, उसमें मौजूद ऐप्लिकेशन, \'अनुमतियों को मैनेज करें\' सेक्शन, प्राइवसी डैशबोर्ड, और अन्य सेटिंग में नहीं दिखेंगे.\n\nआपके प्राइवेट स्पेस को किसी नए डिवाइस में ट्रांसफ़र नहीं किया जा सकता. किसी दूसरे डिवाइस में इस्तेमाल करने के लिए, आपको दूसरा प्राइवेट स्पेस सेट अप करना होगा.\n\nआपके डिवाइस को कंप्यूटर से कनेक्ट करने या डिवाइस में, नुकसान पहुंचाने वाले ऐप्लिकेशन इंस्टॉल करने वाला व्यक्ति आपके प्राइवेट स्पेस को ऐक्सेस कर सकता है."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"प्राइवेट स्पेस का इस्तेमाल, बैकग्राउंड में चलाए जाने वाले या ज़रूरी सूचनाएं भेजने वाले ऐप्लिकेशन के लिए नहीं किया जा सकता. जैसे, चिकित्सा से जुड़े ऐप्लिकेशन. ऐसा इसलिए है, क्योंकि स्पेस के लॉक होने पर सूचनाएं भेजने की सुविधा और बैकग्राउंड में चल रही गतिविधि बंद हो जाती है.\n\nप्राइवेट स्पेस के लॉक होने पर, उसमें मौजूद ऐप्लिकेशन, \'अनुमतियों को मैनेज करें\' सेक्शन, प्राइवसी डैशबोर्ड, और अन्य सेटिंग में नहीं दिखेंगे.\n\nआपके प्राइवेट स्पेस को किसी नए डिवाइस पर नहीं ले जाया जा सकता. किसी दूसरे डिवाइस में इस्तेमाल करने के लिए, आपको दूसरा स्पेस सेट अप करना होगा.\n\nआपके डिवाइस को कंप्यूटर से कनेक्ट करने या डिवाइस में, नुकसान पहुंचाने वाले ऐप्लिकेशन इंस्टॉल करने वाला व्यक्ति आपके प्राइवेट स्पेस को ऐक्सेस कर सकता है."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"प्राइवेट स्पेस का इस्तेमाल करना, बैकग्राउंड में चलने या ज़रूरी सूचनाएं भेजने वाले ऐप्लिकेशन के लिए ठीक नहीं होता. जैसे, चिकित्सा से जुड़े ऐप्लिकेशन. ऐसा इसलिए है, क्योंकि स्पेस लॉक होने पर, सूचनाएं भेजने की सुविधाएं और बैकग्राउंड में चल रही गतिविधियां बंद हो जाती हैं.\n\nप्राइवेट स्पेस के लॉक होने पर, उसमें मौजूद ऐप्लिकेशन, \'अनुमतियों को मैनेज करें\' सेक्शन, प्राइवसी डैशबोर्ड, और अन्य सेटिंग में नहीं दिखेंगे.\n\nआपके प्राइवेट स्पेस को किसी नए डिवाइस पर नहीं ले जाया जा सकता. किसी दूसरे डिवाइस में इस्तेमाल करने के लिए, आपको दूसरा स्पेस सेट अप करना होगा.\n\nअगर कोई व्यक्ति आपके डिवाइस को किसी कंप्यूटर से कनेक्ट करता है या डिवाइस में नुकसान पहुंचाने वाले ऐप्लिकेशन इंस्टॉल करता है, तो वह आपके प्राइवेट स्पेस को ऐक्सेस कर सकता है."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"प्राइवेट स्पेस के बारे में ज़्यादा जानें"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"इसमें कुछ समय लगेगा"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"प्राइवेट स्पेस सेट अप किया जा रहा है…"</string>
@@ -1306,7 +1311,7 @@
<string name="dark_ui_text" msgid="4392646155331126666">"गहरे रंग वाली थीम चालू हाेने पर, स्क्रीन का बैकग्राउंड काला हो जाता है. इससे कुछ डिवाइस पर बैटरी ज़्यादा देर तक चलती है. यह थीम तब चालू होती है, जब स्क्रीन की लाइट बंद हो जाती है."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"फ़िलहाल, गहरे रंग वाली थीम आपके बेडटाइम मोड वाले शेड्यूल के हिसाब से लागू है"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"बेडटाइम मोड की सेटिंग"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{मोड से गहरे रंग वाली थीम भी चालू की जा सकती है}=1{{mode_1} से भी गहरे रंग वाली थीम चालू होती है}=2{{mode_1} और {mode_2} से भी गहरे रंग वाली थीम चालू होती है}=3{{mode_1}, {mode_2}, और {mode_3} से भी गहरे रंग वाली थीम चालू होती है}one{{mode_1}, {mode_2}, और # अन्य मोड से भी गहरे रंग वाली थीम चालू होती है}other{{mode_1}, {mode_2}, और # अन्य मोड से भी गहरे रंग वाली थीम चालू होती है}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{मोड के हिसाब से भी गहरे रंग वाली थीम चालू हो सकती है}=1{{mode_1} से भी गहरे रंग वाली थीम चालू हो जाती है}=2{{mode_1} और {mode_2} से भी गहरे रंग वाली थीम चालू हो जाती है}=3{{mode_1}, {mode_2}, और {mode_3} से भी गहरे रंग वाली थीम चालू हो जाती है}one{{mode_1}, {mode_2}, और # अन्य मोड से भी गहरे रंग वाली थीम चालू हो जाती है}other{{mode_1}, {mode_2}, और # अन्य मोड से भी गहरे रंग वाली थीम चालू हो जाती है}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"मोड की सेटिंग"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"सामान्य लेवल से भी कम"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"डिवाइस की रोशनी को सामान्य लेवल से भी कम रखें"</string>
@@ -1835,7 +1840,7 @@
<string name="filter" msgid="9039576690686251462">"फ़िल्टर"</string>
<string name="filter_dlg_title" msgid="3086282431958601338">"फ़िल्टर विकल्प चुनें"</string>
<string name="filter_apps_all" msgid="5705421199299914620">"सभी ऐप्लिकेशन"</string>
- <string name="filter_apps_disabled" msgid="5068011814871004105">"अक्षम किए गए ऐप"</string>
+ <string name="filter_apps_disabled" msgid="5068011814871004105">"बंद किए गए ऐप"</string>
<string name="filter_apps_third_party" msgid="9049447784849114843">"डाउनलोड किए गए"</string>
<string name="filter_apps_running" msgid="535465683273284141">"चल रहे ऐप्लिकेशन"</string>
<string name="not_installed" msgid="5074606858798519449">"इस उपयोगकर्ता के लिए इंस्टॉल नहीं किया गया"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"एक ही बटन को बार-बार दबाने पर, कीबोर्ड तुरंत कोई कार्रवाई नहीं करेगा"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"बाउंस बटन का थ्रेशोल्ड"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"चुनें कि किसी बटन को कितनी देर तक बार-बार दबाने पर कीबोर्ड कोई कार्रवाई नहीं करेगा"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 सेकंड"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 सेकंड"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 सेकंड"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 सेकंड"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 सेकंड"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 सेकंड"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"अपने हिसाब से सेट करें"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"अपने हिसाब से वैल्यू सेट करें"</string>
<string name="slow_keys" msgid="2891452895499690837">"स्लो बटन"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"किसी बटन को दबाने पर स्क्रीन पर होने वाली प्रतिक्रिया के समय में बदलाव करें"</string>
<string name="sticky_keys" msgid="7317317044898161747">"स्टिकी बटन"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"शॉर्टकट के लिए, कई कुंजियों को एक साथ दबाकर रखने के बजाय एक बार में एक कुंजी दबाएं"</string>
<string name="mouse_keys" msgid="6237254627808525540">"माउस का काम करने वाले बटन"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"माउस वाले बटन का इस्तेमाल करें"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"पॉइंटर को कंट्रोल करने के लिए, कीबोर्ड का इस्तेमाल करें"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"माउस रिवर्स स्क्रोलिंग"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"पेज को नीचे ले जाने के लिए, ऊपर की ओर स्क्रोल करें"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"बाएं और दाएं बटन स्वैप करें"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"माउस के बाएं बटन को दाएं बटन की तरह इस्तेमाल करें"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> के लिए माउस का काम करने वाले बटन"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"माउस पॉइंटर को मूव करने के लिए, <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> बटन का इस्तेमाल करें"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"माउस के मुख्य बटन पर क्लिक करने के लिए, <xliff:g id="CLICK_LABEL">%s</xliff:g> बटन का इस्तेमाल करें"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"माउस का मुख्य बटन दबाकर रखने के लिए,<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> बटन का इस्तेमाल करें"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"माउस के मुख्य बटन को रिलीज़ करने के लिए, <xliff:g id="RELEASE_LABEL">%s</xliff:g> बटन का इस्तेमाल करें"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"स्क्रोल मोड को टॉगल करने के लिए, <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> बटन का इस्तेमाल करें. इससे, <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> बटन से व्यू को ऊपर, नीचे, बाएं या दाएं स्क्रोल किया जा सकता है"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"माउस के सेकंडरी बटन पर क्लिक करने के लिए, <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> बटन का इस्तेमाल करें"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"कीबोर्ड शॉर्टकट"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"शॉर्टकट की सूची दिखाएं"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"काम के प्रोफ़ाइल से जुड़े कीबोर्ड और टूल"</string>
@@ -1971,12 +1986,12 @@
<string name="trackpad_settings" msgid="2071131324087677005">"टचपैड"</string>
<string name="trackpad_mouse_settings" msgid="136226693583218429">"टचपैड और माउस"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"पॉइंटर की स्पीड, हाथ के जेस्चर"</string>
- <string name="trackpad_tap_to_click" msgid="1938230946542070746">"टैप टू क्लिक"</string>
+ <string name="trackpad_tap_to_click" msgid="1938230946542070746">"क्लिक करने के लिए टैप करें"</string>
<string name="trackpad_tap_dragging_title" msgid="798644199582480712">"टैप करके खींचें और छोड़ें"</string>
<string name="trackpad_tap_dragging_summary" msgid="5276968646031591058">"चीज़ों को दूसरी जगह ले जाने के लिए, टचपैड पर टैप करके उन्हें चुनें और अपनी उंगली से खींचकर छोड़ें"</string>
<string name="trackpad_touchpad_gesture_title" msgid="7568052847609914436">"टचपैड पर हाथ के जेस्चर"</string>
<string name="trackpad_touchpad_gesture_summary" msgid="6256074591395359124">"टचपैड पर नेविगेशन के लिए हाथ के जेस्चर पसंद के मुताबिक बनाएं"</string>
- <string name="trackpad_reverse_scrolling_title" msgid="422877284529360866">"रिवर्स स्क्रोलिंग"</string>
+ <string name="trackpad_reverse_scrolling_title" msgid="422877284529360866">"नीचे की ओर स्क्रोल करें"</string>
<string name="trackpad_reverse_scrolling_summary" msgid="6048648562887499036">"नीचे की ओर स्क्रोल करने पर, कॉन्टेंट ऊपर की ओर जाता है"</string>
<string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"सबसे नीचे दाईं ओर क्लिक करें"</string>
<string name="trackpad_bottom_right_tap_summary" msgid="4467915480282133447">"टचपैड के सबसे नीचे दाएं कोने पर क्लिक करके अन्य विकल्प पाएं"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> के लिए, कोई नई कुंजी चुनें:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"फ़िज़िकल कीबोर्ड की सुलभता सेटिंग"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"स्टिकी बटन, बाउंस बटन, माउस बटन"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"बटन को दबाकर रखें"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"कीबोर्ड का बटन दबाकर दोहराने में लगने वाला समय"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"दोहराने की दर"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"किसी बटन को दबाकर रखने पर, उस बटन का वर्ण तब तक दोहराया जाएगा, जब तक बटन को छोड़ा नहीं जाता"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> का लेआउट"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"डिफ़ॉल्ट"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"अपने-आप चुना गया: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2237,7 +2248,7 @@
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"स्क्रीन पर सबसे नीचे मौजूद, सुलभता बटन <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> पर टैप करें. सुविधाओं के बीच स्विच करने के लिए, सुलभता बटन को दबाकर रखें."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{स्क्रीन पर नीचे से ऊपर की ओर स्वाइप करें. सुविधाओं के बीच स्विच करने के लिए, ऊपर की ओर स्वाइप करें और दबाकर रखें.}one{स्क्रीन पर # उंगली से नीचे से ऊपर की ओर स्वाइप करें. सुविधाओं के बीच स्विच करने के लिए, स्क्रीन पर # उंगली से ऊपर की ओर स्वाइप करें और दबाकर रखें.}other{स्क्रीन पर # उंगलियों से नीचे से ऊपर की ओर स्वाइप करें. सुविधाओं के बीच स्विच करने के लिए, स्क्रीन पर # उंगलियों से ऊपर की ओर स्वाइप करें और दबाकर रखें.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"और विकल्प"</annotation></string>
- <string name="footer_learn_more_content_description" msgid="8843798273152131341">"<xliff:g id="SERVICE">%1$s</xliff:g> के बारे में ज़्यादा जानें"</string>
+ <string name="footer_learn_more_content_description" msgid="8843798273152131341">"<xliff:g id="SERVICE">%1$s</xliff:g> सुविधा के बारे में ज़्यादा जानें"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"क्विक सेटिंग"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{स्क्रीन पर सबसे ऊपर से नीचे की ओर स्वाइप करें}one{स्क्रीन पर # उंगली से, सबसे ऊपर से नीचे की ओर स्वाइप करें}other{स्क्रीन पर # उंगलियों से, सबसे ऊपर से नीचे की ओर स्वाइप करें}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{स्क्रीन पर ऊपर से नीचे की ओर स्वाइप करें. यह शॉर्टकट, डिवाइस का सेटअप पूरा करने के बाद उपलब्ध होगा.}one{स्क्रीन पर # उंगली से, ऊपर से नीचे की ओर स्वाइप करें. यह शॉर्टकट, डिवाइस का सेटअप पूरा करने के बाद उपलब्ध होगा.}other{स्क्रीन पर # उंगलियों से, ऊपर से नीचे की ओर स्वाइप करें. यह शॉर्टकट, डिवाइस का सेटअप पूरा करने के बाद उपलब्ध होगा.}}"</string>
@@ -2260,7 +2271,7 @@
<string name="accessibility_shortcut_description" msgid="2184693606202133549">"सुविधा के शॉर्टकट को लॉक स्क्रीन से चालू करने की अनुमति दें. आवाज़ कम और ज़्यादा करने वाले दोनों बटन को कुछ सेकंड तक दबाकर रखें."</string>
<string name="accessibility_button_title" msgid="5251235485581552614">"सुलभता बटन"</string>
<string name="accessibility_button_gesture_title" msgid="3573456209050374139">"सुलभता बटन और हाथ के जेस्चर"</string>
- <string name="accessibility_button_intro_text" msgid="80993874471745687">"किसी भी स्क्रीन से, सुलभता सुविधाओं को तुरंत ऐक्सेस करें"</string>
+ <string name="accessibility_button_intro_text" msgid="80993874471745687">"सुलभता सुविधाओं को किसी भी स्क्रीन से तुरंत ऐक्सेस करें"</string>
<string name="accessibility_button_about_title" msgid="3581116105084067926">"सुलभता बटन के बारे में जानकारी"</string>
<string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"सुलभता बटन और हाथ के जेस्चर के बारे में जानकारी"</string>
<string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"सुलभता बटन और हाथ के जेस्चर के बारे में ज़्यादा जानें"</string>
@@ -2273,7 +2284,7 @@
<string name="accessibility_button_size_title" msgid="5785110470538960881">"साइज़"</string>
<string name="accessibility_button_fade_title" msgid="8081993897680588829">"इस्तेमाल न होने पर फ़ेड हो जाए"</string>
<string name="accessibility_button_fade_summary" msgid="7865950833524973709">"कुछ सेकंड के बाद फ़ेड हो जाएगा, ताकि आप आसानी से अपनी स्क्रीन देख सकें"</string>
- <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"इस्तेमाल न होने पर फ़ेड होने का स्तर"</string>
+ <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"इस्तेमाल न होने पर बटन इतना फ़ेड हो जाए"</string>
<string name="accessibility_button_low_label" msgid="4193015407828927741">"पारदर्शी"</string>
<string name="accessibility_button_high_label" msgid="9138077512008190896">"पारदर्शी नहीं है"</string>
<string name="accessibility_button_disabled_button_mode_summary" msgid="1978174613270619492">"नेविगेशन बार के बटन मोड में सेटिंग उपलब्ध नहीं है."</string>
@@ -2415,15 +2426,15 @@
<string name="accessibility_description_state_stopped" msgid="5364752492861199133">"यह सेवा ठीक से काम नहीं कर रही है."</string>
<string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"सुलभता सुविधाओं के शॉर्टकट की सेटिंग"</string>
<string name="enable_quick_setting" msgid="6648073323202243604">"त्वरित सेटिंग में दिखाएं"</string>
- <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"ऐसी समस्या जिसमें लाल रंग हरा दिखता है"</string>
- <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"ऐसी समस्या जिसमें हरा रंग लाल दिखता है"</string>
+ <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"ऐसी समस्या जिसमें हरा रंग लाल दिखता है"</string>
+ <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"ऐसी समस्या जिसमें लाल रंग हरा दिखता है"</string>
<string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"नीला-हरा रंग पहचान न पाना"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"डिसप्ले को ग्रेस्केल में करने की सुविधा"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"इंटेंसिटी"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"ग्रेस्केल मोड या रंग में सुधार करने की सुविधा के बंद होने पर उपलब्ध नहीं है"</string>
<string name="daltonizer_mode_deuteranomaly_summary" msgid="391621040826073327">"लाल-हरे रंग की पहचान न कर पाने की समस्या"</string>
- <string name="daltonizer_mode_protanomaly_summary" msgid="877971556622350648">"हरा-लाल रंग पहचान न पाने की समस्या"</string>
- <string name="daltonizer_mode_tritanomaly_summary" msgid="2428218320118180070">"नीला-हरा और पीला-लाल रंग पहचान न पाने की समस्या"</string>
+ <string name="daltonizer_mode_protanomaly_summary" msgid="877971556622350648">"हरे-लाल रंग की पहचान न कर पाने की समस्या"</string>
+ <string name="daltonizer_mode_tritanomaly_summary" msgid="2428218320118180070">"नीला-हरा और पीला-लाल रंग न पहचान पाने की समस्या"</string>
<string name="reduce_bright_colors_preference_title" msgid="2249314004651574997">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा"</string>
<string name="reduce_bright_colors_switch_title" msgid="1751678397884065312">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करें"</string>
<string name="reduce_bright_colors_shortcut_title" msgid="495648157059202745">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने का शॉर्टकट"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"पावर उपयोग एडजस्ट करें"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"शामिल पैकेज"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ऐप्लिकेशन सामान्य रूप से काम कर रहे हैं"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"बैटरी बदलने की ज़रूरत है"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"बैटरी की क्षमता और चार्जिंग की परफ़ॉर्मेंस कम हो गई है. इसलिए, बैटरी बदलने की ज़रूरत है."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"बैटरी कम है"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"बैटरी लाइफ़ बढ़ाने के लिए, बैटरी सेवर को चालू करें"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"बैटरी लाइफ़ बढ़ाएं"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"इस VPN को डिसकनेक्ट करना चाहते हैं?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"डिसकनेक्ट करें"</string>
<string name="vpn_version" msgid="6344167191984400976">"वर्शन"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"वर्शन <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"इस वीपीएन नेटवर्क को हटाएं"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"मौजूदा वीपीएन को बदलें?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"हमेशा-चालू VPN सेट करें?"</string>
@@ -3025,7 +3037,7 @@
<string name="trusted_credentials_disable_label" msgid="6649583220519447947">"बंद करें"</string>
<string name="trusted_credentials_enable_label" msgid="5551204878588237991">"चालू करें"</string>
<string name="trusted_credentials_remove_label" msgid="8296330919329489422">"अनइंस्टॉल करें"</string>
- <string name="trusted_credentials_trust_label" msgid="4841047312274452474">"भरोसा"</string>
+ <string name="trusted_credentials_trust_label" msgid="4841047312274452474">"ट्रस्ट"</string>
<string name="trusted_credentials_enable_confirmation" msgid="6686528499458144754">"सिस्टम CA प्रमाणपत्र सक्षम करना है?"</string>
<string name="trusted_credentials_disable_confirmation" msgid="5131642563381656676">"सिस्टम CA प्रमाणपत्र अक्षम करना है?"</string>
<string name="trusted_credentials_remove_confirmation" msgid="3420345440353248381">"स्थायी रूप से उपयोगकर्ता CA प्रमाणपत्र निकालना चाहते हैं?"</string>
@@ -3387,7 +3399,7 @@
<string name="emergency_tone_vibrate" msgid="6282296789406984698">"कंपन (वाइब्रेशन)"</string>
<string name="boot_sounds_title" msgid="5033062848948884111">"चालू होने की ध्वनि"</string>
<string name="live_caption_title" msgid="8617086825712756983">"लाइव कैप्शन"</string>
- <string name="live_caption_summary" msgid="2898451867595161809">"ऑडियो से अपने-आप कैप्शन बनना"</string>
+ <string name="live_caption_summary" msgid="2898451867595161809">"ऑडियो से अपने-आप कैप्शन बन जाए"</string>
<string name="spatial_audio_wired_headphones" msgid="2237355789145828648">"वायर वाले हेडफ़ोन"</string>
<string name="spatial_audio_text" msgid="8201387855375146000">"डिवाइस के साथ काम करने वाले मीडिया के ऑडियो का बेहतर तरीके से आनंद लें"</string>
<string name="spatial_summary_off" msgid="8272678804629774378">"बंद है"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"सोमवार से शुक्रवार, सुबह 9 से 5 बजे तक\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"कैलेंडर इवेंट"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} चालू है}=2{{mode_1} और {mode_2} चालू हैं}=3{{mode_1}, {mode_2}, और {mode_3} चालू हैं}one{{mode_1}, {mode_2}, और # अन्य मोड चालू है}other{{mode_1}, {mode_2}, और # अन्य मोड चालू हैं}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 मोड अपने-आप चालू हो सकता है}one{# मोड अपने-आप चालू हो सकता है}other{# मोड अपने-आप चालू हो सकते हैं}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{परेशान न करें}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"चालू है"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"सेट नहीं है"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"बंद है"</string>
@@ -3434,8 +3446,8 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"बदलाव करें"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"शेड्यूल"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"शेड्यूल"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"अपने-आप चालू होने की सुविधा"</string>
- <string name="zen_mode_set_calendar_title" msgid="609741570346510347">"इवेंट का शेड्यूल"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"यह सुविधा अपने-आप कब चालू हो"</string>
+ <string name="zen_mode_set_calendar_title" msgid="609741570346510347">"इवेंट के शेड्यूल के लिए"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"इवेंट के दौरान मोड चालू करें"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"जब न्योते का यह जवाब आए"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"समय के हिसाब से शेड्यूल करें"</string>
@@ -3469,7 +3481,7 @@
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"गहरे रंग वाले बैकग्राउंड का इस्तेमाल करने के लिए, डिवाइस की थीम को बदलें. इससे आंखों को आराम मिलता है"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{डिसप्ले में कोई बदलाव नहीं किया गया}=1{{effect_1}}=2{{effect_1} और {effect_2}}=3{{effect_1}, {effect_2}, और {effect_3}}one{{effect_1}, {effect_2}, और # अन्य}other{{effect_1}, {effect_2}, और # अन्य}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"सभी सूचनाओं को अनुमति दें"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"लोग, ऐप्लिकेशन, और आवाज़ें, प्राथमिकता मोड को बायपास कर सकती हैं"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"लोग, ऐप्लिकेशन, और आवाज़ें, इस मोड को बायपास कर सकती हैं"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"फ़िल्टर की गई सूचनाओं के लिए विकल्प"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"\'परेशान न करें\' मोड चालू होने पर"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"सूचनाएं आने पर कोई आवाज़ सुनाई न दे"</string>
@@ -3519,7 +3531,7 @@
<string name="zen_mode_sound_summary_on_with_info" msgid="4803606180235742003">"चालू है / <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="zen_mode_sound_summary_on" msgid="9077659040104989899">"चालू है"</string>
<string name="zen_mode_duration_summary_always_prompt" msgid="7658172853423383037">"हर बार पूछें"</string>
- <string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"जब तक बंद नहीं की जाती"</string>
+ <string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"जब तक बंद नहीं किया जाता"</string>
<string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 घंटा}one{# घंटा}other{# घंटे}}"</string>
<string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 मिनट}one{# मिनट}other{# मिनट}}"</string>
<string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{बंद है}=1{बंद है / 1 शेड्यूल अपने-आप चालू हो सकता है}one{बंद है / # शेड्यूल अपने-आप चालू हो सकता है}other{बंद है / # शेड्यूल अपने-आप चालू हो सकते हैं}}"</string>
@@ -3651,7 +3663,7 @@
<string name="clear" msgid="5092178335409471100">"मिटाएं"</string>
<string name="clear_conversation" msgid="5564321180363279096">"<xliff:g id="CONVERSATION_NAME">%1$s</xliff:g> मिटाएं"</string>
<string name="conversation_onboarding_title" msgid="5194559958353468484">"यहां ऐसी बातचीत दिखेंगी जो अहम हैं. वे बातचीत भी दिखेंगी जिनकी सेटिंग में बदलाव किए गए हैं"</string>
- <string name="conversation_onboarding_summary" msgid="2484845363368486941">"जब किसी बातचीत को अहम के तौर पर मार्क किया जाता है या उसकी सेटिंग में कोई बदलाव किया जाता है, तो वह यहां दिखेगी. \n\nबातचीत की सेटिंग बदलने के लिए: \nपुल-डाउन शेड खोलने के लिए, स्क्रीन पर ऊपर से नीचे की ओर स्वाइप करें. इसके बाद, किसी बातचीत को दबाकर रखें."</string>
+ <string name="conversation_onboarding_summary" msgid="2484845363368486941">"किसी बातचीत को अहम के तौर पर मार्क करने या उसकी सेटिंग में कोई बदलाव करने पर, वह यहां दिखेगी. \n\nबातचीत की सेटिंग बदलने के लिए: \nपुल-डाउन शेड खोलने के लिए, स्क्रीन पर ऊपर से नीचे की ओर स्वाइप करें. इसके बाद, किसी बातचीत को दबाकर रखें."</string>
<string name="notification_importance_min_title" msgid="7676541266705442501">"छोटा करें"</string>
<string name="notification_importance_high_title" msgid="394129291760607808">"स्क्रीन पर दिखाएं"</string>
<string name="notification_silence_title" msgid="4085829874452944989">"साइलेंट मोड पर सेट की गई सूचनाएं दिखाएं"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"कम समय में कई सूचनाएं मिलने पर, दो मिनट के लिए आपका डिवाइस इन सूचनाओं से होने वाली आवाज़ों को कम करेगा और स्क्रीन पर कम सूचनाएं दिखाएगा. हालांकि, कॉल, अलार्म, और अहम बातचीत से जुड़ी सूचनाएं अब भी पहले की तरह ही मिलती रहेंगी. \n\n इस सेटिंग के चालू रहने के दौरान मिली सभी सूचनाएं देखने के लिए, स्क्रीन पर सबसे ऊपर से नीचे की ओर स्वाइप करें."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"वर्क प्रोफ़ाइल पर लागू करें"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"वर्क प्रोफ़ाइल के ऐप्लिकेशन पर लागू करें"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"वीआर के साथ काम करने वाली सेवाएं"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"डिवाइस पर मौजूद किसी भी ऐप्लिकेशन ने वीआर के साथ काम करने वाली सेवा के तौर पर चलाए जाने का अनुरोध नहीं किया है."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> को वीआर सेवा के इस्तेमाल की अनुमति दें?"</string>
@@ -3759,11 +3781,11 @@
<string name="channel_notifications_off_desc" msgid="6202042207121633488">"आपके अनुरोध पर, Android इस कैटगरी की सूचनाओं को इस डिवाइस पर ब्लॉक कर रहा है"</string>
<string name="channel_group_notifications_off_desc" msgid="9096417708500595424">"आपके अनुरोध पर, Android इस तरह की सूचनाओं को इस डिवाइस पर आने से रोक रहा है"</string>
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"यह ऐप्लिकेशन सूचनाएं नहीं भेजता"</string>
- <string name="notification_channels" msgid="1502969522886493799">"कैटगरी"</string>
+ <string name="notification_channels" msgid="1502969522886493799">"सूचना भेजने के चैनल"</string>
<string name="notification_channels_other" msgid="18159805343647908">"अन्य"</string>
- <string name="no_channels" msgid="4716199078612071915">"इस ऐप्लिकेशन ने कोई भी सूचना पोस्ट नहीं की है"</string>
- <string name="no_recent_channels" msgid="5068574296267584043">"इस्तेमाल नहीं की गई कैटगरी दिखाएं"</string>
- <string name="app_settings_link" msgid="6725453466705333311">"ऐप्लिकेशन की दूसरी सेटिंग"</string>
+ <string name="no_channels" msgid="4716199078612071915">"इस ऐप्लिकेशन ने कोई भी सूचना नहीं भेजी है"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"सूचना भेजने के लिए जिन चैनल का इस्तेमाल नहीं किया गया उन्हें दिखाएं"</string>
+ <string name="app_settings_link" msgid="6725453466705333311">"ऐप्लिकेशन की अन्य सेटिंग"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"इस्तेमाल न हुई कैटगरी दिखाएं"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"इस्तेमाल न हुई कैटगरी छिपाएं"</string>
<string name="deleted_channels" msgid="8489800381509312964">"{count,plural, =1{# चैनल मिटाया गया}one{# चैनल मिटाया गया}other{# चैनल मिटाए गए}}"</string>
@@ -3829,7 +3851,7 @@
<string name="zen_mode_calls_title" msgid="2078578043677037740">"कॉल"</string>
<string name="zen_mode_calls" msgid="7653245854493631095">"कॉल"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"कॉल"</string>
- <string name="zen_mode_calls_header" msgid="8379225445095856726">"ऐसे कॉल जो \'परेशान न करें\' मोड को बायपास कर सकते हैं"</string>
+ <string name="zen_mode_calls_header" msgid="8379225445095856726">"जो \'परेशान न करें\' मोड को बायपास कर सकते हैं"</string>
<string name="zen_mode_calls_footer" msgid="2008079711083701243">"जिन कॉल को अनुमति है उनके आने पर आवाज़ आए, यह पक्का करने के लिए देखें कि आपका डिवाइस रिंग मोड पर सेट हो"</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>’ के लिए आने वाले कॉल ब्लॉक कर दिए गए हैं. आपके पास सेटिंग में बदलाव करके दोस्तों, परिवार के लोगों या दूसरे संपर्कों को आप तक पहुंचने की मंज़ूरी देने का विकल्प है."</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"स्टार के निशान वाले संपर्क"</string>
@@ -3845,8 +3867,8 @@
<string name="zen_mode_all_calls_summary" msgid="7337907849083824698">"सभी कॉल \'परेशान न करें\' मोड को बायपास कर सकते हैं"</string>
<string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{कोई संपर्क नहीं}=1{1 संपर्क}one{# संपर्क}other{# संपर्क}}"</string>
<string name="zen_mode_from_anyone" msgid="6027004263046694174">"कोई भी"</string>
- <string name="zen_mode_from_contacts" msgid="2989933306317064818">"संपर्कों के मैसेज"</string>
- <string name="zen_mode_from_starred" msgid="8616516644241652287">"स्टार के निशान वाले संपर्कों के मैसेज"</string>
+ <string name="zen_mode_from_contacts" msgid="2989933306317064818">"संपर्क"</string>
+ <string name="zen_mode_from_starred" msgid="8616516644241652287">"स्टार के निशान वाले संपर्क"</string>
<string name="zen_mode_from_contacts_settings" msgid="853428575138439415">"संपर्क सेटिंग"</string>
<string name="zen_mode_from_starred_settings" msgid="3389516761063134119">"स्टार के निशान वाले संपर्कों से जुड़ी सेटिंग"</string>
<string name="zen_mode_none_calls" msgid="2047166006414016327">"कोई नहीं"</string>
@@ -3862,7 +3884,7 @@
<string name="zen_mode_system" msgid="7301665021634204942">"छूने पर आने वाली आवाज़ें"</string>
<string name="zen_mode_system_summary" msgid="7225581762792177522">"कीबोर्ड और दूसरे बटन से आने वाली आवाज़ें"</string>
<string name="zen_mode_system_list" msgid="2256218792042306434">"स्क्रीन छूने पर आने वाली आवाज़"</string>
- <string name="zen_mode_system_list_first" msgid="8590078626001067855">"छूने पर आने वाली आवाज़ें"</string>
+ <string name="zen_mode_system_list_first" msgid="8590078626001067855">"टच साउंड"</string>
<string name="zen_mode_reminders" msgid="1970224691551417906">"रिमाइंडर"</string>
<string name="zen_mode_reminders_summary" msgid="3961627037429412382">"टास्क और रिमाइंडर की सूचनाएं"</string>
<string name="zen_mode_reminders_list" msgid="3133513621980999858">"रिमाइंडर"</string>
@@ -3888,7 +3910,7 @@
<string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"ऐप्लिकेशन जोड़ें"</string>
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"सभी सूचनाएं"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"कुछ सूचनाएं"</string>
- <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"अगर आपने ऐप्लिकेशन के लिए \'परेशान न करें\' मोड पर सेट किया हुआ है, तब भी चुने हुए लोग आपसे संपर्क कर सकते हैं"</string>
+ <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"अगर आपने ऐप्लिकेशन के लिए \'परेशान न करें\' मोड सेट किया हुआ है, तब भी चुने हुए लोग आपसे संपर्क कर सकते हैं"</string>
<string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{कोई भी ऐप्लिकेशन \'परेशान न करें\' मोड को बायपास नहीं कर सकता}=1{{app_1} \'परेशान न करें\' मोड को बायपास कर सकता है}=2{{app_1} और {app_2} \'परेशान न करें\' मोड को बायपास कर सकते हैं}=3{{app_1}, {app_2}, और {app_3} \'परेशान न करें\' मोड को बायपास कर सकते हैं}one{{app_1}, {app_2}, और # अन्य ऐप्लिकेशन \'परेशान न करें\' मोड को बायपास कर सकते हैं}other{{app_1}, {app_2}, और # अन्य ऐप्लिकेशन \'परेशान न करें\' मोड को बायपास कर सकते हैं}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"ऐप्लिकेशन"</string>
<string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"वे सूचनाएं जो \'परेशान न करें\' मोड को बायपास कर सकती हैं"</string>
@@ -3896,7 +3918,7 @@
<string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{कोई भी आवाज़ \'परेशान न करें\' मोड को बायपास नहीं कर सकती}=1{{sound_category_1} की आवाज़ \'परेशान न करें\' मोड को बायपास कर सकती है}=2{{sound_category_1} और {sound_category_2} की आवाज़ें \'परेशान न करें\' मोड को बायपास कर सकती हैं}=3{{sound_category_1}, {sound_category_2}, और {sound_category_3} की आवाज़ें \'परेशान न करें\' मोड को बायपास कर सकती हैं}one{{sound_category_1}, {sound_category_2}, और # अन्य आवाज़ \'परेशान न करें\' मोड को बायपास कर सकती है}other{{sound_category_1}, {sound_category_2}, और # अन्य आवाज़ें \'परेशान न करें\' मोड को बायपास कर सकती हैं}}"</string>
<string name="zen_mode_sounds_none" msgid="6557474361948269420">"कोई भी आवाज़ \'परेशान न करें\' मोड को बायपास नहीं कर सकती"</string>
<string name="zen_mode_people_none" msgid="4613147461974255046">"कोई भी व्यक्ति \'परेशान न करें\' मोड को बायपास नहीं कर सकता"</string>
- <string name="zen_mode_people_some" msgid="9101872681298810281">"कुछ चुने हुए लोग \'परेशान न करें\' मोड को बायपास कर सकते हैं"</string>
+ <string name="zen_mode_people_some" msgid="9101872681298810281">"चुने गए कुछ लोग, \'परेशान न करें\' मोड को बायपास कर सकते हैं"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"बार-बार कॉल करने वालों (कॉलर) से परेशानी हो सकती है"</string>
<string name="zen_mode_people_all" msgid="311036110283015205">"कोई भी व्यक्ति \'परेशान न करें\' मोड को बायपास कर सकता है"</string>
<string name="zen_mode_repeat_callers" msgid="2270356100287792138">"बार-बार कॉल करने वाले (कॉलर)"</string>
@@ -3930,7 +3952,7 @@
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"जानकारी और सेटिंग <xliff:g id="APP_NAME">%1$s</xliff:g> में दिखेंगी"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"इन्हें <xliff:g id="APP_NAME">%1$s</xliff:g> मैनेज कर रहा है"</string>
<string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"<xliff:g id="MODE_NAME">%1$s</xliff:g> को बंद करना है?"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"सुविधा बंद होने पर यह मोड चालू नहीं होगा"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"यह मोड बंद करने पर दोबारा कभी चालू नहीं होगा"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"बंद करें"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> को चालू करना है?"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"यह मोड सेटिंग के हिसाब से अपने-आप चालू हो सकता है"</string>
@@ -3943,7 +3965,7 @@
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"शांत माहौल पाने के लिए, ध्यान भटकाने वाली सभी सूचनाओं वगैरह को बंद करें"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"अलग-अलग उपयोगकर्ताओं के हिसाब से, डिवाइस का अनुभव और सेटिंग तय करें"</string>
<string name="zen_mode_blurb_generic" msgid="3041601339807075625">"रुकावटों को कम करने के लिए, सिर्फ़ ज़रूरी लोगों और ऐप्लिकेशन को ही सूचना वगैरह भेजने की अनुमति दें"</string>
- <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"एक रेगुलर शेड्यूल के मुताबिक काम करने वाला कोई मोड सेट करें"</string>
+ <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"रेगुलर शेड्यूल के हिसाब से काम करने वाला कोई मोड सेट करें"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"अपने डिवाइस को, दिन भर के इवेंट के साथ सिंक करके रखें"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"ताज़गी के साथ दिन की शुरुआत करें"</string>
<string name="zen_mode_inspiration_driving" msgid="8237825783857483135">"गाड़ी चलाते समय सबसे पहले सुरक्षा को अहमियत दें"</string>
@@ -3999,7 +4021,7 @@
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"समर्थित लिंक"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"अन्य डिफ़ॉल्ट प्राथमिकताएं"</string>
<string name="app_launch_add_link" msgid="8622558044530305811">"लिंक जोड़ें"</string>
- <string name="app_launch_footer" msgid="4521865035105622557">"कोई ऐप्लिकेशन, लिंक की पुष्टि कर सकता है कि वे सुरक्षित हैं या नहीं. सुरक्षित पाए जाने पर लिंक को अनुमति दी जाती है कि वे उस ऐप्लिकेशन में अपने-आप खुल सकें."</string>
+ <string name="app_launch_footer" msgid="4521865035105622557">"कोई ऐप्लिकेशन इस बात की पुष्टि कर सकता है कि कोई लिंक सुरक्षित है या नहीं. जब लिंक सुरक्षित पाया जाता है, तभी अनुमति दी जाती है कि वह उस ऐप्लिकेशन में अपने-आप खुल सके."</string>
<string name="app_launch_verified_links_title" msgid="621908751569155356">"{count,plural, =1{# लिंक की पुष्टि हो चुकी है}one{# लिंक की पुष्टि हो चुकी है}other{# लिंक की पुष्टि हो चुकी है}}"</string>
<string name="app_launch_verified_links_message" msgid="190871133877476176">"{count,plural, =1{इस लिंक की पुष्टि हो चुकी है. यह अपने-आप ही इस ऐप्लिकेशन में खुलता है.}one{इस लिंक की पुष्टि हो चुकी है. यह अपने-आप ही इस ऐप्लिकेशन में खुलता है.}other{इन लिंक की पुष्टि हो चुकी है. ये अपने-आप ही इस ऐप्लिकेशन में खुलते हैं.}}"</string>
<string name="app_launch_dialog_ok" msgid="1446157681861409861">"ठीक है"</string>
@@ -4156,7 +4178,7 @@
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"क्या आपको <xliff:g id="APP">%1$s</xliff:g> के लिए मोड का ऐक्सेस देना है?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"यह ऐप्लिकेशन इन सेटिंग को ऐक्सेस कर सकेगा: \'परेशान न करें\' मोड को चालू/बंद करना, मोड को मैनेज और चालू करना, और इससे जुड़ी सेटिंग में बदलाव करना."</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"क्या आपको <xliff:g id="APP">%1$s</xliff:g> के लिए, मोड का ऐक्सेस वापस लेना है?"</string>
- <string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"इस ऐप्लिकेशन के बनाए गए सभी मोड हटा दिए जाएंगे."</string>
+ <string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"इस ऐप्लिकेशन ने जो भी मोड बनाए हैं वे सभी हटा दिए जाएंगे."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"ऑप्टिमाइज़ ना करें"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"ऑप्टिमाइज़ करें"</string>
<string name="ignore_optimizations_on_desc" msgid="1280043916460939932">"इससे आपके डिवाइस की बैटरी तेज़ी से खर्च हो सकती है. यह सेटिंग चालू करने के बाद, ऐप्लिकेशन को बैकग्राउंड में बैटरी इस्तेमाल करने से नहीं रोका जाएगा."</string>
@@ -4454,13 +4476,13 @@
<string name="one_handed_mode_enabled" msgid="3396864848786359651">"वन-हैंडेड मोड का इस्तेमाल करें"</string>
<string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"वन-हैंडेड मोड का शॉर्टकट"</string>
<string name="keywords_one_handed" msgid="969440592493034101">"वन-हैंडेड ऐक्सेस"</string>
- <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"इनके लिए नीचे स्वाइप करें"</string>
+ <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"नीचे की ओर स्वाइप करें:"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"इसके लिए शॉर्टकट का इस्तेमाल करें"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"स्क्रीन के ऊपरी आधे हिस्से को नीचे की ओर स्वाइप करें, ताकि एक हाथ से फ़ोन का इस्तेमाल करने में आसानी हो"</string>
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"वन-हैंडेड मोड का इस्तेमाल कैसे करें"</b>\n" • पक्का करें कि सिस्टम नेविगेशन की सेटिंग में, जेस्चर वाला नेविगेशन चुना गया है\n • स्क्रीन के निचले किनारे से नीचे की ओर स्वाइप करें"</string>
- <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"स्क्रीन को नीचे की ओर खींचें"</string>
+ <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"टॉप स्क्रीन को नीचे लाने के लिए"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"अब स्क्रीन के ऊपरी हिस्से को अपने हिसाब से कहीं भी खींचा जा सकता है."</string>
- <string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"सूचनाएं दिखाएं"</string>
+ <string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"सूचनाएं दिखाने के लिए"</string>
<string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"सूचनाएं और सेटिंग दिखेंगी."</string>
<string name="ambient_display_summary" msgid="2650326740502690434">"समय, सूचनाएं और दूसरी जानकारी देखने के लिए, फ़ोन की स्क्रीन पर दो बार टैप करें."</string>
<string name="ambient_display_wake_screen_title" msgid="7637678749035378085">"चालू करने का डिसप्ले"</string>
@@ -4895,7 +4917,7 @@
<string name="sim_onboarding_next" msgid="6415025179929475355">"अगले पेज पर जाएं"</string>
<string name="sim_onboarding_progressbar_turning_sim_on" msgid="1163318788393361574">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> को चालू किया जा रहा है…"</string>
<string name="mobile_network_spn_title" msgid="3053793174495329077">"मोबाइल नेटवर्क"</string>
- <string name="imei_primary" msgid="5312232202518974440">"आईएमईआई (मुख्य)"</string>
+ <string name="imei_primary" msgid="5312232202518974440">"IMEI (मुख्य)"</string>
<string name="meid_primary" msgid="3256732684155678106">"एमईआईडी (मुख्य)"</string>
<string name="mobile_network_phone_number_title" msgid="2090794402855021784">"फ़ोन नंबर"</string>
<string name="mobile_network_sim_label_color_title" msgid="2401352348041132876">"सिम का लेबल और रंग"</string>
@@ -5029,7 +5051,7 @@
<string name="default_app_none" msgid="5420632042222036264">"कोई नहीं"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"यह विकल्प अब मान्य नहीं है. फिर से कोशिश करें."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"पावर बटन को दबाकर रखें"</string>
- <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"इन विकल्पों को ऐक्सेस करने के लिए, पावर बटन दबाकर रखें"</string>
+ <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"इस विकल्प को ऐक्सेस करने के लिए, पावर बटन दबाकर रखें"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"पावर मेन्यू"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"डिजिटल असिस्टेंट"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"डिजिटल असिस्टेंट को ऐक्सेस करें"</string>
@@ -5049,7 +5071,7 @@
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"लॉक स्क्रीन से"</string>
<string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"डिवाइस कंट्रोल इस्तेमाल करें"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"इसका इस्तेमाल करने के लिए, सबसे पहले \"डिवाइस कंट्रोल दिखाएं\" को चालू करें"</string>
- <string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"लॉक स्क्रीन पर कॉन्टेंट के हिसाब से घड़ी का साइज़ बदल जाए"</string>
+ <string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"लॉक स्क्रीन पर कॉन्टेंट के हिसाब से घड़ी का साइज़ बदल जाता है"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"डाइनैमिक क्लॉक"</string>
<string name="lockscreen_quick_affordances_title" msgid="8615741551327565793">"शॉर्टकट"</string>
<plurals name="lockscreen_quick_affordances_summary" formatted="false" msgid="4225396036524703997">
@@ -5283,7 +5305,7 @@
<string name="user_aspect_ratio_4_3" msgid="5196232982878982220">"4:3"</string>
<string name="user_aspect_ratio_option_a11y" msgid="1235801996029095219">"<xliff:g id="DENOMINATOR">%2$s</xliff:g> का <xliff:g id="NUMERATOR">%1$s</xliff:g>"</string>
<string name="app_aspect_ratio_footer" msgid="4029509301182067475">"आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बदलने पर ऐप्लिकेशन रीस्टार्ट होगा. इससे वे बदलाव मिट सकते हैं जिन्हें सेव नहीं किया गया है. ऐसा हो सकता है कि कुछ ऐप्लिकेशन, हर तरह के आसपेक्ट रेशियो के हिसाब से ऑप्टिमाइज़ न हो पाएं."</string>
- <string name="aspect_ratio_experimental_title" msgid="9088785421062044831">"आसपेक्ट रेशियो (एक्सपेरिमेंट के तौर पर उपलब्ध)"</string>
+ <string name="aspect_ratio_experimental_title" msgid="9088785421062044831">"आसपेक्ट रेशियो (आज़माने के लिए)"</string>
<string name="aspect_ratio_experiment_title" msgid="128614319422121040">"आसपेक्ट रेशियो (एक्सपेरिमेंट)"</string>
<string name="aspect_ratio_labs_title" msgid="6733893837442759383">"आसपेक्ट रेशियो (लैब)"</string>
<string name="aspect_ratio_experimental_label" msgid="6319009297672567578">"एक्सपेरिमेंट के तौर पर उपलब्ध"</string>
@@ -5343,7 +5365,7 @@
<string name="grammatical_gender_title" msgid="8584242850477270828">"व्याकरण के हिसाब से लिंग"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"व्याकरण के हिसाब से लिंग चुनें"</string>
<string name="content_protection_preference_title" msgid="5069260032659193074">"धोखाधड़ी वाले ऐप्लिकेशन का पता लगाने के लिए स्कैनिंग सुविधा"</string>
- <string name="content_protection_preference_summary" msgid="2252393849408445391">"फ़िशिंग का पता लगाने के लिए, ऐप्लिकेशन में की गई गतिविधि की जांच करें"</string>
+ <string name="content_protection_preference_summary" msgid="2252393849408445391">"फ़िशिंग का पता लगाने के लिए, ऐप्लिकेशन की गतिविधि की जांच करें"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"स्कैनिंग सुविधा से धोखाधड़ी वाले ऐप्लिकेशन का पता लगाएं"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"स्कैनिंग सुविधा से, वर्क प्रोफ़ाइल में मौजूद धोखाधड़ी वाले ऐप्लिकेशन का पता लगाएं"</string>
<string name="content_protection_preference_subpage_summary" msgid="3595621220981703364"></string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"स्ट्रीम सुनें"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> पर सुनने के लिए, ऑडियो स्ट्रीम का क्यूआर कोड स्कैन करें"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"शेयर करने के दौरान पासवर्ड में बदलाव नहीं किया जा सकता. पासवर्ड बदलने के लिए, पहले ऑडियो शेयर करने की सुविधा बंद करें."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"आपके पासवर्ड में 4 से 16 वर्ण होने चाहिए. इसके लिए, सिर्फ़ अक्षर, नंबर, और सिंबल इस्तेमाल करें"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"क्यूआर कोड स्कैनर"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"मदद चाहिए?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"सेटिंग खोजें"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"संपर्क सिर्फ़ डिवाइस में सेव करें"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"नए संपर्क किसी खाते से सिंक नहीं किए जाएंगे"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"डिफ़ॉल्ट रूप से, संपर्क आपके डिवाइस में सेव हो जाएंगे और आपके खाते से सिंक हो जाएंगे"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"डिफ़ॉल्ट खाता सेट नहीं किया गया है"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"डिफ़ॉल्ट खाता सेट करने में गड़बड़ी हुई"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"कोई डिफ़ॉल्ट खाता सेट नहीं किया गया है"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"सिर्फ़ डिवाइस का इस्तेमाल करें"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"सिंक करने के लिए कोई खाता जोड़ें"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"सर्कल बनाकर ढूंढें"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"स्क्रीन पर दिख रहे कॉन्टेंट की मदद से कोई चीज़ खोजने के लिए, होम बटन या नेविगेशन हैंडल को दबाकर रखें."</string>
</resources>
diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml
index 2262c33..baef0e8 100644
--- a/res/values-hr/arrays.xml
+++ b/res/values-hr/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktovka"</item>
+ <item msgid="184985872234062767">"Klasična zgrada"</item>
+ <item msgid="9189550412466785530">"Stambena zgrada"</item>
+ <item msgid="2142527562511049422">"Govorni oblačić"</item>
+ <item msgid="2548100558260478605">"Grupa ljudi"</item>
+ <item msgid="2270003903304578284">"Žarulja"</item>
+ <item msgid="4793496619091161864">"Kalendar"</item>
+ <item msgid="5673625795644364100">"Ne uznemiravaj"</item>
+ <item msgid="1423820834865831361">"Osoba trči"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Bučica za teretanu"</item>
+ <item msgid="2730180105015616518">"Plivanje"</item>
+ <item msgid="2666922823253345958">"Osoba pješači"</item>
+ <item msgid="8234880356472211396">"Osoba baca loptu"</item>
+ <item msgid="4642980625253001443">"Osoba udara"</item>
+ <item msgid="4324795269518833500">"Kontroler za videoigre"</item>
+ <item msgid="7789966425125441125">"Umjetnička paleta boja"</item>
+ <item msgid="663512680597461570">"Snježna pahuljica"</item>
+ <item msgid="7952183800501346803">"Suncobran za plažu"</item>
+ <item msgid="799139025758265891">"Radionički alati"</item>
+ <item msgid="8112685757657659269">"Klavir"</item>
+ <item msgid="3861584909935022342">"Filmska vrpca"</item>
+ <item msgid="5827426100157335512">"Knjiga"</item>
+ <item msgid="8585828346253128384">"Lotosov cvijet"</item>
+ <item msgid="8788370542815300188">"Um osobe"</item>
+ <item msgid="7287354964767553293">"Slušalice"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Vlak"</item>
+ <item msgid="4903790544026923026">"Automobil"</item>
+ <item msgid="5010405583912314582">"Vilica i nož"</item>
+ <item msgid="8939998598599064900">"Košarica"</item>
+ <item msgid="3379605903308731893">"Dijete"</item>
+ <item msgid="7808668968550293112">"Životinjska šapa"</item>
+ <item msgid="1000692647524056504">"Značka sa zvjezdicom"</item>
+ <item msgid="8270261073421676502">"Dvije osobe"</item>
+ <item msgid="5767782819651505460">"Zvijezda"</item>
+ <item msgid="4368451291862729334">"Srce"</item>
+ <item msgid="2613199102208419986">"Kuća"</item>
+ <item msgid="3022279986430275040">"Polumjesec"</item>
+ <item msgid="5421089790869483206">"Sat"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 67290cd..eb38ef6 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Uparite novi uređaj"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatski uključi sutra"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Ako isključite Bluetooth, ponovo se uključuje sljedeći dan"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Upari desno uho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Upari lijevo uho"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Uparite drugo uho"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Onemogući Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Onemogućuje značajku Bluetooth LE audio ako uređaj podržava mogućnosti za LE audio hardvera."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Način Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Omogući pregled korisničkog sučelja za Bluetooth LE Audio emitiranje"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Omogućuje pregled korisničkog sučelja za LE Audio dijeljenje, uključujući dijeljenje osobnog zvuka i privatno emitiranje"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Prikaži prekidač LE audio u pojedinostima o uređaju"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Zaobiđi popis dopuštenih za Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Upotrebljavajte LE Audio prema zadanim postavkama čak i ako nije potvrđeno da LE Audio periferni uređaj ispunjava kriterije za popis dopuštenih."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Postavi automatski pomoću mreže i bežičnih signala"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatska vremenska zona"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Automatski postavi na temelju mobilnih mreža u blizini"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Postavi automatski pomoću lokacije uređaja, ako je dostupna"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Koristi zadani lokalni format"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Koristi 24-satni format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Vrijeme"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Podignite prst, a zatim ponovo dodirnite senzor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Senzor otiska prsta ne može se koristiti"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Posjetite servisera."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Otključavanje otiskom prsta kad je zaslon isključen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Upotreba otključavanja otiskom prsta čak i kad je zaslon isključen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Isključivanje zaslona, otključavanje"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Više sigurnosnih postavki"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Zaključavanje poslovnog profila, šifriranje i drugo"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifriranje, vjerodajnice i drugo"</string>
@@ -1268,7 +1273,7 @@
<string name="night_display_text" msgid="4789324042428095383">"Noćno svjetlo boji zaslon uređaja u jantarnu nijansu. To olakšava gledanje zaslona i čitanje pri slabom svjetlu i može vam pomoći da lakše zaspite."</string>
<string name="night_display_auto_mode_title" msgid="5869128421470824381">"Raspored"</string>
<string name="night_display_auto_mode_never" msgid="2721729920187175239">"Ništa"</string>
- <string name="night_display_auto_mode_custom" msgid="3938791496034086916">"Uključi u prilagođeno vrijeme"</string>
+ <string name="night_display_auto_mode_custom" msgid="3938791496034086916">"Uključuje se u odabrano vrijeme"</string>
<string name="night_display_auto_mode_twilight" msgid="4291855156158833997">"Od zalaska do izlaska sunca"</string>
<string name="night_display_start_time_title" msgid="2611541851596977786">"Vrijeme početka"</string>
<string name="night_display_end_time_title" msgid="5243112480391192111">"Vrijeme završetka"</string>
@@ -1290,7 +1295,7 @@
<string name="dark_ui_auto_mode_title" msgid="9027528859262295099">"Raspored"</string>
<string name="dark_ui_auto_mode_never" msgid="3980412582267787662">"Nijedan"</string>
<string name="dark_ui_auto_mode_auto" msgid="6658909029498623375">"Od zalaska do izlaska sunca"</string>
- <string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"Uključi u prilagođeno vrijeme"</string>
+ <string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"Uključuje se u odabrano vrijeme"</string>
<string name="dark_ui_auto_mode_custom_bedtime" msgid="8465023741946439266">"Uključuje se za vrijeme spavanja"</string>
<string name="dark_ui_status_title" msgid="3505119141437774329">"Status"</string>
<string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"Nikad se ne uključuje automatski"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tipkovnica zanemaruje brzo ponovljene pritiske iste tipke"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Prag zanemarivanja slučajnih pritisaka"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Odaberite koliko dugo će tipkovnica zanemarivati ponovljene pritiske tipki"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Prilagođeno"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"prilagođena vrijednost"</string>
<string name="slow_keys" msgid="2891452895499690837">"Spore tipke"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Prilagođava vrijeme potrebno za aktivaciju pritiska tipke"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Ljepljive tipke"</string>
- <string name="sticky_keys_summary" msgid="1844953803625480623">"Pritisnite jednu po jednu tipku za prečace umjesto da ih pritisnete zajedno"</string>
+ <string name="sticky_keys_summary" msgid="1844953803625480623">"Za prečace pritišćite jednu po jednu tipku, a ne sve u isto vrijeme"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Tipke miša"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Koristi tipke miša"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Upravljajte pokazivačem pomoću tipkovnice"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Obrnuto pomicanje pomoću miša"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Pomičite se prema gore za pomicanje stranice prema dolje"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Zamjena lijeve i desne tipke"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Upotrebljavajte lijevu tipku miša kao desnu"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tipke miša za tipkovnicu <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Pomoću tipki <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> pomičite pokazivač miša"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Pomoću tipke <xliff:g id="CLICK_LABEL">%s</xliff:g> kliknite primarnu tipku miša"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Pomoću tipke <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> pritisnite i zadržite primarnu tipku miša"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Pomoću tipke <xliff:g id="RELEASE_LABEL">%s</xliff:g> otpustite primarnu tipku miša"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Pomoću tipke <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> uključite način pomicanja. To će omogućiti da tipkama <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> pomičete prikaz prema gore, dolje, ulijevo ili udesno"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Pomoću tipke <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> kliknite sekundarnu tipku miša"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Tipkovni prečaci"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Prikaži popis prečaca"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tipkovnice i alati radnog profila"</string>
@@ -2020,7 +2035,7 @@
<string name="trackpad_switch_apps_title" msgid="7342032935377284039">"Promjena aplikacija"</string>
<string name="trackpad_switch_apps_summary" msgid="9193942041912927440">"Prijeđite s četiri prsta ulijevo ili udesno"</string>
<string name="modifier_keys_settings" msgid="2537108435032034683">"Modifikatorske tipke"</string>
- <string name="modifier_keys_settings_summary" msgid="6933143361657444436">"Promjena ponašanja tipki"</string>
+ <string name="modifier_keys_settings_summary" msgid="6933143361657444436">"Promijenite ponašanje tipki"</string>
<string name="modifier_keys_reset_title" msgid="948294258402761066">"Vrati sve na zadano"</string>
<string name="modifier_keys_default_summary" msgid="8701640508670973258">"Zadano"</string>
<string name="modifier_keys_reset_message" msgid="5236994817619936058">"Jeste li sigurni da sve modifikatorske tipke želite vratiti na zadano?"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Odaberite novu tipku za <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Pristupačnost fizičke tipkovnice"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Ljepljive tipke, sprečavanje slučajnih pritisaka tipki, tipke miša"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Tipke za ponavljanje unosa"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Odgodi prije ponavljanja"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Stopa ponavljanja"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pritisnite tipku i zadržite pritisak da biste ponavljali unos znaka dok je ne otpustite"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Izgled: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Zadano"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatski: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2417,7 +2428,7 @@
<string name="enable_quick_setting" msgid="6648073323202243604">"Prikaži u Brzim postavkama"</string>
<string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Crveno-zelena, poteškoća prepoznavanja zelene"</string>
<string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Crveno-zelena, poteškoća prepoznavanja crvene"</string>
- <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Plavo – žuto"</string>
+ <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Plavo-žuta"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Nijanse sive"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Intenzitet"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"Nedostupno za način nijansi sive ili kad je korekcija boja onemogućena"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Podesi potrošnju energije"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Uključeni paketi"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikacije se izvode na uobičajen način"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Preporučuje se zamjena baterije"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Smanjen je kapacitet baterije i učinkovitost punjenja, pa se preporučuje zamjena baterije."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Niska razina baterije"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Uključite štednju baterije radi produljenja trajanja baterije"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Produljenje trajanja baterije"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Prekinuti vezu s VPN-om?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Prekini vezu"</string>
<string name="vpn_version" msgid="6344167191984400976">"Verzija"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Zaboravi VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Želite li zamijeniti dosadašnji VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Želite li postaviti uvijek uključeni VPN?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00 – 17:00, radnim danom\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Događaji iz kalendara"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Aktivno: {mode_1}}=2{Aktivno: {mode_1} i {mode_2}}=3{Aktivno: {mode_1}, {mode_2} i {mode_3}}one{Aktivno: {mode_1}, {mode_2} i još #}few{Aktivno: {mode_1}, {mode_2} i još #}other{Aktivno: {mode_1}, {mode_2} i još #}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Jedan način može se automatski uključiti}one{# način može se automatski uključiti}few{# načina mogu se automatski uključiti}other{# načina može se automatski uključiti}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne uznemiravaj}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"UKLJUČENO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nije postavljeno"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Onemogućeno"</string>
@@ -3422,7 +3434,7 @@
<string name="zen_mode_not_found_text" msgid="692090778655810329">"Način nije pronađen"</string>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ograničavanje prekida"</string>
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Blokiraj prekide i ometanja"</string>
- <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Postavljanje aplikacije <xliff:g id="MODE">%1$s</xliff:g>"</string>
+ <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Postavite način <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Uključite opciju Ne uznemiravaj."</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Zvukovi alarma i medija mogu prekidati"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Rasporedi"</string>
@@ -3711,10 +3723,20 @@
<string name="notif_listener_more_settings" msgid="1348409392307208921">"Više postavki"</string>
<string name="notif_listener_more_settings_desc" msgid="7995492074281663658">"Više postavki dostupno je unutar aplikacije"</string>
<string name="notification_polite_title" msgid="6121016426991791557">"Postupno stišavanje obavijesti"</string>
- <string name="notification_polite_main_control_title" msgid="5812529809151927149">"Postupno stišavanje obavijesti"</string>
+ <string name="notification_polite_main_control_title" msgid="5812529809151927149">"Postupno stišaj obavijesti"</string>
<string name="notification_polite_description" msgid="5497748284893832854">"Ako u kratkom vremenskom razdoblju primite velik broj obavijesti, uređaj će smanjiti glasnoću i minimizirati upozorenja u trajanju do dvije minute. To ne utječe na pozive, alarme i prioritetne razgovore. \n\nObavijesti primljene tijekom stišavanja mogu se pronaći tako da povučete prstom prema dolje s vrha zaslona."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Primijeni na poslovne profile"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Primjenjuje se na aplikacije poslovnog profila"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Pomoćne usluge za virtualnu stvarnost"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nijedna instalirana aplikacija nije zatražila pokretanje kao pomoćna usluga za virtualnu stvarnost."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Želite li dopustiti pristup usluge virtualne stvarnosti za uslugu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3882,7 +3904,7 @@
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+ <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Dopusti aplikacijama da nadjačaju"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikacije koje mogu prekidati"</string>
- <string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Odaberite više aplikacija"</string>
+ <string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Odaberite aplikacije"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"Nije odabrana nijedna aplikacija"</string>
<string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"Nijedna aplikacija ne može prekidati"</string>
<string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"Dodajte aplikacije"</string>
@@ -3917,12 +3939,12 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Promijeni na opciju Samo alarmi na jedan sat do {time}}one{Promijeni na opciju Samo alarmi na # sat do {time}}few{Promijeni na opciju Samo alarmi na # sata do {time}}other{Promijeni na opciju Samo alarmi na # sati do {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Promijeni na \"Samo alarmi\" do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Promijeni na \"Uvijek prekidaj\""</string>
- <string name="zen_mode_rename_title" msgid="8146882272966214558">"Uređivanje načina"</string>
+ <string name="zen_mode_rename_title" msgid="8146882272966214558">"Uredite način rada"</string>
<string name="zen_mode_new_custom_title" msgid="7513785385574267851">"Izradite način rada"</string>
<string name="zen_mode_new_custom_default_name" msgid="2778307946775085105">"Prilagođeni način"</string>
<string name="zen_mode_edit_name_hint" msgid="4584652062167540536">"Naziv načina"</string>
<string name="zen_mode_edit_name_empty_error" msgid="5788063278827188275">"Polje za naziv načina ne može biti prazno"</string>
- <string name="zen_mode_edit_choose_icon_title" msgid="6452801577128788362">"Odabir ikone"</string>
+ <string name="zen_mode_edit_choose_icon_title" msgid="6452801577128788362">"Odaberite ikonu"</string>
<string name="zen_mode_trigger_title_schedule_calendar" msgid="9206609438617550331">"Događaji iz kalendara"</string>
<string name="zen_mode_trigger_title_bedtime" msgid="3287241454965736913">"Rutina prije spavanja"</string>
<string name="zen_mode_trigger_title_driving" msgid="7890990983453164403">"Tijekom vožnje"</string>
@@ -3933,7 +3955,7 @@
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Ovaj se način nikad neće uključiti kada je onemogućen"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Onemogući"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Omogućiti način <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Ovaj se način može automatski uključiti na temelju njegovih postavki"</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Ovaj se način može automatski uključiti na temelju svojih postavki"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Omogući"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Postavite način koji prati uobičajeni raspored"</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Postavite način za sinkronizaciju s događajima iz kalendara i odgovorima na pozivnice"</string>
@@ -4934,7 +4956,7 @@
<string name="network_connection_errorstate_dialog_message" msgid="3360714322047603239">"Došlo je do pogreške. Aplikacija je otkazala zahtjev za odabir uređaja."</string>
<string name="network_connection_connect_successful" msgid="2587314077675642476">"Povezivanje je uspjelo"</string>
<string name="network_connection_connect_failure" msgid="6803313816657494319">"Povezivanje nije uspjelo"</string>
- <string name="network_connection_request_dialog_showall" msgid="6392059758456994944">"Pokaži sve"</string>
+ <string name="network_connection_request_dialog_showall" msgid="6392059758456994944">"Prikaži sve"</string>
<string name="network_connection_searching_message" msgid="8521819623516926482">"Traženje uređaja…"</string>
<string name="network_connection_connecting_message" msgid="433189540877274889">"Povezivanje s uređajem…"</string>
<string name="bluetooth_left_name" msgid="7440064067910080502">"Lijevo"</string>
@@ -5455,11 +5477,12 @@
<string name="audio_streams_main_page_device_title" msgid="2635744035523908253">"Vaš audiouređaj"</string>
<string name="audio_streams_main_page_no_device_summary" msgid="2936000845397406389">"Poveži kompatibilne slušalice"</string>
<string name="audio_streams_main_page_scan_section_title" msgid="2778235929304061163">"Audiostreamovi u blizini"</string>
- <string name="audio_streams_main_page_scan_qr_code_title" msgid="8337270277392468895">"Skeniranje QR koda"</string>
+ <string name="audio_streams_main_page_scan_qr_code_title" msgid="8337270277392468895">"Skenirajte QR kod"</string>
<string name="audio_streams_main_page_scan_qr_code_summary" msgid="1991792283368249499">"Skenirajte QR kôd streama i počnite slušati"</string>
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Slušajte stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skenirajte QR kôd audiostreama da biste slušali s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Nije moguće urediti zaporku dok je zajedničko slušanje u tijeku. Da biste promijenili zaporku, prvo isključite zajedničko slušanje."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Zaporka mora sadržavati od 4 do 16 znakova i upotrebljavati samo slova, brojeve i simbole"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Čitač QR koda"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Trebate li pomoć?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Pretražite postavke"</string>
@@ -5468,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Samo uređaj"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Novi kontakti neće se sinkronizirati s računom"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakti će se spremiti na vaš uređaj i prema zadanim postavkama sinkronizirati s vašim računom"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nema zadane postavke"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Pogreška pri postavljanju zadanog računa"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nema zadane postavke"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Samo uređaj"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Dodajte račun da biste započeli"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Zaokružite i potražite"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Dodirnite gumb početnog zaslona ili oznaku za navigaciju i zadržite pritisak za pretraživanje pomoću sadržaja na vašem zaslonu."</string>
</resources>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
index 042b900..44532f9 100644
--- a/res/values-hu/arrays.xml
+++ b/res/values-hu/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktatáska"</item>
+ <item msgid="184985872234062767">"Klasszikus épület"</item>
+ <item msgid="9189550412466785530">"Társasház"</item>
+ <item msgid="2142527562511049422">"Szövegbuborék"</item>
+ <item msgid="2548100558260478605">"Emberek csoportja"</item>
+ <item msgid="2270003903304578284">"Izzó"</item>
+ <item msgid="4793496619091161864">"Naptár"</item>
+ <item msgid="5673625795644364100">"Ne zavarjanak"</item>
+ <item msgid="1423820834865831361">"Futó ember"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Edzőtermi súlyzó"</item>
+ <item msgid="2730180105015616518">"Úszás"</item>
+ <item msgid="2666922823253345958">"Túrázó ember"</item>
+ <item msgid="8234880356472211396">"Labdát dobó ember"</item>
+ <item msgid="4642980625253001443">"Rúgó ember"</item>
+ <item msgid="4324795269518833500">"Kontroller"</item>
+ <item msgid="7789966425125441125">"Festő színpalettája"</item>
+ <item msgid="663512680597461570">"Hópehely"</item>
+ <item msgid="7952183800501346803">"Strandernyő"</item>
+ <item msgid="799139025758265891">"Workshop-eszközök"</item>
+ <item msgid="8112685757657659269">"Zongora"</item>
+ <item msgid="3861584909935022342">"Filmtekercs"</item>
+ <item msgid="5827426100157335512">"Könyv"</item>
+ <item msgid="8585828346253128384">"Lótuszvirág"</item>
+ <item msgid="8788370542815300188">"Emberi elme"</item>
+ <item msgid="7287354964767553293">"Fejhallgató"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Vonat"</item>
+ <item msgid="4903790544026923026">"Autó"</item>
+ <item msgid="5010405583912314582">"Kés és villa"</item>
+ <item msgid="8939998598599064900">"Bevásárlókosár"</item>
+ <item msgid="3379605903308731893">"Gyermek"</item>
+ <item msgid="7808668968550293112">"Állati mancs"</item>
+ <item msgid="1000692647524056504">"Csillag jelvény"</item>
+ <item msgid="8270261073421676502">"Két ember"</item>
+ <item msgid="5767782819651505460">"Csillag"</item>
+ <item msgid="4368451291862729334">"Szív"</item>
+ <item msgid="2613199102208419986">"Ház"</item>
+ <item msgid="3022279986430275040">"Félhold"</item>
+ <item msgid="5421089790869483206">"Óra"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index bcef2a3..15f8144 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Új eszköz párosítása"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatikus bekapcsolás holnap"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Jobb fül párosítása"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Bal fül párosítása"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Párosítsa a másik fület"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE hangátvitel kikapcsolása"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Kikapcsolja a Bluetooth alacsony energiaszintű hangátvitel funkciót, ha az eszköz támogatja az Alacsony energiaszintű hangátvitel hardver működését."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth alacsony energiaszintű hangátvitel mód"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"A Bluetooth alacsony energiaszintű hangátviteli közvetítéséhez tartozó felhasználói felület előnézetének engedélyezése"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Engedélyezi az alacsony energiaszintű hangátvitel kezelőfelületének előnézetét, beleértve a személyes hanganyagok megosztását és privát közvetítést"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"„Alacsony energiaszintű hangátvitel” az Eszközadatokban"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth alacsony energiaszintű hangátvitel engedélyezőlistájának megkerülése"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Alacsony energiaszintű hangátvitel használata alapértelmezés szerint akkor is, ha az Alacsony energiaszintű hangátvitelt használó periféria nem teljesíti igazoltan az engedélyezőlista feltételeit."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Automatikus beállítás a hálózat és a vezeték nélküli jelek alapján"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatikus időzóna"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Automatikus beállítás a közeli mobilhálózatok alapján"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Automatikus beállítás az eszköz helyadatai alapján (ha rendelkezésre állnak)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Helyi alapértelmezés használata"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 órás formátum használata"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Idő"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Emelje fel ujját, majd érintse meg újra az érzékelőt"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Nem lehet használni az ujjlenyomat-érzékelőt"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Keresse fel a szervizt."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Feloldás ujjlenyomattal kikapcsolt képernyő esetén"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"A Feloldás ujjlenyomattal funkció használata akkor is, ha ki van kapcsolva a képernyő"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Képernyő kikapcsolva, feloldás"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"További biztonsági beállítások"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Munkaprofil zárolása, titkosítás és egyebek"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Titkosítás, hitelesítési adatok és egyebek"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"A billentyűzet nem veszi figyelembe, ha ugyanazt a billentyűt gyorsan egymás után többször is lenyomja."</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Billentyűblokkolás küszöbértéke"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Válassza ki, hogy a billentyűzet mennyi ideig hagyja figyelmen kívül az ismétlődő gombnyomásokat."</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 mp"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 mp"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 mp"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 mp"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 mp"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 mp"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Egyéni"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"egyéni érték"</string>
<string name="slow_keys" msgid="2891452895499690837">"Lassú billentyűk"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Módosítja a billentyű lenyomásától az aktiválásig eltelő időtartamot."</string>
<string name="sticky_keys" msgid="7317317044898161747">"Beragadó billentyűk"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Egyszerre egy billentyű lenyomásával használhat billentyűparancsokat több billentyű egyszeri lenyomva tartása helyett"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Egérgombok"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Egérgombok használata"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"A billentyűzettel vezérelheti a mutatót."</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Fordított görgetés az egérrel"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Az oldal lefelé mozgatásához görgessen felfelé"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Bal és jobb gomb felcserélése"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"A bal egérgomb használata jobb egérgombként"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Egérgombok a következőhöz: <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"A következő billentyűkkel mozgathatja az egérmutatót: <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>."</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"A(z) <xliff:g id="CLICK_LABEL">%s</xliff:g> billentyű használatával kattinthat az elsődleges egérgombbal."</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"A(z) <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> billentyűvel lenyomva tarthatja az elsődleges egérgombot."</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Az <xliff:g id="RELEASE_LABEL">%s</xliff:g> billentyű használatával engedheti fel az elsődleges egérgombot."</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"A(z) <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> billentyűvel kapcsolhatja be vagy ki a görgetési módot. Ebben a módban a következő billentyűkkel görgetheti felfelé, lefelé, balra vagy jobbra a nézetet: <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"A(z) <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> billentyű használatával kattinthat a másodlagos egérgombbal."</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Billentyűparancsok"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Billentyűparancsok listájának megjelenítése"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Munkaprofil billentyűzetei és eszközei"</string>
@@ -1999,7 +2015,7 @@
<string name="gesture_summary_go_home" msgid="6409031586904205741">"Csúsztasson gyorsan felfelé 3 ujjával bárhol az érintőpadon"</string>
<string name="gesture_title_go_back" msgid="6619462058488419802">"Vissza"</string>
<string name="gesture_summary_go_back" msgid="4981604277892236888">"Csúsztasson gyorsan három ujjal balról vagy jobbról"</string>
- <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Legutóbbi alkalmazások megtekintése"</string>
+ <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Legutóbbi alkalmazások"</string>
<string name="gesture_summary_recent_apps" msgid="6643179135202417509">"Csúsztasson felfelé 3 ujjával, tartsa lenyomva, és engedje el"</string>
<string name="gesture_title_notifications" msgid="791717222472350194">"Értesítések és Gyorsbeállítások megtekintése"</string>
<string name="gesture_summary_notifications" msgid="8419514601638387255">"Csúsztasson gyorsan lefelé három ujjával a kezdőképernyőn"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Válasszon új billentyűt a(z) <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> számára:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Fizikai billentyűzet kisegítő lehetőségei"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Beragadó billentyűk, billentyűblokkolás, egérgombok"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Ismétlődő billentyűk"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Ismétlés előtti késleltetés"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Ismétlési sebesség"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Ha lenyomva tartja valamelyik billentyűt, a billentyűhöz tartozó karakter többször is bevitelre kerül, amíg fel nem emeli az ujját."</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> elrendezés"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Alapértelmezett"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatikus: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Az energiafelhasználás beállítása"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Mellékelt csomagok"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Az alkalmazások megfelelően futnak"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Javasoljuk az akkumulátor cseréjét"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Csökkent az akkumulátor kapacitása és töltési teljesítménye, ezért javasoljuk a cseréjét."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Alacsony töltöttség"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Az akkumulátor üzemidejének meghosszabbításához kapcsolja be az Akkumulátorkímélő módot"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Az akkumulátor élettartamának növelése"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Leválasztja a VPN-t?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Leválasztás"</string>
<string name="vpn_version" msgid="6344167191984400976">"Verzió"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Verzió: <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN elfelejtése"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Lecseréli a meglévő VPN-t?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Beállítja a mindig bekapcsolt VPN-t?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„Reggel kilenctől délután ötig, hétköznapokon”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Naptáresemények"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{A(z) {mode_1} aktív}=2{{mode_1} és {mode_2} aktív}=3{{mode_1}, {mode_2} és {mode_3} aktív}other{{mode_1}, {mode_2} és # egyéb aktív}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mód automatikusan bekapcsolódhat}other{# mód automatikusan bekapcsolódhat}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne zavarjanak}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2} és {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"BE"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nincs beállítva"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Kikapcsolva"</string>
@@ -3434,7 +3447,7 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Szerkesztés"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Ütemezések"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Ütemezés"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Automatikus bekapcsolás esete"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Automatikus bekapcsolás időtartama"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Eseménynaptár"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Bekapcsol a következő esetben:"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Amikor a meghívó válasza:"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Ha rövid időn belül sok értesítést kap, telefonja két percig csökkenti a hangerőt, és kis méretűre állítja a figyelmeztetéseket. A hívásokat, az ébresztéseket és a fontos beszélgetéseket nem érinti ez a beállítás. \n\nA befagyasztás ideje alatt kapott értesítések megtekintéséhez húzza lefelé az ujját a képernyő tetejéről."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Alkalmazás munkaprofilokra"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Alkalmazás a munkaprofil alkalmazásaira"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Virtuálisvalóság-segédszolgáltatás"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Egy telepített alkalmazás sem kérte, hogy virtuálisvalóság-segédszolgáltatásként legyen futtatva."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Hozzáférhet a(z) <xliff:g id="SERVICE">%1$s</xliff:g> a virtuálisvalóság-szolgáltatáshoz?"</string>
@@ -3935,7 +3958,7 @@
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Engedélyezi ezt: <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Ez a mód automatikusan is bekapcsolhat a beállítások függvényében"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Bekapcsolás"</string>
- <string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Állítson be olyan módot, amely rendszeres időbeosztást követ"</string>
+ <string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Állítson be egy rendszeres időbeosztást követő módot"</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Állítson be egy módot a naptári eseményekkel való szinkronizáláshoz és a meghívók megválaszolásához"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"Tervezzen nyugtató alvásrutint. Állítson be ébresztőket, vegye vissza a képernyő fényerejét, és kapcsolja ki az értesítéseket."</string>
<string name="zen_mode_blurb_driving" msgid="1316054379000667305">"Helyezze előtérbe a biztonságot az úton, hogy a zavartalan vezetésre koncentrálhasson"</string>
@@ -3943,7 +3966,7 @@
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"Szüntessen meg minden zavaró tényezőt a nyugodt környezet érdekében"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"Szabja személyre az eszközélményt a különböző felhasználók számára"</string>
<string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Minimalizálja a zavaró tényezőket, hogy csak a fontos emberek és alkalmazások érjék el Önt"</string>
- <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Állítson be olyan módot, amely rendszeres időbeosztást követ"</string>
+ <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Állítson be egy rendszeres időbeosztást követő módot"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"Tartsa szinkronban eszközét a napi eseményekkel"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"Ébredjen fel 100%-os állapotban"</string>
<string name="zen_mode_inspiration_driving" msgid="8237825783857483135">"Legyen a biztonság az első vezetés közben"</string>
@@ -5342,7 +5365,7 @@
<string name="about_phone_device_name_warning" msgid="3243226572404472381">"Eszköze neve látható a telepített alkalmazások számára. Mások is láthatják, ha csatlakoztatja telefonját más Bluetooth-eszközökhöz, Wi-Fi-hálózathoz, vagy ha Wi-Fi-hotspotot állít be."</string>
<string name="grammatical_gender_title" msgid="8584242850477270828">"Nyelvtani nem"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"Nyelvtani nem kiválasztása"</string>
- <string name="content_protection_preference_title" msgid="5069260032659193074">"Megtévesztő alkalmazások keresése…"</string>
+ <string name="content_protection_preference_title" msgid="5069260032659193074">"Megtévesztő alkalmazások keresése"</string>
<string name="content_protection_preference_summary" msgid="2252393849408445391">"Adathalászat keresése az alkalmazástevékenységekben"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"Megtévesztő alkalmazások keresése"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"Megtévesztő munkahelyi alkalmazások keresése"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Stream hallgatása"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Olvassa be az audiostream QR-kódját a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközön való hallgatáshoz"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Megosztás közben a jelszó nem módosítható. Ha módosítani kívánja a jelszót, először kapcsolja ki a hang megosztását."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"A jelszónak 4–16 karakterből kell állnia, és csak betűket, számokat és szimbólumokat tartalmazhat"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-kód-szkennelő"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Segítségre van szüksége?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Keresési beállítások"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Csak az eszközön"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Az új névjegyeket semmilyen fiókkal nem szinkronizálja a rendszer."</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"A névjegyek alapértelmezés szerint az eszközére lesznek mentve, és szinkronizálódnak a fiókjával."</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nincs alapértelmezett beállítás"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Hiba történt az alapértelmezett fiók beállításakor"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nincs alapértelmezett beállítás"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Csak a készüléken"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"A kezdéshez adjon hozzá egy fiókot."</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Bekarikázással keresés"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Tartsa lenyomva a Kezdőképernyő gombot vagy a navigációs fogópontot a képernyőn lévő tartalommal való kereséshez."</string>
</resources>
diff --git a/res/values-hy/arrays.xml b/res/values-hy/arrays.xml
index 836e930..5ea9fd9 100644
--- a/res/values-hy/arrays.xml
+++ b/res/values-hy/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Թղթապանակ"</item>
+ <item msgid="184985872234062767">"Դասական շենք"</item>
+ <item msgid="9189550412466785530">"Բազմաբնակարան շենք"</item>
+ <item msgid="2142527562511049422">"Խոսքի պղպջակ"</item>
+ <item msgid="2548100558260478605">"Մարդկանց խումբ"</item>
+ <item msgid="2270003903304578284">"էլեկտրական լամպ"</item>
+ <item msgid="4793496619091161864">"Օրացույց"</item>
+ <item msgid="5673625795644364100">"Չանհանգստացնել"</item>
+ <item msgid="1423820834865831361">"Վազող մարդ"</item>
+ <item msgid="2037298830718732608">"Գոլֆ"</item>
+ <item msgid="2197835014443491074">"Հանտել"</item>
+ <item msgid="2730180105015616518">"Լող"</item>
+ <item msgid="2666922823253345958">"Քայլարշավի մասնակցող մարդ"</item>
+ <item msgid="8234880356472211396">"Գնդակ նետող մարդ"</item>
+ <item msgid="4642980625253001443">"Ոտքով հարվածող մարդ"</item>
+ <item msgid="4324795269518833500">"Խաղային բարձակ"</item>
+ <item msgid="7789966425125441125">"Նկարչական գունապնակ"</item>
+ <item msgid="663512680597461570">"Ձյան փաթիլ"</item>
+ <item msgid="7952183800501346803">"Լողափի հովանոց"</item>
+ <item msgid="799139025758265891">"Արհեստանոցի գործիքներ"</item>
+ <item msgid="8112685757657659269">"Դաշնամուր"</item>
+ <item msgid="3861584909935022342">"Ֆիլմի սյուժե"</item>
+ <item msgid="5827426100157335512">"Գիրք"</item>
+ <item msgid="8585828346253128384">"Լոտոսի ծաղիկ"</item>
+ <item msgid="8788370542815300188">"Մարդու միտքը"</item>
+ <item msgid="7287354964767553293">"Ականջակալներ"</item>
+ <item msgid="2530059623783800987">"Հեռուստացույց"</item>
+ <item msgid="5307182323469376758">"Գնացք"</item>
+ <item msgid="4903790544026923026">"Ավտոմեքենա"</item>
+ <item msgid="5010405583912314582">"Դանակ և պատառաքաղ"</item>
+ <item msgid="8939998598599064900">"Գնումների զամբյուղ"</item>
+ <item msgid="3379605903308731893">"Երեխա"</item>
+ <item msgid="7808668968550293112">"Կենդանու թաթ"</item>
+ <item msgid="1000692647524056504">"Աստղանիշի նշանակ"</item>
+ <item msgid="8270261073421676502">"Երկու մարդ"</item>
+ <item msgid="5767782819651505460">"Աստղ"</item>
+ <item msgid="4368451291862729334">"Սիրտ"</item>
+ <item msgid="2613199102208419986">"Տուն"</item>
+ <item msgid="3022279986430275040">"Կիսալուսին"</item>
+ <item msgid="5421089790869483206">"Ժամացույց"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index bb87f85..9db2d93 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Նոր սարքի զուգակցում"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Ավտոմատ միացնել վաղը"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Զուգակցել աջ ականջը"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Զուգակցել ձախ ականջը"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Զուգակցեք մյուս ականջը"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Անջատել Bluetooth LE Audio-ն"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Անջատում է Bluetooth LE Audio գործառույթը, եթե սարքն այն աջակցում է։"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio ռեժիմ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Միացնել Bluetooth LE Audio-ի հեռարձակման ինտերֆեյսի նախադիտումը"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Միացնում է LE Audio-ի փոխանցման ինտեֆեյսի նախադիտումը, որը ներառում է անձնական աուդիոյի փոխանցումը և անձնական հեռարձակումը"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Տեսնել LE Audio-ն սարքի տվյալներում"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Շրջանցել Bluetooth LE Audio-ի թույլատրվածների ցուցակը"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Օգտագործել LE Audio-ն ըստ կանխադրման, անգամ եթե LE Audio-ի արտաքին սարքի համապատասխանությունը թույլատրվածների ցուցակի չափանիշներին չի հաստատվել։"</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Ավտոմատ կարգավորել՝ օգտագործելով ցանցը և անլար ազդանշանները"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Ժամային գոտու ավտոմատ որոշում"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Ավտոմատ սահմանել՝ հիմնվելով ձեր մոտակայքում գործող բջջային ցանցերի վրա"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Ավտոմատ կարգավորել՝ օգտագործելով սարքի տեղադրությունը, եթե առկա է"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Օգտագործել կանխադրված տեղույթը"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Օգտագործել 24-ժամյա ձևաչափը"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Ժամը"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Բարձրացրեք մատը, ապա կրկին հպեք սենսորին"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Մատնահետքերի սկաները հնարավոր չէ օգտագործել"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Այցելեք սպասարկման կենտրոն։"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Մատնահետքով ապակողպում էկրանն անջատված ժամանակ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Օգտագործեք մատնահետքով ապակողպում, նույնիսկ եթե էկրանն անջատված է"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Էկրանն անջատված է, ապակողպել"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Անվտանգության այլ կարգավորումներ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Աշխատանքային պրոֆիլի կողպում, գաղտնագրում և ավելին"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Գաղտնագրում, մուտքի տվյալներ և ավելին"</string>
@@ -922,8 +928,8 @@
<string name="art_verifier_for_debuggable_summary" msgid="4802875841862652879">"Թույլատրել ART-ին հաստատել վրիպազերծման ենթակա հավելվածների երկուական կոդը"</string>
<string name="show_refresh_rate" msgid="5742688821872354973">"Թարմացման հաճախությունը"</string>
<string name="show_refresh_rate_summary" msgid="3558118122374609663">"Ցույց տալ էկրանի թարմացման ընթացիկ հաճախությունը"</string>
- <string name="show_hdr_sdr_ratio" msgid="4188007289024955585">"Ցույց տալ HDR/SDR հարաբերակցությունը"</string>
- <string name="show_hdr_sdr_ratio_summary" msgid="986292785096013733">"Ցույց տալ ընթացիկ HDR/SDR հարաբերակցությունը"</string>
+ <string name="show_hdr_sdr_ratio" msgid="4188007289024955585">"Ցույց տալ HDR/SDR հարաբերությունը"</string>
+ <string name="show_hdr_sdr_ratio_summary" msgid="986292785096013733">"Ցույց տալ ընթացիկ HDR/SDR հարաբերությունը"</string>
<string name="nfc_quick_toggle_title" msgid="3607620705230351666">"NFC"</string>
<string name="nfc_secure_settings_title" msgid="4906958426927741485">"NFC-ի համար պահանջել սարքի ապակողպում"</string>
<string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
@@ -1835,7 +1841,7 @@
<string name="filter" msgid="9039576690686251462">"Զտիչ"</string>
<string name="filter_dlg_title" msgid="3086282431958601338">"Ընտրել զտիչի ընտրանքները"</string>
<string name="filter_apps_all" msgid="5705421199299914620">"Բոլոր հավելվածները"</string>
- <string name="filter_apps_disabled" msgid="5068011814871004105">"Անջատած հավելվածներ"</string>
+ <string name="filter_apps_disabled" msgid="5068011814871004105">"Անջատված հավելվածներ"</string>
<string name="filter_apps_third_party" msgid="9049447784849114843">"Ներբեռնված"</string>
<string name="filter_apps_running" msgid="535465683273284141">"Աշխատեցվում է"</string>
<string name="not_installed" msgid="5074606858798519449">"Տեղադրված չէ այս օգտատիրոջ"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Ստեղնաշարը անտեսում է միևնույն ստեղնի կրկնվող արագ սեղմումները"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Կրկնվող սեղմումների անտեսման շեմ"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Ընտրեք, թե որքան ժամանակ պետք է անտեսվեն ստեղնաշարի ստեղների կրկնվող սեղմումները"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 վ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 վ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 վ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 վ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 վ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 վ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Այլ"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"հատուկ արժեք"</string>
<string name="slow_keys" msgid="2891452895499690837">"Դանդաղ ստեղներ"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Կարգավորում է ժամանակի տևողությունը, որից հետո ստեղնը արձագանքում է սեղմմանը"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Կպչուն ստեղներ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Դյուրանցումների համար միաժամանակ սեղմեք մեկ ստեղն, այլ ոչ թե միասին սեղմած պահեք մի քանիսը"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Մկնիկի ստեղներ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Կառավարել մկնիկը ստեղների միջոցով"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Ցուցիչը կառավարել ստեղնաշարի միջոցով"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Մկնիկով հետադարձ ոլորում"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Ոլորեք վերև՝ էջի ներքև անցնելու համար"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Տեղերով փոխել աջ և ձախ կոճակները"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Օգտագործեք մկնիկի ձախ կոճակը որպես աջը"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Մկնիկի կառավարման ստեղներ «<xliff:g id="KEYBOARD_NAME">%s</xliff:g>» սարքի համար"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Մկնիկի ցուցիչը տեղափոխելու համար օգտագործեք <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ստեղները"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"<xliff:g id="CLICK_LABEL">%s</xliff:g> ստեղնի սեղմումը համապատասխանում է մկնիկի հիմնական կոճակի սեղմմանը"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ստեղնի սեղմումը համապատասխանում է մկնիկի հիմնական կոճակի սեղմմանն ու պահմանը"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"<xliff:g id="RELEASE_LABEL">%s</xliff:g> ստեղնի սեղմումը համապատասխանում է մկնիկի հիմնական կոճակի բաց թողնմանը"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Սեղմեք <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ստեղնը՝ թերթելու ռեժիմը միացնելու համար։ Այս ռեժիմում <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ստեղնի օգնությամբ կարող եք թերթել էկրանը վերև, ներքև, ձախ և աջ։"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"<xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ստեղնի սեղմումը համապատասխանում է մկնիկի լրացուցիչ կոճակի սեղմմանը"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Ստեղնային դյուրանցումներ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Ցույց տալ ստեղնաշարի դյուրանցումների ցանկը"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Աշխատանքային պրոֆիլի ստեղնաշարեր և գործիքներ"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Ընտրել նոր ստեղն <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> ստեղնի փոխարեն՝"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Ֆիզիկական ստեղնաշարի հատուկ գործառույթներ"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Կպչուն ստեղներ, Վերադարձի ստեղներ, Մկնիկի ստեղներ"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Ստեղների նիշերի կրկնություն"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Հապաղում կրկնությունից առաջ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Կրկնման արագությունը"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Կրկնել ստեղնի նիշն այնքան ժամանակ, քանի դեռ ստեղնը սեղմված է"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> դասավորություն"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Կանխադրված"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Ավտոմատ՝ <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Կարգավորել հոսանքի օգտագործումը"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Ներառված փաթեթները"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Հավելվածների աշխատանքում շեղումներ չեն հայտնաբերվել"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Խորհուրդ է տրվում փոխարինել մարտկոցը"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Մարտկոցի տարողունակությունը և լիցքավորման արդյունավետությունը նվազեցված են։ Խորհուրդ է տրվում փոխարինել մարտկոցը։"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Մարտկոցի ցածր լիցք"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Միացրեք Մարտկոցի տնտեսումը՝ դրա աշխատաժամանակը երկարացնելու համար"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Երկարացրեք մարտկոցի աշխատաժամանակը"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Անջատե՞լ այս VPN-ը:"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Անջատել"</string>
<string name="vpn_version" msgid="6344167191984400976">"Տարբերակ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Տարբերակ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Մոռանալ VPN-ը"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Փոխարինե՞լ ընթացիկ VPN-ը:"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Սահմանե՞լ որպես «միշտ միացված» VPN:"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"«9:00 – 17:00, աշխատանքային օրեր»"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Օրացույցի միջոցառումներ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{«{mode_1}» ռեժիմն ակտիվ է}=2{«{mode_1}» և «{mode_2}» ռեժիմներն ակտիվ են}=3{«{mode_1}», «{mode_2}» և «{mode_3}» ռեժիմներն ակտիվ են}one{«{mode_1}» և «{mode_2}» ռեժիմներն ու ևս #-ը ակտիվ են}other{«{mode_1}» և «{mode_2}» ռեժիմներն ու ևս #-ը ակտիվ են}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ռեժիմ կարող է ավտոմատ միանալ}one{# ռեժիմ կարող է ավտոմատ միանալ}other{# ռեժիմ կարող է ավտոմատ միանալ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Չանհանգստացնել}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ՄԻԱՑՎԱԾ Է"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Կարգավորված չէ"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Անջատված է"</string>
@@ -3438,7 +3451,7 @@
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Միջոցառման ժամանակացույց"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Միացնել միջոցառումների ժամանակ"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Որտեղ հրավերի պատասխանն է"</string>
- <string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Ժամանակացույցն ըստ ժամանակի"</string>
+ <string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Ժամանակացույց"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Ժամանակացույց"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> ժ <xliff:g id="MINUTES">%2$d</xliff:g> ր"</string>
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ժամանակացույց"</string>
@@ -3490,7 +3503,7 @@
<string name="zen_mode_block_effect_sound" msgid="7929909410442858327">"Անջատել ձայնը և թրթռոցը"</string>
<string name="zen_mode_block_effect_intent" msgid="7621578645742903531">"Չմիացնել էկրանը"</string>
<string name="zen_mode_block_effect_light" msgid="1997222991427784993">"Չմիացնել թարթող լույսը"</string>
- <string name="zen_mode_block_effect_peek" msgid="2525844009475266022">"Հավելվածների վրայից չցուցադրել ծանուցումներ"</string>
+ <string name="zen_mode_block_effect_peek" msgid="2525844009475266022">"Չցուցադրել ծանուցումներ հավելվածների վրայից"</string>
<string name="zen_mode_block_effect_status" msgid="5765965061064691918">"Թաքցնել կարգավիճ․ գոտու պատկերակները էկրանի վերևից"</string>
<string name="zen_mode_block_effect_badge" msgid="332151258515152429">"Թաքցնել ծանուց․ կետիկները հավելվ․ պատկերակներից"</string>
<string name="zen_mode_block_effect_ambient" msgid="1247740599476031543">"Ցույց չտալ ծանուցումները"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Եթե կարճ ժամանակահատվածում շատ ծանուցումներ ստանաք, ձեր սարքը երկու րոպեով կիջեցնի ձայնը և կնվազեցնի ծանուցումների քանակը։ Դա չի ազդի զանգերի, զարթուցիչների և կարևոր զրույցների վրա։ \n\nԾանուցումների ձայնի իջեցման ռեժիմում ստացված ծանուցումները կարելի է գտնել՝ էկրանի վերևի եզրից սահեցնելով ներքև։"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Կիրառել աշխատանքային պրոֆիլների համար"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Կիրառել աշխատանքային պրոֆիլի հավելվածների նկատմամբ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR օգնության ծառայություններ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Տեղադրված հավելվածներից ոչ մեկը որպես VR օգնության ծառայություն գործարկվելու հարցում չի ուղարկել:"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Թույլատրե՞լ VR ծառայությանն օգտագործել <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը:"</string>
@@ -3929,7 +3952,7 @@
<string name="zen_mode_trigger_title_generic" msgid="1347753445938095789">"Հավելվածի կարգավորումներ"</string>
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Տեղեկություններ և կարգավորումներ <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածում"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Կառավարվում է <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի կողմից"</string>
- <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Անջատե՞լ <xliff:g id="MODE_NAME">%1$s</xliff:g>ը"</string>
+ <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Անջատե՞լ <xliff:g id="MODE_NAME">%1$s</xliff:g> ռեժիմը"</string>
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Այս ռեժիմը երբեք չի միանա անջատված ժամանակ"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Անջատել"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Միացնե՞լ <xliff:g id="MODE_NAME">%1$s</xliff:g>ը"</string>
@@ -3942,7 +3965,7 @@
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Կենտրոնանալու համար արգելափակեք ծանուցումներն ու շեղող ձայները"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"Չեզոքացրեք բոլոր շեղող գործոնները հանգիստ միջավայրի համար"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"Անհատականացրեք սարքի գործառույթներն ու կարգավորումները տարբեր օգտատերերի համար"</string>
- <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Թույլ տվեք, որ միայն կարևոր մարդիկ կապվեն ձեզ հետ և հավելվածներն ուղարկեն ծանուցումներ, որպեսզի քիչ շեղվեք"</string>
+ <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Թույլ տվեք հաղորդագրություններ միայն կարևոր մարդկանցից և հավելվածներից, որպեսզի քիչ շեղվեք"</string>
<string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Սահմանեք ռեժիմ, որը հետևում է սովորական ժամանակացույցի կարգավորումներին"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"Կարգավորեք սարքի աշխատանքը՝ օրացույցի միջոցառումների հիման վրա"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"Արթնացեք՝ զգալով հարյուր տոկոսով լավ"</string>
@@ -5267,25 +5290,25 @@
<string name="background_install_uninstall_button_description" msgid="1189649052911501249">"Ապատեղադրել հավելվածը"</string>
<string name="background_install_before" msgid="8608614957688912715">"{count,plural, =1{Հավելվածներ, որոնք տեղադրվել են վերջին # ամսվա ընթացքում}one{Հավելվածներ, որոնք տեղադրվել են վերջին # ամսվա ընթացքում}other{Հավելվածներ, որոնք տեղադրվել են վերջին # ամսվա ընթացքում}}"</string>
<string name="background_install_after" msgid="7983488897570908149">"{count,plural, =1{Հավելվածներ, որոնք տեղադրվել են ավելի քան # ամիս առաջ}one{Հավելվածներ, որոնք տեղադրվել են ավելի քան # ամիս առաջ}other{Հավելվածներ, որոնք տեղադրվել են ավելի քան # ամիս առաջ}}"</string>
- <string name="aspect_ratio_title" msgid="2451826875939676101">"Կողմերի հարաբերակցություն"</string>
- <string name="aspect_ratio_summary" msgid="4056406351663726494">"Եթե հավելվածը օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերակցությունը"</string>
- <string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Եթե հավելվածը օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերակցությունը։ Որոշ հավելվածներ կարող են չօպտիմալացվել կողմերի որոշակի հարաբերակցության համար։"</string>
- <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Եթե հավելվածն օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերակցությունը"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Եթե հավելվածն օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերակցությունը։ Որոշ հավելվածներ կարող են չօպտիմալացվել կողմերի որոշակի հարաբերակցության համար։"</string>
+ <string name="aspect_ratio_title" msgid="2451826875939676101">"Կողմերի հարաբերություն"</string>
+ <string name="aspect_ratio_summary" msgid="4056406351663726494">"Եթե հավելվածը օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերությունը"</string>
+ <string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Եթե հավելվածը օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերությունը։ Որոշ հավելվածներ կարող են չօպտիմալացվել կողմերի որոշակի հարաբերակցության համար։"</string>
+ <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Եթե հավելվածն օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերությունը"</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Եթե հավելվածն օպտիմալացված չէ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքի համար, ապա փորձեք կողմերի համապատասխան հարաբերությունը։ Որոշ հավելվածներ կարող են չօպտիմալացվել կողմերի որոշակի հարաբերակցության համար։"</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"Առաջարկվող հավելվածներ"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"Փոփոխված հավելվածներ"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Հավելվածի կանխադրված տարբերակ"</string>
<string name="user_aspect_ratio_fullscreen" msgid="1843427242540081996">"Լիաէկրան"</string>
<string name="user_aspect_ratio_half_screen" msgid="1015852057094310209">"Կիսաէկրան"</string>
- <string name="user_aspect_ratio_device_size" msgid="2339820985120881199">"Սարքի կողմերի հարաբերակցությունը"</string>
+ <string name="user_aspect_ratio_device_size" msgid="2339820985120881199">"Սարքի կողմերի հարաբերությունը"</string>
<string name="user_aspect_ratio_16_9" msgid="2286644872775170164">"16:9"</string>
<string name="user_aspect_ratio_3_2" msgid="199262962518318932">"3:2"</string>
<string name="user_aspect_ratio_4_3" msgid="5196232982878982220">"4:3"</string>
<string name="user_aspect_ratio_option_a11y" msgid="1235801996029095219">"<xliff:g id="NUMERATOR">%1$s</xliff:g> (<xliff:g id="DENOMINATOR">%2$s</xliff:g>)"</string>
- <string name="app_aspect_ratio_footer" msgid="4029509301182067475">"Երբ թարմացնեք կողմերի հարաբերակցությունը, հավելվածը կվերագործարկվի։ Որոշ փոփոխություններ կարող են չպահպանվել։ Որոշ հավելվածներ կարող են չօպտիմալացվել կողմերի որոշակի հարաբերակցության համար։"</string>
- <string name="aspect_ratio_experimental_title" msgid="9088785421062044831">"Կողմերի հարաբերակցություն (փորձնական)"</string>
- <string name="aspect_ratio_experiment_title" msgid="128614319422121040">"Կողմերի հարաբերակցություն (փորձարկում)"</string>
- <string name="aspect_ratio_labs_title" msgid="6733893837442759383">"Կողմերի հարաբերակցություն (փորձնական գործառույթ)"</string>
+ <string name="app_aspect_ratio_footer" msgid="4029509301182067475">"Երբ թարմացնեք կողմերի հարաբերությունը, հավելվածը կվերագործարկվի։ Որոշ փոփոխություններ կարող են չպահպանվել։ Որոշ հավելվածներ կարող են չօպտիմալացվել կողմերի որոշակի հարաբերակցության համար։"</string>
+ <string name="aspect_ratio_experimental_title" msgid="9088785421062044831">"Կողմերի հարաբերություն (փորձնական)"</string>
+ <string name="aspect_ratio_experiment_title" msgid="128614319422121040">"Կողմերի հարաբերություն (փորձարկում)"</string>
+ <string name="aspect_ratio_labs_title" msgid="6733893837442759383">"Կողմերի հարաբերություն (փորձնական գործառույթ)"</string>
<string name="aspect_ratio_experimental_label" msgid="6319009297672567578">"Փորձնական"</string>
<string name="aspect_ratio_experiment_label" msgid="7861871612376167784">"Փորձարկում"</string>
<string name="aspect_ratio_labs_label" msgid="7008498116297651342">"Փորձնական գործառույթ"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Լսել հոսքը"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Սկանավորեք աուդիո հոսքի QR կոդը՝ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքով լսելու համար"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Փոխանցման ժամանակ հնարավոր չէ փոխել գաղտնաբառը։ Գաղտնաբառը փոխելու համար նախ անջատեք աուդիոյի փոխանցումը։"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Ձեր գաղտնաբառը պետք է պարունակի 4-ից 16 նիշ, ընդ որում՝ դրանք պետք է լինեն միայն տառեր, թվեր և նշաններ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR կոդերի սկաներ"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Օգնության կարի՞ք ունեք"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Որոնեք կարգավորումներում"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Միայն սարքում"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Նոր կոնտակտները չեն համաժամացվի հաշվի հետ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Կոնտակտներն ըստ կանխադրման կպահվեն սարքում և կհամաժամացվեն ձեր հաշվի հետ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Որևէ հաշիվ սահմանված չէ որպես կանխադրված"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Չհաջողվեց հաշիվը սահմանել որպես կանխադրված"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Կանխադրված հաշիվ չկա"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Միայն սարքում"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Սկսելու համար ավելացրեք հաշիվ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Շրջագծել որոնելու համար"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Հպեք և պահեք գլխավոր էկրանի կոճակը կամ նավիգացիայի նշիչը, որպեսզի որոնեք՝ օգտագործելով ձեր էկրանի բովանդակությունը։"</string>
</resources>
diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml
index 9cd16c3..96457da 100644
--- a/res/values-in/arrays.xml
+++ b/res/values-in/arrays.xml
@@ -56,7 +56,7 @@
<item msgid="492518447401534767">"Terhubung"</item>
<item msgid="4322989558568666518">"Ditangguhkan"</item>
<item msgid="286164147080824297">"Memutus sambungan..."</item>
- <item msgid="1628460745311787730">"Sambungan terputus"</item>
+ <item msgid="1628460745311787730">"Tidak terhubung"</item>
<item msgid="4013828218541488949">"Gagal"</item>
<item msgid="5473541238056528086">"Diblokir"</item>
<item msgid="1114588261171522603">"Menghindari sambungan buruk untuk sementara"</item>
@@ -372,7 +372,7 @@
<item msgid="2397017538263427575">"Manual"</item>
</string-array>
<string-array name="vpn_states">
- <item msgid="2262719249581510939">"Terputus"</item>
+ <item msgid="2262719249581510939">"Tidak terhubung"</item>
<item msgid="9141074028293812365">"Memulai..."</item>
<item msgid="2234425878608626285">"Menghubungkan…"</item>
<item msgid="27547778933579155">"Terhubung"</item>
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Tas kantor"</item>
+ <item msgid="184985872234062767">"Bangunan klasik"</item>
+ <item msgid="9189550412466785530">"Gedung apartemen"</item>
+ <item msgid="2142527562511049422">"Balon kata-kata"</item>
+ <item msgid="2548100558260478605">"Sekelompok orang"</item>
+ <item msgid="2270003903304578284">"Bohlam"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Jangan Ganggu"</item>
+ <item msgid="1423820834865831361">"Orang berlari"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Barbel gym"</item>
+ <item msgid="2730180105015616518">"Renang"</item>
+ <item msgid="2666922823253345958">"Seseorang mendaki"</item>
+ <item msgid="8234880356472211396">"Seseorang melempar bola"</item>
+ <item msgid="4642980625253001443">"Seseorang menendang"</item>
+ <item msgid="4324795269518833500">"Controller game"</item>
+ <item msgid="7789966425125441125">"Palet warna seniman"</item>
+ <item msgid="663512680597461570">"Kepingan salju"</item>
+ <item msgid="7952183800501346803">"Payung pantai"</item>
+ <item msgid="799139025758265891">"Alat workshop"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Rol film"</item>
+ <item msgid="5827426100157335512">"Buku"</item>
+ <item msgid="8585828346253128384">"Bunga teratai"</item>
+ <item msgid="8788370542815300188">"Pikiran seseorang"</item>
+ <item msgid="7287354964767553293">"Headphone"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Kereta"</item>
+ <item msgid="4903790544026923026">"Mobil"</item>
+ <item msgid="5010405583912314582">"Garpu dan pisau"</item>
+ <item msgid="8939998598599064900">"Keranjang belanja"</item>
+ <item msgid="3379605903308731893">"Anak"</item>
+ <item msgid="7808668968550293112">"Cakar hewan"</item>
+ <item msgid="1000692647524056504">"Badge bintang"</item>
+ <item msgid="8270261073421676502">"Dua orang"</item>
+ <item msgid="5767782819651505460">"Bintang"</item>
+ <item msgid="4368451291862729334">"Hati"</item>
+ <item msgid="2613199102208419986">"Rumah"</item>
+ <item msgid="3022279986430275040">"Bulan sabit"</item>
+ <item msgid="5421089790869483206">"Jam"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 6bda374..c0c8686 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -35,7 +35,7 @@
<string name="radioInfo_service_off" msgid="6184928420860868571">"Radio Nonaktif"</string>
<string name="radioInfo_roaming_in" msgid="8892550453644088692">"Roaming"</string>
<string name="radioInfo_roaming_not" msgid="3137594549464975054">"Tidak Roaming"</string>
- <string name="radioInfo_data_disconnected" msgid="362604130117666924">"Sambungan terputus"</string>
+ <string name="radioInfo_data_disconnected" msgid="362604130117666924">"Tidak terhubung"</string>
<string name="radioInfo_data_connecting" msgid="7280819598028917888">"Menghubungkan"</string>
<string name="radioInfo_data_connected" msgid="8816467971633020141">"Terhubung"</string>
<string name="radioInfo_data_suspended" msgid="2001254415431299603">"Ditangguhkan"</string>
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Sambungkan perangkat baru"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Aktifkan otomatis besok"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Sambungkan ke telinga kanan"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Sambungkan ke telinga kiri"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Sambungkan ke telinga satunya"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Nonaktifkan Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Nonaktifkan fitur Bluetooth LE Audio jika perangkat mendukung kemampuan hardware LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Mode Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Aktifkan pratinjau UI Siaran Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Mengaktifkan pratinjau UI Berbagi LE Audio termasuk berbagi audio pribadi dan siaran pribadi"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Tampilkan tombol LE Audio di Detail Perangkat"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Abaikan Daftar yang Diizinkan Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Gunakan LE Audio secara default meskipun periferal LE Audio belum diverifikasi untuk memenuhi kriteria Daftar yang diizinkan."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Setel secara otomatis menggunakan jaringan dan sinyal nirkabel Anda"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Zona waktu otomatis"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Setel otomatis berdasarkan jaringan seluler di sekitar Anda"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Setel secara otomatis menggunakan lokasi perangkat, jika tersedia"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Gunakan default lokalitas"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Gunakan format 24 jam"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Waktu"</string>
@@ -295,7 +298,7 @@
<string name="security_settings_title" msgid="6710768415432791970">"Keamanan"</string>
<string name="encryption_and_credential_settings_title" msgid="5856216318961482983">"Enkripsi & kredensial"</string>
<string name="lockscreen_settings_title" msgid="4086121748092341549">"Layar kunci"</string>
- <string name="lockscreen_settings_what_to_show_category" msgid="9205490627927741254">"Elemen yang ditampilkan"</string>
+ <string name="lockscreen_settings_what_to_show_category" msgid="9205490627927741254">"Yang ditampilkan"</string>
<string name="disabled_by_administrator_summary" msgid="5424846182313851124">"Tidak tersedia"</string>
<string name="security_status_title" msgid="6958004275337618656">"Status keamanan"</string>
<string name="security_dashboard_summary" msgid="7571035662779425918">"Kunci layar, Temukan Perangkat Saya, keamanan aplikasi"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Angkat jari, lalu sentuh sensor lagi"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Tidak dapat menggunakan sensor sidik jari"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Kunjungi penyedia reparasi."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Buka dengan Sidik Jari saat Layar Nonaktif"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Gunakan Buka dengan Sidik Jari bahkan saat layar nonaktif"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Layar nonaktif, Buka kunci"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Setelan keamanan lainnya"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Kunci profil kerja, enkripsi, dan lainnya"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Enkripsi, kredensial, dan lainnya"</string>
@@ -845,7 +851,7 @@
<string name="bluetooth_connecting_error_message" msgid="3941893154784152112">"Tidak dapat terhubung ke <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_preference_found_media_devices" msgid="830061195998352840">"Perangkat yang tersedia"</string>
<string name="bluetooth_device_context_connect" msgid="4913860372216815855">"Hubungkan"</string>
- <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"Putuskan koneksi"</string>
+ <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"Berhenti hubungkan"</string>
<string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"Sambungkan & hubungkan"</string>
<string name="bluetooth_empty_list_bluetooth_off" msgid="7326727272747345476">"Jika Bluetooth aktif, perangkat dapat berkomunikasi dengan perangkat Bluetooth lain di sekitar"</string>
<string name="bluetooth_empty_list_bluetooth_off_auto_on_available" msgid="3430864468105204282">"Jika Bluetooth aktif, perangkat dapat berkomunikasi dengan perangkat Bluetooth lain di sekitar. Fitur seperti Quick Share dan Temukan Perangkat Saya menggunakan Bluetooth."</string>
@@ -925,7 +931,7 @@
<string name="show_hdr_sdr_ratio" msgid="4188007289024955585">"Tampilkan rasio HDR/SDR"</string>
<string name="show_hdr_sdr_ratio_summary" msgid="986292785096013733">"Tampilkan rasio HDR/SDR saat ini"</string>
<string name="nfc_quick_toggle_title" msgid="3607620705230351666">"NFC"</string>
- <string name="nfc_secure_settings_title" msgid="4906958426927741485">"Wajib buka kunci perangkat untuk NFC"</string>
+ <string name="nfc_secure_settings_title" msgid="4906958426927741485">"Wajibkan kunci perangkat dibuka untuk menggunakan NFC"</string>
<string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
<string name="android_beam_on_summary" msgid="6067720758437490896">"Siap mentransmisikan konten apl melalui NFC"</string>
<string name="android_beam_off_summary" msgid="5693961375631325042">"Mati"</string>
@@ -1129,7 +1135,7 @@
<string name="wifi_p2p_remembered_groups" msgid="5497007770930525695">"Grup yang diingat"</string>
<string name="wifi_p2p_failed_connect_message" msgid="6767831720507440027">"Tidak dapat menyambung."</string>
<string name="wifi_p2p_failed_rename_message" msgid="1317434386267376606">"Gagal mengubah nama perangkat."</string>
- <string name="wifi_p2p_disconnect_title" msgid="96361896458072463">"Putuskan koneksi?"</string>
+ <string name="wifi_p2p_disconnect_title" msgid="96361896458072463">"Berhenti hubungkan?"</string>
<string name="wifi_p2p_disconnect_message" msgid="1208761239498807208">"Jika diputuskan, sambungan Anda dengan <xliff:g id="PEER_NAME">%1$s</xliff:g> akan berakhir."</string>
<string name="wifi_p2p_disconnect_multiple_message" msgid="4490648217799144078">"Jika diputuskan, sambungan Anda dengan <xliff:g id="PEER_NAME">%1$s</xliff:g> dan <xliff:g id="PEER_COUNT">%2$s</xliff:g> perangkat lain akan berakhir."</string>
<string name="wifi_p2p_cancel_connect_title" msgid="8476985132989357041">"Batalkan undangan?"</string>
@@ -1303,7 +1309,7 @@
<string name="dark_ui_summary_on_auto_mode_custom" msgid="2526935680241734784">"Akan nonaktif otomatis pukul <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"Akan otomatis dinonaktifkan setelah waktu tidur"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"Akan dinonaktifkan saat <xliff:g id="ID_1">%1$s</xliff:g> berakhir"</string>
- <string name="dark_ui_text" msgid="4392646155331126666">"Tema gelap menggunakan latar belakang hitam agar daya baterai dapat bertahan lebih lama di beberapa layar. Jadwal tema gelap menunggu diaktifkan hingga layar nonaktif."</string>
+ <string name="dark_ui_text" msgid="4392646155331126666">"Tema gelap menggunakan latar belakang hitam agar daya baterai bertahan lebih lama di layar tertentu. Jika dijadwalkan, setelan tema gelap akan menunggu layar Anda nonaktif terlebih dahulu sebelum diterapkan."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Tema gelap saat ini mengikuti jadwal Mode Waktu Tidur Anda"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Setelan Mode Waktu Tidur"</string>
<string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Mode juga dapat mengaktifkan tema gelap}=1{{mode_1} juga mengaktifkan tema gelap}=2{{mode_1} dan {mode_2} juga mengaktifkan tema gelap}=3{{mode_1}, {mode_2}, dan {mode_3} juga mengaktifkan tema gelap}other{{mode_1}, {mode_2}, dan # lainnya juga mengaktifkan tema gelap}}"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Keyboard mengabaikan penekanan tombol yang sama secara berulang dan cepat"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Batas tombol pantul"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Pilih durasi waktu keyboard Anda mengabaikan penekanan tombol berulang"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 dtk"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 dtk"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 dtk"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 dtk"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 dtk"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 dtk"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Kustom"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"Nilai kustom"</string>
<string name="slow_keys" msgid="2891452895499690837">"Tombol lambat"</string>
- <string name="slow_keys_summary" msgid="2914214326648535377">"Menyesuaikan waktu yang diperlukan penekanan tombol untuk diaktifkan"</string>
+ <string name="slow_keys_summary" msgid="2914214326648535377">"Menyesuaikan lama waktu tombol untuk merespons setelah ditekan"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Tombol lekat"</string>
- <string name="sticky_keys_summary" msgid="1844953803625480623">"Tekan satu tombol pada satu waktu untuk mengaktifkan pintasan, bukan menekan tombol secara bersamaan"</string>
+ <string name="sticky_keys_summary" msgid="1844953803625480623">"Tekan tombol satu per satu untuk menggunakan pintasan, bukan menekan beberapa tombol secara bersamaan"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Tombol mouse"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Gunakan tombol mouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Gunakan keyboard untuk mengontrol kursor"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Scroll terbalik mouse"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scroll ke atas untuk memindahkan halaman ke bawah"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Tukar tombol kiri dan kanan"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Gunakan tombol mouse kiri sebagai tombol kanan"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tombol mouse untuk <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Gunakan tombol <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> untuk memindahkan kursor mouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Gunakan tombol <xliff:g id="CLICK_LABEL">%s</xliff:g> untuk mengklik tombol mouse utama"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Gunakan tombol <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> untuk menekan & menahan tombol mouse utama"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Gunakan tombol <xliff:g id="RELEASE_LABEL">%s</xliff:g> untuk melepaskan tombol mouse utama"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Gunakan tombol <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> untuk mengaktifkan/menonaktifkan mode scroll. Tindakan ini akan membuat tombol <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> men-scroll tampilan ke atas, bawah, kiri, atau kanan"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Gunakan tombol <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> untuk mengklik tombol mouse sekunder"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Pintasan keyboard"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Tampilkan daftar pintasan"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Keyboard & fitur profil kerja"</string>
@@ -2025,20 +2041,16 @@
<string name="modifier_keys_default_summary" msgid="8701640508670973258">"Default"</string>
<string name="modifier_keys_reset_message" msgid="5236994817619936058">"Yakin ingin mereset semua tombol pengubah ke defaultnya?"</string>
<string name="modifier_keys_done" msgid="8196199314913909700">"Selesai"</string>
- <string name="modifier_keys_cancel" msgid="7136520252570826772">"Batalkan"</string>
+ <string name="modifier_keys_cancel" msgid="7136520252570826772">"Batal"</string>
<string name="modifier_keys_reset" msgid="551170906710422041">"Reset"</string>
<string name="modifier_keys_picker_title" msgid="244545904150587851">"Pilih tombol pengubah"</string>
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Pilih tombol baru untuk <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Aksesibilitas keyboard fisik"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Tombol lekat, Tombol pantul, Tombol mouse"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Tombol Ulangi"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Tunda sebelum mengulangi"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Rasio Pengulangan"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Menahan tombol untuk mengulangi karakternya hingga tombol dilepaskan"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Tata letak <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Default"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Otomatis: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2244,7 +2256,7 @@
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"Setelan Cepat"</string>
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"Tombol volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"tombol volume"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Tekan dan tahan kedua tombol volume"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Tekan lama kedua tombol volume"</string>
<string name="accessibility_shortcut_edit_screen_title_two_finger_double_tap" msgid="8952595692906527694">"Ketuk dua kali dengan %1$d jari"</string>
<string name="accessibility_shortcut_edit_screen_summary_two_finger_double_tap" msgid="385404127425496362">"Ketuk layar dua kali dengan cepat menggunakan %1$d jari"</string>
<string name="accessibility_shortcut_edit_screen_title_triple_tap" msgid="3314488747597058942">"Ketuk tiga kali"</string>
@@ -2370,7 +2382,7 @@
<string name="captioning_appearance_summary" msgid="4620682807315588019">"Ukuran teks <xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g>"</string>
<string name="captioning_more_options_title" msgid="3484496882942539652">"Opsi lainnya"</string>
<string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"Sesuaikan ukuran dan gaya teks agar lebih mudah dibaca"</string>
- <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"Preferensi teks ini didukung di aplikasi media tertentu"</string>
+ <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"Tidak semua aplikasi mendukung preferensi teks ini"</string>
<string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"Tombol aksesibilitas"</string>
<string name="accessibility_shortcut_type_software_gesture" msgid="5608959693931019059">"geser dengan 2 jari dari bawah ke atas"</string>
<string name="accessibility_shortcut_type_hardware" msgid="4834144210432451916">"Tahan tombol volume"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Sesuaikan penggunaan daya"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Termasuk paket"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikasi berjalan normal"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Disarankan mengganti baterai"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Performa pengisian daya dan kapasitas baterai berkurang, dan disarankan untuk mengganti baterai."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Tingkat daya baterai rendah"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Aktifkan Penghemat Baterai untuk memperpanjang masa pakai baterai"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Tingkatkan masa pakai baterai"</string>
@@ -2985,10 +2999,9 @@
<string name="vpn_forget" msgid="2913950864877236737">"Lupakan"</string>
<string name="vpn_connect_to" msgid="216709261691085594">"Menghubungkan ke <xliff:g id="PROFILE">%s</xliff:g>"</string>
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Putuskan sambungan VPN ini?"</string>
- <string name="vpn_disconnect" msgid="7753808961085867345">"Putuskan koneksi"</string>
+ <string name="vpn_disconnect" msgid="7753808961085867345">"Berhenti hubungkan"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versi"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versi <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Lupakan VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Ganti VPN yang sudah ada?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Setel VPN selalu aktif?"</string>
@@ -3090,7 +3103,7 @@
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikasi dan data dari sesi tamu ini akan dihapus sekarang, dan semua aktivitas tamu mendatang akan dihapus setiap kali Anda keluar dari mode tamu"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"hapus, tamu, aktivitas, buang, data, pengunjung"</string>
<string name="enable_guest_calling" msgid="4620657197834392094">"Izinkan tamu melakukan panggilan telepon"</string>
- <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Histori panggilan akan dibagikan kepada pengguna tamu"</string>
+ <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Histori panggilan juga akan tersedia bagi pengguna tamu"</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"Aktifkan panggilan telepon & SMS"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"Jadikan pengguna ini sebagai admin"</string>
<string name="user_remove_user" msgid="8468203789739693845">"Hapus pengguna"</string>
@@ -3215,7 +3228,7 @@
<string name="sim_selection_required_pref" msgid="231437651041498359">"Perlu dipilih"</string>
<string name="sim_selection_channel_title" msgid="3193666315607572484">"pilihan SIM"</string>
<string name="dashboard_title" msgid="5660733037244683387">"Setelan"</string>
- <string name="network_dashboard_title" msgid="788543070557731240">"Jaringan dan internet"</string>
+ <string name="network_dashboard_title" msgid="788543070557731240">"Jaringan & internet"</string>
<string name="network_dashboard_summary_mobile" msgid="7750924671970583670">"Data seluler, Wi‑Fi, hotspot"</string>
<string name="network_dashboard_summary_no_mobile" msgid="4022575916334910790">"Wi‑Fi, hotspot"</string>
<string name="connected_devices_dashboard_title" msgid="19868275519754895">"Perangkat terhubung"</string>
@@ -3406,12 +3419,12 @@
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Buat mode Anda sendiri"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Hanya dapatkan notifikasi dari aplikasi dan orang yang penting"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Setel jadwal"</string>
- <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Jadwal berdasarkan"</string>
+ <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Jadwalkan menurut"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"Hari dan waktu"</string>
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"09.00 - 17.00 hari kerja\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Acara kalender"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} aktif}=2{{mode_1} dan {mode_2} aktif}=3{{mode_1}, {mode_2}, dan {mode_3} aktif}other{{mode_1}, {mode_2}, dan # lainnya aktif}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode dapat otomatis diaktifkan}other{# mode dapat otomatis diaktifkan}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Jangan Ganggu}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AKTIF"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Tidak disetel"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Dinonaktifkan"</string>
@@ -3437,7 +3450,7 @@
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Kapan mode akan otomatis diaktifkan"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Jadwal acara"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Aktifkan selama acara untuk"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Lokasi balasan undangan"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Yang balasan undangannya"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Jadwal waktu"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Jadwal"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> jam, <xliff:g id="MINUTES">%2$d</xliff:g> mnt"</string>
@@ -3650,8 +3663,8 @@
<string name="recent_convo_removed" msgid="8686414146325958281">"Percakapan dihapus"</string>
<string name="clear" msgid="5092178335409471100">"Hapus"</string>
<string name="clear_conversation" msgid="5564321180363279096">"Hapus <xliff:g id="CONVERSATION_NAME">%1$s</xliff:g>"</string>
- <string name="conversation_onboarding_title" msgid="5194559958353468484">"Percakapan prioritas dan yang diubah akan muncul di sini"</string>
- <string name="conversation_onboarding_summary" msgid="2484845363368486941">"Setelah ditandai sebagai prioritas atau diubah-ubah, percakapan akan muncul di sini. \n\nUntuk mengubah setelan percakapan: \nGeser layar dari atas ke bawah untuk membuka menu notifikasi, lalu sentuh lama percakapan."</string>
+ <string name="conversation_onboarding_title" msgid="5194559958353468484">"Percakapan yang Anda tandai sebagai prioritas dan yang Anda ubah akan muncul di sini"</string>
+ <string name="conversation_onboarding_summary" msgid="2484845363368486941">"Setelah Anda tandai sebagai prioritas atau Anda ubah, percakapan akan muncul di sini. \n\nUntuk mengubah setelan percakapan: \nGeser layar dari atas ke bawah untuk membuka menu notifikasi, lalu sentuh lama percakapan."</string>
<string name="notification_importance_min_title" msgid="7676541266705442501">"Perkecil"</string>
<string name="notification_importance_high_title" msgid="394129291760607808">"Munculkan di layar"</string>
<string name="notification_silence_title" msgid="4085829874452944989">"Senyap"</string>
@@ -3693,7 +3706,7 @@
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Jika Anda menonaktifkan akses notifikasi untuk <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, akses ke mode Jangan Ganggu mungkin juga akan dinonaktifkan."</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Jika Anda menonaktifkan akses notifikasi untuk <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, akses Mode mungkin juga akan dinonaktifkan."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Nonaktifkan"</string>
- <string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Batalkan"</string>
+ <string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Batal"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Real-time"</string>
<string name="notif_type_ongoing_summary" msgid="2348867528527573574">"Komunikasi yang sedang berlangsung dari aplikasi yang sedang digunakan, navigasi, panggilan telepon, dan lain-lain"</string>
<string name="notif_type_conversation" msgid="4383931408641374979">"Percakapan"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Saat Anda menerima banyak notifikasi dalam waktu singkat, perangkat akan menurunkan volumenya dan meminimalkan getaran hingga selama 2 menit. Panggilan, alarm, dan percakapan prioritas tidak akan terpengaruh. \n\nNotifikasi yang diterima saat pengurangan suara dan getaran diaktifkan dapat ditemukan dengan menarik layar ke bawah."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Terapkan pada profil kerja"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Diterapkan untuk aplikasi profil kerja"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Layanan bantuan VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Tidak ada aplikasi terinstal yang meminta dijalankan sebagai layanan bantuan VR"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Izinkan akses layanan VR untuk <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3752,7 +3775,7 @@
<string name="manage_zen_access_title" msgid="1562322900340107269">"Akses Jangan Ganggu"</string>
<string name="zen_access_detail_switch" msgid="4183681772666138993">"Izinkan Mode Jangan Ganggu"</string>
<string name="zen_access_empty_text" msgid="3779921853282293080">"Tidak ada aplikasi terpasang yang meminta akses Jangan Ganggu"</string>
- <string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Akses mode"</string>
+ <string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Akses Mode"</string>
<string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Izinkan akses Mode"</string>
<string name="zen_modes_access_empty_text" msgid="8750927923904377110">"Tidak ada aplikasi terinstal yang meminta akses Mode"</string>
<string name="app_notifications_off_desc" msgid="2484843759466874201">"Anda belum mengizinkan notifikasi dari aplikasi ini"</string>
@@ -3800,7 +3823,7 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"Selama acara untuk"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"Kalender mana saja"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"Jika balasannya adalah"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Ya, Mungkin, atau Tidak dibalas"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Ya, Mungkin, atau Tidak ada balasan"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Ya atau Mungkin"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"Ya"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"Aturan tidak ditemukan."</string>
@@ -3893,7 +3916,7 @@
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"Aplikasi"</string>
<string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Notifikasi yang boleh mengganggu"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"Izinkan semua notifikasi"</string>
- <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Tidak ada yang boleh menginterupsi}=1{{sound_category_1} boleh menginterupsi}=2{{sound_category_1} dan {sound_category_2} boleh menginterupsi}=3{{sound_category_1}, {sound_category_2}, dan {sound_category_3} boleh menginterupsi}other{{sound_category_1}, {sound_category_2}, dan # lainnya boleh menginterupsi}}"</string>
+ <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Tidak ada yang boleh mengganggu}=1{{sound_category_1} boleh mengganggu}=2{{sound_category_1} dan {sound_category_2} boleh mengganggu}=3{{sound_category_1}, {sound_category_2}, dan {sound_category_3} boleh mengganggu}other{{sound_category_1}, {sound_category_2}, dan # lainnya boleh mengganggu}}"</string>
<string name="zen_mode_sounds_none" msgid="6557474361948269420">"Tidak ada yang boleh mengganggu"</string>
<string name="zen_mode_people_none" msgid="4613147461974255046">"Tidak ada orang yang boleh mengganggu"</string>
<string name="zen_mode_people_some" msgid="9101872681298810281">"Beberapa orang boleh mengganggu"</string>
@@ -3930,13 +3953,13 @@
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Info dan setelan di <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Dikelola oleh <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Nonaktifkan <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Mode ini tidak akan diaktifkan saat dinonaktifkan"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Jika dinonaktifkan, mode ini tidak akan pernah diterapkan"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Nonaktifkan"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Aktifkan <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Mode ini mungkin diaktifkan otomatis berdasarkan setelan ini"</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Mode ini mungkin otomatis diaktifkan menurut setelannya"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Aktifkan"</string>
- <string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Menyetel mode yang mengikuti jadwal rutin"</string>
- <string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Menyetel mode untuk menyinkronkan dengan acara kalender dan mengundang respons"</string>
+ <string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Setel mode yang mengikuti jadwal rutin"</string>
+ <string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Setel mode untuk menjalankan sinkronisasi acara kalender dan respons undangan"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"Merancang rutinitas tidur yang menenangkan. Menyetel alarm, meredupkan layar, dan memblokir notifikasi."</string>
<string name="zen_mode_blurb_driving" msgid="1316054379000667305">"Memprioritaskan keamanan di jalan untuk mengemudi dengan fokus dan bebas distraksi"</string>
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Memblokir distraksi dan gangguan dari perangkat agar dapat fokus"</string>
@@ -4714,7 +4737,7 @@
<string name="pref_title_network_details" msgid="7329759534269363308">"Detail jaringan"</string>
<string name="devices_title" msgid="649715719278562515">"Perangkat"</string>
<string name="choose_network_title" msgid="5355609223363859430">"Pilih jaringan"</string>
- <string name="network_disconnected" msgid="8281188173486212661">"Terputus"</string>
+ <string name="network_disconnected" msgid="8281188173486212661">"Tidak terhubung"</string>
<string name="network_connected" msgid="7637745547242487795">"Terhubung"</string>
<string name="network_connecting" msgid="6856124847029124041">"Menghubungkan…"</string>
<string name="network_could_not_connect" msgid="676574629319069922">"Tidak dapat terhubung"</string>
@@ -4985,7 +5008,7 @@
<string name="error_capturing_system_heap_dump_message" msgid="2352983250048200052">"Tidak dapat mengambil heap dump sistem"</string>
<string name="automatic_system_heap_dump_title" msgid="4093306504711109479">"Otomatis ambil heap dump sistem"</string>
<string name="automatic_system_heap_dump_summary" msgid="4060846186592886986">"Otomatis ambil heap dump untuk Sistem Android saat sistem menggunakan terlalu banyak memori"</string>
- <string name="wifi_disconnect_button_text" msgid="5698154296678571998">"Putuskan koneksi"</string>
+ <string name="wifi_disconnect_button_text" msgid="5698154296678571998">"Berhenti hubungkan"</string>
<string name="wfc_disclaimer_emergency_limitation_title_text" msgid="8276287227589397162">"Panggilan darurat"</string>
<string name="wfc_disclaimer_emergency_limitation_desc_text" msgid="5503902001191552196">"Panggilan darurat melalui Panggilan Wi‑Fi tidak didukung oleh operator Anda.\nPerangkat beralih ke jaringan seluler secara otomatis untuk melakukan panggilan darurat.\nPanggilan darurat hanya dapat dilakukan dengan cakupan seluler."</string>
<string name="wifi_calling_summary" msgid="8566648389959032967">"Gunakan Wi‑Fi untuk melakukan panggilan dengan kualitas lebih baik"</string>
@@ -5029,7 +5052,7 @@
<string name="default_app_none" msgid="5420632042222036264">"Tidak ada"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"Pilihan ini tidak valid lagi. Coba lagi."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"Tekan & tahan tombol daya"</string>
- <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Tekan dan tahan tombol daya untuk mengakses"</string>
+ <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Tekan lama tombol daya untuk mengakses"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Menu daya"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Asisten digital"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Akses asisten digital"</string>
@@ -5037,8 +5060,8 @@
<string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"Untuk menggunakannya, setel kunci layar terlebih dahulu"</string>
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Menu daya:\nTekan tombol daya dan tombol naikkan volume secara bersamaan"</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"Mencegah dering:\nTekan tombol volume untuk menggunakan pintasan"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"Durasi tekan & tahan"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Sesuaikan sensitivitas dengan memilih durasi menekan & menahan tombol daya"</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"Lama penekanan"</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Sesuaikan sensitivitas dengan mengatur lama penekanan tombol daya"</string>
<string name="power_menu_long_press_for_assist_sensitivity_low_label" msgid="3430099983480845635">"Singkat"</string>
<string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"Lama"</string>
<string name="lockscreen_privacy_wallet_setting_toggle" msgid="4188327143734192000">"Tampilkan Wallet"</string>
@@ -5149,7 +5172,7 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Gunakan penyematan aplikasi"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Gunakan opsi developer"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Gunakan layanan cetak"</string>
- <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"Izinkan peralihan pengguna"</string>
+ <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"Izinkan berganti pengguna"</string>
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"izinkan, beberapa, pengguna, izin, banyak"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"beberapa, pengguna, profil, orang, akun, tombol akses, banyak"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Gunakan proses debug nirkabel"</string>
@@ -5270,8 +5293,8 @@
<string name="aspect_ratio_title" msgid="2451826875939676101">"Rasio aspek"</string>
<string name="aspect_ratio_summary" msgid="4056406351663726494">"Coba rasio aspek baru untuk melihat aplikasi ini jika aplikasi belum didesain agar sesuai dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Coba rasio aspek baru untuk melihat aplikasi ini jika aplikasi belum didesain agar sesuai dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Beberapa aplikasi mungkin tidak dioptimalkan untuk rasio aspek tertentu."</string>
- <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Coba rasio aspek baru untuk melihat aplikasi jika aplikasi belum didesain agar sesuai dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Coba rasio aspek baru untuk melihat aplikasi jika aplikasi belum didesain agar sesuai dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Beberapa aplikasi mungkin tidak dioptimalkan untuk rasio aspek tertentu."</string>
+ <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Coba rasio aspek baru untuk aplikasi yang desain tampilannya belum sesuai dengan perangkat <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Anda"</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Coba rasio aspek baru untuk aplikasi yang desain tampilannya belum sesuai dengan perangkat <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Anda. Beberapa aplikasi mungkin tidak dioptimalkan untuk rasio aspek tertentu."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"Aplikasi yang disarankan"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"Aplikasi yang diubah"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Default aplikasi"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Dengarkan streaming"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Pindai kode QR streaming audio agar dapat mendengarkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Tidak dapat mengedit sandi saat sedang membagikan audio. Untuk mengubah sandi, nonaktifkan berbagi audio terlebih dahulu."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Sandi Anda harus berisi 4-16 karakter dan hanya menggunakan huruf, angka, serta simbol"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Pemindai kode QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Perlu bantuan?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Telusuri Setelan"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Perangkat saja"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Kontak baru tidak akan disinkronkan dengan akun"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontak akan disimpan ke perangkat dan disinkronkan ke akun Anda secara default"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Tidak ada default yang disetel"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Terjadi error saat menetapkan akun default"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Tidak ada default yang disetel"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Perangkat saja"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Tambahkan akun untuk memulai"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Lingkari untuk Menelusuri"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Sentuh lama tombol Layar utama atau tuas navigasi untuk menelusuri menggunakan konten di layar."</string>
</resources>
diff --git a/res/values-is/arrays.xml b/res/values-is/arrays.xml
index 6d70ab2..bbc7b6f 100644
--- a/res/values-is/arrays.xml
+++ b/res/values-is/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Skjalataska"</item>
+ <item msgid="184985872234062767">"Klassísk bygging"</item>
+ <item msgid="9189550412466785530">"Íbúðarhús"</item>
+ <item msgid="2142527562511049422">"Talblaðra"</item>
+ <item msgid="2548100558260478605">"Hópur fólks"</item>
+ <item msgid="2270003903304578284">"Ljósapera"</item>
+ <item msgid="4793496619091161864">"Dagatal"</item>
+ <item msgid="5673625795644364100">"Ónáðið ekki"</item>
+ <item msgid="1423820834865831361">"Manneskja að hlaupa"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Líkamsræktarlóð"</item>
+ <item msgid="2730180105015616518">"Sund"</item>
+ <item msgid="2666922823253345958">"Manneskja í fjallgöngu"</item>
+ <item msgid="8234880356472211396">"Manneskja hendir bolta"</item>
+ <item msgid="4642980625253001443">"Manneskja sparkar"</item>
+ <item msgid="4324795269518833500">"Leikjafjarstýring"</item>
+ <item msgid="7789966425125441125">"Litaspjald listamanns"</item>
+ <item msgid="663512680597461570">"Snjókorn"</item>
+ <item msgid="7952183800501346803">"Sólhlíf"</item>
+ <item msgid="799139025758265891">"Verkfæri"</item>
+ <item msgid="8112685757657659269">"Píanó"</item>
+ <item msgid="3861584909935022342">"Gamaldags filma"</item>
+ <item msgid="5827426100157335512">"Bók"</item>
+ <item msgid="8585828346253128384">"Lótusblóm"</item>
+ <item msgid="8788370542815300188">"Hugur manneskju"</item>
+ <item msgid="7287354964767553293">"Heyrnartól"</item>
+ <item msgid="2530059623783800987">"Sjónvarp"</item>
+ <item msgid="5307182323469376758">"Lest"</item>
+ <item msgid="4903790544026923026">"Bíll"</item>
+ <item msgid="5010405583912314582">"Hnífur og gaffall"</item>
+ <item msgid="8939998598599064900">"Innkaupakarfa"</item>
+ <item msgid="3379605903308731893">"Barn"</item>
+ <item msgid="7808668968550293112">"Þófi"</item>
+ <item msgid="1000692647524056504">"Stjörnumerking"</item>
+ <item msgid="8270261073421676502">"Tvær manneskjur"</item>
+ <item msgid="5767782819651505460">"Stjarna"</item>
+ <item msgid="4368451291862729334">"Hjarta"</item>
+ <item msgid="2613199102208419986">"Hús"</item>
+ <item msgid="3022279986430275040">"Hálfmáni"</item>
+ <item msgid="5421089790869483206">"Klukka"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 0b34df0..ca30b07 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Para nýtt tæki"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Kveikja sjálfkrafa á morgun"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Ef þú slekkur á Bluetooth þá kviknar aftur á því næsta dag"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Para hægra eyra"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Para vinstra eyra"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Para hitt eyrað"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Slökkva á Bluetooth LE-hljóði"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Slekkur á Bluetooth LE-hljóðeiginleika ef tækið styður vélbúnaðareiginleika LE-hljóðs."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE-hljóðstilling"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Virkja forskoðun á notendaviðmóti fyrir útsendingu Bluetooth LE-hljóðs"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Virkjar forskoðun á notendaviðmóti LE-hljóðdeilingar, þ.m.t. persónulegrar hljóðdeilingar og lokaðrar útsendingar"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Sýna rofa LE-hljóðs í tækjaupplýsingum"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Sneiða hjá hvítum lista Bluetooth LE-hljóðs"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Nota LE-hljóð sjálfkrafa jafnvel þótt jaðartæki LE-hljóðs hafi ekki verið staðfest með tilliti til skilyrða hvíta listans."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Stilla sjálfvirkt með því að nota merki netkerfis og þráðlaus merki"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Sjálfvirkt tímabelti"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Stilla sjálfvirkt samkvæmt farsímakerfum nálægt þér"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Sjálfvirk stilling út frá staðsetningu tækis, ef tiltæk"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Nota sjálfgefið snið staðar"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Nota 24 tíma snið"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Tími"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lyftu fingrinum og snertu svo skynjarann aftur"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Ekki er hægt að nota fingrafaralesara"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Þú verður að fara á verkstæði."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Slökkt á skjá, fingrafarskenni"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Notaðu Fingrafarskenni, jafnvel þótt slökkt sé á skjánum"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Slökkt á skjá, opna"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Fleiri öryggisstillingar"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Lás vinnusniðs, dulkóðun og fleira"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Dulkóðun, skilríki og fleira"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Lyklaborðið hunsar þegar þú ýtir snöggt og endurtekið á sama lykilinn"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Mörk endurkastslykils"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Veldu tímann sem lyklaborðið þitt hunsar lykil í þegar þú ýtir endurtekið á hann"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 sek."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 sek."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 sek."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 sek."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 sek."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 sek."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Sérsniðið"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"sérsniðið gildi"</string>
<string name="slow_keys" msgid="2891452895499690837">"Hægir lyklar"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Breyttu tímanum sem það tekur fyrir lykil að virkjast eftir að þú ýtir á hann"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Festilyklar"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Ýttu á einn lykil í einu fyrir flýtilykla í staðinn fyrir að halda lyklum saman niðri"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Músarhnappar"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Notar músarlykla"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Notaðu lyklaborðið til að stjórna bendlinum"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Öfug fletting músar"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Flettu upp til að færa síðuna niður"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Víxla hægri og vinstri hnappi"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Notaðu vinstri músarhnappinn sem hægri hnapp"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Músarlykar fyrir <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Notaðu lyklana <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> til að færa músarbendilinn"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Notaðu lykilinn <xliff:g id="CLICK_LABEL">%s</xliff:g> til að smella á aðalmúsarhnappinn"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Notaðu lykilinn <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> til að halda aðalmúsarhnappinum niðri"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Notaðu lykilinn <xliff:g id="RELEASE_LABEL">%s</xliff:g> til að sleppa aðalmúsarhnappinum"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Notaðu lykilinn <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> til að breyta flettistillingu. Þetta lætur lyklana <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> fletta síðunni upp, niður, til vinstri eða hægri."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Notaðu lykilinn <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> til að smella á aukamúsarhnappinn"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Flýtilyklar"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Sýna lista yfir flýtileiðir"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Lyklaborð og verkfæri vinnusniðs"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Veldu nýjan lykil fyrir <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Aðgengi vélbúnaðarlyklaborðs"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Festilyklar, endurkastslyklar, músarhnappar"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Takkar fyrir endurtekningu"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Töf á undan endurtekningu"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Hraði endurtekninga"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Haltu takka niðri til að endurtaka stafi og slepptu til að hætta"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Útlit: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Sjálfgefið"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Sjálfvirkt: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2417,7 +2428,7 @@
<string name="enable_quick_setting" msgid="6648073323202243604">"Sýna í flýtistillingum"</string>
<string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Rautt-grænt, grænt veikt"</string>
<string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Rautt-grænt, rautt veikt"</string>
- <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Blágul"</string>
+ <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Blágult"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Grátónar"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Styrkur"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"Ekki í boði í grátónastillingu eða þegar slökkt er á litaleiðréttingu"</string>
@@ -2443,7 +2454,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"Forskoða"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"Hefðbundnir valkostir"</string>
<string name="captioning_locale" msgid="5533303294290661590">"Tungumál"</string>
- <string name="captioning_text_size" msgid="5764254558945371745">"Stærð skjátexta"</string>
+ <string name="captioning_text_size" msgid="5764254558945371745">"Stærð skjátextaleturs"</string>
<string name="captioning_preset" msgid="4174276086501638524">"Stíll texta"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"Sérsniðnir valkostir"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"Bakgrunnslitur"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Stilla orkunotkun"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Innifaldir pakkar"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Forrit virka eðlilega"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Mælt er með því að skipta um rafhlöðu."</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Rafhlöðurýmd og hleðsluafköst eru takmörkuð og mælt er með því að skipta um rafhlöðu."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Lítil hleðsla á rafhlöðu"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Kveiktu á rafhlöðusparnaði til að auka endingu rafhlöðunnar"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Bæta rafhlöðuendingu"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Aftengja þessa VPN-tengingu?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Aftengja"</string>
<string name="vpn_version" msgid="6344167191984400976">"Útgáfa"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Útgáfa <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Gleyma VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Skipta út núverandi VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Velja VPN sem alltaf er kveikt á?"</string>
@@ -3408,10 +3420,10 @@
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Stilla áætlun"</string>
<string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Áætlun byggist á"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"Dagur og tími"</string>
- <string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„9 f.h. - 5 e.h. á virkum dögum“"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„9:00 – 17:00 á virkum dögum“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Dagatalsviðburðir"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} er virk}=2{{mode_1} og {mode_2} eru virkar}=3{{mode_1}, {mode_2} og {mode_3} eru virkar}one{{mode_1}, {mode_2} og # í viðbót eru virkar}other{{mode_1}, {mode_2} og # í viðbót eru virkar}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Ein stilling getur kveikt sjálfkrafa á sér}one{# stilling getur kveikt sjálfkrafa á sér}other{# stillingar geta kveikt sjálfkrafa á sér}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ónáðið ekki}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"KVEIKT"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ekki stillt"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Slökkt"</string>
@@ -3469,7 +3481,7 @@
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"Breyttu þema tækisins í dökkan bakgrunn, hann er þægilegri fyrir augun"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Engar skjábreytingar}=1{{effect_1}}=2{{effect_1} og {effect_2}}=3{{effect_1}, {effect_2} og {effect_3}}one{{effect_1}, {effect_2} og # í viðbót}other{{effect_1}, {effect_2} og # í viðbót}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"Leyfa allar tilkynningar"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Fólk, forrit og hljóð geta valdið truflun"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Fólk, forrit og hljóð mega trufla"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Skjávalkostir fyrir síaðar tilkynningar"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Þegar kveikt er á „Ónáðið ekki“"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Ekkert hljóð frá tilkynningum"</string>
@@ -3528,7 +3540,7 @@
<string name="zen_category_apps" msgid="1167374545618451925">"Forrit"</string>
<string name="zen_category_exceptions" msgid="1316097981052752811">"Vekjarar & aðrar truflanir"</string>
<string name="zen_category_schedule" msgid="2003707171924226212">"Áætlanir"</string>
- <string name="zen_category_duration" msgid="7515850842082631460">"Tímalengd fyrir flýtistillingar"</string>
+ <string name="zen_category_duration" msgid="7515850842082631460">"Tímalengd flýtistillinga"</string>
<string name="zen_settings_general" msgid="2704932194620124153">"Almennt"</string>
<string name="zen_sound_footer" msgid="4090291351903631977">"Þegar kveikt er á „Ónáðið ekki“ gefur síminn hvorki frá sér hljóð né titrar, nema vegna þeirra atriða sem þú leyfir hér fyrir ofan."</string>
<string name="zen_custom_settings_dialog_title" msgid="4613603772432720380">"Sérsniðnar stillingar"</string>
@@ -3689,7 +3701,7 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"Það getur svarað skilaboðum og framkvæmt aðgerðir á hnöppum tilkynninga, þar á meðal að blunda eða hunsa tilkynningar og svara símtölum."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Breytt stillingum"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Það getur kveikt eða slökkt á „Ónáðið ekki“ og breytt tengdum stillingum."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Getur stjórnað og virkjað stillingar og breytt tengdum stillingum."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Það getur stjórnað og virkjað stillingar og breytt tengdum stillingum."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Ef þú slekkur á tilkynningaaðgangi fyrir <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> kann einnig að verða slökkt á Ónáðið ekki."</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ef þú slekkur á tilkynningaaðgangi fyrir <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> verður hugsanlega ekki slökkt á aðgangi að stillingum."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Slökkva"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Þegar þú færð margar tilkynningar á skömmum tíma mun tækið þitt lækka hljóðstyrk og fækka viðvörunum í allt að tvær mínútur. Þetta hefur ekki áhrif á símtöl, vekjara og forgangssamtöl. \n\nÞú getur fundið mótteknar tilkynningar meðan á dempun stendur með því að draga niður efst á skjánum."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Nota fyrir vinnusnið"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Nota fyrir forrit á vinnusniði"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Hjálparþjónusta sýndarveruleika"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Engin uppsett forrit hafa óskað eftir að vera keyrð sem sýndarveruleikaþjónusta."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Leyfa sýndarveruleikaaðgang fyrir <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -4155,7 +4177,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Allar reglur um „Ónáðið ekki“ sem búnar voru til af þessu forriti verða fjarlægðar."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Veita <xliff:g id="APP">%1$s</xliff:g> aðgang að stillingum?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Forritið getur kveikt/slökkt á „Ónáðið ekki“, stjórnað og virkjað stillingar og breytt tengdum stillingum."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Afturkalla aðgang að Stillingum fyrir <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Afturkalla aðgang að stillingum fyrir <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Allar stillingar sem þetta forrit hefur búið til verða fjarlægðar."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Ekki spara"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Spara"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Hlusta á streymi"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skannaðu QR-kóða hljóðstreymis til að hlusta með <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Ekki hægt að breyta aðgangsorði á meðan deilt er. Til að breyta aðgangsorðinu skaltu fyrst slökkva á hljóðdeilingu."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Aðgangsorðið þitt verður að innihalda 4–16 stafi og má aðeins innihalda bókstafi, tölustafi og tákn"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-kóðaskanni"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Þarftu aðstoð?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Leitarstillingar"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Aðeins tæki"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nýir tengiliðir verða ekki samstilltir við reikning"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Tengiliðir verða sjálfkrafa vistaðir í tækinu þínu og samstilltir við reikninginn þinn"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ekkert sjálfgildi stillt"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Villa kom upp við að stilla sjálfgefinn reikning"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ekkert sjálfgildi stillt"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Aðeins tæki"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Bættu reikningi við til að hefjast handa"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Haltu heimahnappnum eða flettihandfanginu inni til að leita út frá efninu sem birtist á skjánum þínum."</string>
</resources>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index 45d8196..8969d0e 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Valigetta"</item>
+ <item msgid="184985872234062767">"Edificio classico"</item>
+ <item msgid="9189550412466785530">"Condominio"</item>
+ <item msgid="2142527562511049422">"Fumetto"</item>
+ <item msgid="2548100558260478605">"Gruppo di persone"</item>
+ <item msgid="2270003903304578284">"Lampadina"</item>
+ <item msgid="4793496619091161864">"Calendario"</item>
+ <item msgid="5673625795644364100">"Non disturbare"</item>
+ <item msgid="1423820834865831361">"Persona che corre"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Manubrio da palestra"</item>
+ <item msgid="2730180105015616518">"Nuoto"</item>
+ <item msgid="2666922823253345958">"Persona che fa un\'escursione"</item>
+ <item msgid="8234880356472211396">"Persona che lancia una palla"</item>
+ <item msgid="4642980625253001443">"Persona che tira un calcio"</item>
+ <item msgid="4324795269518833500">"Controller di gioco"</item>
+ <item msgid="7789966425125441125">"Tavolozza dei colori da artista"</item>
+ <item msgid="663512680597461570">"Fiocco di neve"</item>
+ <item msgid="7952183800501346803">"Ombrellone da spiaggia"</item>
+ <item msgid="799139025758265891">"Strumenti per il workshop"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Pellicola"</item>
+ <item msgid="5827426100157335512">"Libro"</item>
+ <item msgid="8585828346253128384">"Fiore di loto"</item>
+ <item msgid="8788370542815300188">"Mente di una persona"</item>
+ <item msgid="7287354964767553293">"Cuffie"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Treno"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Forchetta e coltello"</item>
+ <item msgid="8939998598599064900">"Carrello"</item>
+ <item msgid="3379605903308731893">"Figlio"</item>
+ <item msgid="7808668968550293112">"Zampa di animale"</item>
+ <item msgid="1000692647524056504">"Badge a forma di stella"</item>
+ <item msgid="8270261073421676502">"Due persone"</item>
+ <item msgid="5767782819651505460">"Stella"</item>
+ <item msgid="4368451291862729334">"Cuore"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Mezza luna"</item>
+ <item msgid="5421089790869483206">"Orologio"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index f75c879..d635aff 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Accoppia nuovo dispositivo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Attiva automaticamente domani"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Accoppia orecchio dx"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Accoppia orecchio sx"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Accoppia l\'altro orecchio"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Disattiva Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Disattiva la funzionalità Bluetooth LE audio se il dispositivo supporta funzioni hardware LE audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modalità Bluetooth LE audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Attiva anteprima UI di trasmissione Bluetooth LE audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Attiva l\'anteprima della UI di condivisione LE audio, incluse la condivisione audio personale e la trasmissione privata"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Mostra comandi LE audio nei dettagli dispositivo"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ignora lista consentita Bluetooth LE audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Usa LE audio per impostazione predefinita anche se non è stato verificato che la periferica LE audio soddisfa i criteri della lista consentita."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Imposta automaticamente la data e l\'ora utilizzando la rete e gli indicatori wireless"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuso orario automatico"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Imposta automaticamente la data e l\'ora in base alle reti mobile nelle tue vicinanze"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Imposta automaticamente la data e l\'ora utilizzando la posizione del dispositivo, se disponibile"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usa impostazioni internazionali predefinite"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Usa il formato 24 ore"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Ora"</string>
@@ -279,7 +282,7 @@
<string name="lock_after_timeout_summary" msgid="4869265514658147304">"<xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> dopo il timeout"</string>
<string name="lock_immediately_summary_with_exception" msgid="40819611828339044">"Subito dopo lo spegnimento dello schermo, tranne quando tenuto sbloccato da <xliff:g id="TRUST_AGENT_NAME">%1$s</xliff:g>"</string>
<string name="lock_after_timeout_summary_with_exception" msgid="3441806647509073124">"<xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> dopo lo spegnimento dello schermo, tranne quando tenuto sbloccato da <xliff:g id="TRUST_AGENT_NAME">%2$s</xliff:g>"</string>
- <string name="owner_info_settings_title" msgid="3555626140700093017">"Testo su schermata di blocco"</string>
+ <string name="owner_info_settings_title" msgid="3555626140700093017">"Aggiungi testo su schermata di blocco"</string>
<string name="owner_info_settings_summary" msgid="347238313388083297">"Nessuno"</string>
<string name="owner_info_settings_edit_text_hint" msgid="841926875876050274">"Ad es. Dispositivo Android di Anna"</string>
<string name="location_settings_title" msgid="8375074508036087178">"Posizione"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Solleva il dito, quindi tocca di nuovo il sensore"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Impossibile utilizzare il sensore di impronte digitali"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Contatta un fornitore di servizi di riparazione."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Sblocco con l\'Impronta a schermo spento"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Usa lo Sblocco con l\'Impronta anche quando lo schermo è spento"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Schermo spento, Sblocco"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Altre impostazioni di sicurezza"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Blocco del profilo di lavoro, crittografia e altro"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Crittografia, credenziali e altro"</string>
@@ -626,7 +632,7 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Nascondi o blocca le app private in uno spazio separato. Usa un Account Google dedicato per una maggiore sicurezza."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Come funziona"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crea un Account Google per il tuo spazio"</b>\n"L\'utilizzo di un account dedicato consente di interrompere la sincronizzazione di file, foto e email al di fuori del tuo spazio"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Imposta un blocco"</b>\n"Blocca il tuo spazio per impedire ad altre persone di aprirlo."</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Imposta un blocco"</b>\n"Blocca il tuo spazio per impedire ad altre persone di aprirlo"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installa le app"</b>\n"Installa le app che vuoi mantenere private nel tuo spazio"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Aspetti da considerare"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Le app vengono interrotte quando blocchi il tuo spazio"</b>\n"Quando blocchi il tuo spazio, le app al suo interno verranno interrotte e non ti invieranno notifiche"</string>
@@ -850,7 +856,7 @@
<string name="bluetooth_empty_list_bluetooth_off" msgid="7326727272747345476">"Quando il Bluetooth è attivato, il tuo dispositivo può comunicare con altri dispositivi che si trovano nelle vicinanze"</string>
<string name="bluetooth_empty_list_bluetooth_off_auto_on_available" msgid="3430864468105204282">"Quando il Bluetooth è attivato, il tuo dispositivo può comunicare con altri dispositivi Bluetooth che si trovano nelle vicinanze. Funzionalità come Quick Share e Trova il mio dispositivo usano il Bluetooth."</string>
<string name="bluetooth_scanning_on_info_message" msgid="786648535600075223">"Quando il Bluetooth è attivo, il dispositivo può comunicare con altri dispositivi Bluetooth nelle vicinanze.\n\nPer migliorare l\'esperienza sul dispositivo, app e servizi possono comunque cercare dispositivi nelle vicinanze in qualsiasi momento, anche quando il Bluetooth non è attivo. Questo può essere utile, ad esempio, per migliorare funzionalità e servizi basati sulla posizione. Puoi modificare questa opzione nelle impostazioni relative alla scansione Bluetooth."</string>
- <string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"Quando il Bluetooth è attivato, il tuo dispositivo può comunicare con altri dispositivi Bluetooth che si trovano nelle vicinanze. Funzionalità come Quick Share e Trova il mio dispositivo usano il Bluetooth.\n\nApp e servizi possono comunque cercare dispositivi nelle vicinanze in qualsiasi momento, anche quando il Bluetooth non è attivo. Questo può essere utile, ad esempio, per migliorare funzionalità e servizi basati sulla posizione. Puoi modificare questa opzione nelle impostazioni di ricerca di dispositivi Bluetooth."</string>
+ <string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"Quando il Bluetooth è attivato, il tuo dispositivo può comunicare con altri dispositivi Bluetooth che si trovano nelle vicinanze. Funzionalità come Quick Share e Trova il mio dispositivo usano il Bluetooth.\n\nApp e servizi possono comunque cercare dispositivi nelle vicinanze in qualsiasi momento, anche quando il Bluetooth non è attivo. Questo può essere utile, ad esempio, per migliorare funzionalità e servizi basati sulla posizione. Puoi modificare questa opzione nelle impostazioni di scansione Bluetooth."</string>
<string name="bluetooth_scan_change" msgid="1744636222637390367">"Modifica"</string>
<string name="bluetooth_key_missing_title" msgid="7799054163548353853">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> non connesso"</string>
<string name="bluetooth_key_missing_message" msgid="2388861106663695319">"Per motivi di sicurezza, elimina questo dispositivo e accoppialo di nuovo"</string>
@@ -898,7 +904,7 @@
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirroring"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Attiva display wireless"</string>
<string name="wifi_display_no_devices_found" msgid="7904877793677102805">"Nessun dispositivo nelle vicinanze."</string>
- <string name="wifi_display_status_connecting" msgid="530880182560077334">"Collegamento in corso"</string>
+ <string name="wifi_display_status_connecting" msgid="530880182560077334">"Connessione in corso…"</string>
<string name="wifi_display_status_connected" msgid="2189925211258519539">"Connesso"</string>
<string name="wifi_display_status_in_use" msgid="5904009697167947449">"In uso"</string>
<string name="wifi_display_status_not_available" msgid="8463750208946968594">"Non disponibile"</string>
@@ -1627,7 +1633,7 @@
<string name="location_low_battery_use" msgid="5218950289737996431">"Basso utilizzo della batteria"</string>
<string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Ricerca di reti Wi-Fi"</string>
<string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Consenti ad app e servizi di cercare reti Wi-Fi in qualsiasi momento, anche quando il Wi-Fi non è attivo. Questa funzione è utile, ad esempio, per migliorare funzioni e servizi basati sulla posizione."</string>
- <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Ricerca di dispositivi Bluetooth"</string>
+ <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Scansione di dispositivi Bluetooth"</string>
<string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Consenti ad app e servizi di cercare dispositivi nelle vicinanze in qualsiasi momento, anche quando il Bluetooth non è attivo. Questa funzione è utile, ad esempio, per migliorare funzioni e servizi basati sulla posizione."</string>
<string name="location_services_preference_title" msgid="604317859531782159">"Servizi di localizzazione"</string>
<string name="location_services_screen_title" msgid="5640002489976602476">"Servizi di localizzazione"</string>
@@ -1946,23 +1952,33 @@
<string name="keyboard_options_category" msgid="8040137073401152608">"Opzioni"</string>
<string name="keyboard_a11y_category" msgid="8230758278046841469">"Accessibilità"</string>
<string name="physical_keyboard_title" msgid="3328134097512350958">"Tastiera fisica"</string>
- <string name="bounce_keys" msgid="7419450970351743904">"Tasti rimbalzati"</string>
+ <string name="bounce_keys" msgid="7419450970351743904">"Antirimbalzo dei tasti"</string>
<string name="bounce_keys_summary" msgid="7418024428905737729">"La tastiera ignora le pressioni ripetute velocemente dello stesso tasto"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Soglia antirimbalzo dei tasti"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Scegli la durata di tempo in cui la tastiera ignora le pressioni ripetute dei tasti"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizzato"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valore personalizzato"</string>
<string name="slow_keys" msgid="2891452895499690837">"Tasti lenti"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Regola il tempo di risposta per la pressione di un tasto"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Tasti permanenti"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Premi un tasto alla volta per le scorciatoie invece di tenere premuti più tasti contemporaneamente"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Tasti del mouse"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Tasti mouse"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usa i tasti del mouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Usa la tastiera per controllare il puntatore"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Scorrimento invertito del mouse"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scorri verso l\'alto per spostare la pagina in basso"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Scambia i tasti sinistro e destro"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Usa il tasto sinistro del mouse come il destro"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tasti del mouse per <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Usa i tasti <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> per spostare il puntatore del mouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Usa il tasto <xliff:g id="CLICK_LABEL">%s</xliff:g> per fare clic sul pulsante principale del mouse"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Usa il tasto <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> per tenere premuto il pulsante principale del mouse"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Usa il tasto <xliff:g id="RELEASE_LABEL">%s</xliff:g> per rilasciare il pulsante principale del mouse"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Usa il tasto <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> per attivare/disattivare la modalità di scorrimento. In questo modo, i tasti <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> consentono di scorrere la visualizzazione verso l\'alto, il basso, sinistra o destra"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Usa il tasto <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> per fare clic sul pulsante secondario del mouse"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Scorciatoie da tastiera"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostra l\'elenco di scorciatoie"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastiere e strumenti del profilo di lavoro"</string>
@@ -1979,7 +1995,7 @@
<string name="trackpad_reverse_scrolling_title" msgid="422877284529360866">"Scorrimento invertito"</string>
<string name="trackpad_reverse_scrolling_summary" msgid="6048648562887499036">"I contenuti si spostano in alto quando scorri verso il basso"</string>
<string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"Clic in basso a destra"</string>
- <string name="trackpad_bottom_right_tap_summary" msgid="4467915480282133447">"Per altre opzioni, fai clic sull\'angolo inferiore destro touchpad"</string>
+ <string name="trackpad_bottom_right_tap_summary" msgid="4467915480282133447">"Per altre opzioni, fai clic sull\'angolo inferiore destro del touchpad"</string>
<string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocità del puntatore"</string>
<string name="pointer_fill_style" msgid="8794616790175016092">"Colore del puntatore"</string>
<string name="pointer_fill_style_black_button" msgid="4540815366995820960">"Cambia riempim. puntatore in nero"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Scegli un nuovo tasto per <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accessibilità della tastiera fisica"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Tasti permanenti, tasti rimbalzati, tasti del mouse"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Ripeti tasti"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Ritardo prima della ripetizione"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Frequenza ripetizione"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Tieni premuto un tasto per ripetere il relativo carattere finché non lo rilasci"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Layout <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predefinito"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatico: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2223,7 +2235,7 @@
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Per usare questa funzione, scorri verso l\'alto dalla parte inferiore dello schermo con tre dita.\n\nPer spostarti tra le funzioni, scorri verso l\'alto con tre dita e tieni premuto."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Per usare una funzione di accessibilità, scorri verso l\'alto dalla parte inferiore dello schermo con due dita.\n\nPer spostarti tra le funzioni, scorri verso l\'alto con due dita e tieni premuto."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Per usare una funzione di accessibilità, scorri verso l\'alto dalla parte inferiore dello schermo con tre dita.\n\nPer spostarti tra le funzioni, scorri verso l\'alto con tre dita e tieni premuto."</string>
- <string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"OK"</string>
+ <string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Ok"</string>
<string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Personalizza pulsante"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Altre opzioni"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"Scorciatoia <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Regola consumo alimentazione"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pacchetti inclusi"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Le app funzionano normalmente"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"È consigliata la sostituzione della batteria"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"La capacità della batteria e le prestazioni di ricarica sono ridotte ed è consigliata la sostituzione della batteria."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Livello della batteria basso"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Attiva il Risparmio energetico per prolungare la durata della batteria"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Prolunga la durata della batteria"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Disconnettere questa VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Disconnetti"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versione"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versione <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Rimuovi VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Sostituire la rete VPN esistente?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Impostare la rete VPN sempre attiva?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00-17:00, giorni feriali\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventi nel calendario"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} è attiva}=2{{mode_1} e {mode_2} sono attive}=3{{mode_1}, {mode_2} e {mode_3} sono attive}other{{mode_1}, {mode_2} e altre # sono attive}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Può essere attivata automaticamente 1 modalità}other{Possono essere attivate automaticamente # modalità}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Non disturbare}=1{{mode_1}}=2{{mode_1} e {mode_2}}other{{mode_1}, {mode_2} e {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Non impostata"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Disattivata"</string>
@@ -3437,7 +3450,7 @@
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Quando l\'attivazione deve essere automatica"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Programmazione dell\'evento"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Attiva durante gli eventi per"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Dov\'è la risposta dell\'invito"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Quando la risposta all\'invito è"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Programmazione dell\'orario"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programmazione"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> h, <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Quando ricevi molte notifiche in un breve periodo di tempo, il dispositivo abbasserà il volume e ridurrà al minimo gli avvisi per un massimo di 2 minuti. Non ci sono ripercussioni su chiamate, sveglie e conversazioni prioritarie. \n\nPer trovare le notifiche ricevute durante l\'attenuazione basta trascinare verso il basso la parte superiore dello schermo."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Applica ai profili di lavoro"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Applica alle app del profilo di lavoro"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Servizi di supporto VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nessuna app installata ha richiesto di essere eseguita come servizio di supporto VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Consentire l\'accesso a <xliff:g id="SERVICE">%1$s</xliff:g> al servizio VR?"</string>
@@ -3867,7 +3890,7 @@
<string name="zen_mode_reminders_summary" msgid="3961627037429412382">"Di attività e promemoria"</string>
<string name="zen_mode_reminders_list" msgid="3133513621980999858">"promemoria"</string>
<string name="zen_mode_reminders_list_first" msgid="1130470396012190814">"Promemoria"</string>
- <string name="zen_mode_events" msgid="7425795679353531794">"Eventi di calendario"</string>
+ <string name="zen_mode_events" msgid="7425795679353531794">"Eventi nel calendario"</string>
<string name="zen_mode_events_summary" msgid="3241903481309766428">"Di eventi di calendario in programma"</string>
<string name="zen_mode_events_list" msgid="7191316245742097229">"eventi"</string>
<string name="zen_mode_events_list_first" msgid="7425369082835214361">"Eventi"</string>
@@ -4153,9 +4176,9 @@
<string name="zen_access_disabled_package_warning" msgid="6565908224294537889">"Deve rimanere attivo perché è attivo l\'accesso alle notifiche"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Revocare l\'accesso alla regola Non disturbare per l\'app <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Tutte le regole Non disturbare create da questa app saranno rimosse."</string>
- <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Vuoi consentire l\'accesso alle modalità per <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Consentire l\'accesso alle modalità all\'app <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"L\'app potrà attivare/disattivare Non disturbare, gestire e attivare le modalità e apportare modifiche alle impostazioni correlate."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Revocare l\'accesso a Modalità per l\'app <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Revocare l\'accesso alle modalità per l\'app <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Tutte le modalità create da questa app verranno rimosse."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Non ottimizzare"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Ottimizza"</string>
@@ -5270,8 +5293,8 @@
<string name="aspect_ratio_title" msgid="2451826875939676101">"Proporzioni"</string>
<string name="aspect_ratio_summary" msgid="4056406351663726494">"Prova un nuovo formato per visualizzare questa app se non è stata progettata per adattarsi a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Prova un nuovo formato per visualizzare questa app se non è stata progettata per adattarsi a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Alcune app potrebbero non essere ottimizzate per alcuni formati."</string>
- <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Prova una nuova proporzione per visualizzare un\'app se non è stata progettata per adattarsi a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Prova una nuova proporzione per visualizzare un\'app se non è stata progettata per adattarsi a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Alcune app potrebbero non essere ottimizzate per alcune proporzioni."</string>
+ <string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Prova un nuovo formato per visualizzare un\'app se non è stata progettata per adattarsi a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Prova un nuovo formato per visualizzare un\'app se non è stata progettata per adattarsi a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Alcune app potrebbero non essere ottimizzate per alcuni formati."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"App consigliate"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"App modificate"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Valore predefinito dell\'app"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Ascolta lo stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scansiona il codice QR di uno stream audio da ascoltare con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Impossibile modificare la password durante la condivisione. Per modificarla, devi prima disattivare la condivisione audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"La password deve contenere 4-16 caratteri e utilizzare solo lettere, numeri e simboli"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Scanner codici QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Serve aiuto?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Cerca in Impostazioni"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Solo dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"I nuovi contatti non verranno sincronizzati con un account"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"I contatti verranno salvati sul dispositivo e sincronizzati con il tuo account per impostazione predefinita"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nessun account predefinito"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Errore durante l\'impostazione dell\'account predefinito"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nessun account impostato come predefinito"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Solo dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Aggiungi un account per iniziare"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Cerchia e Cerca"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Tocca e tieni premuto il pulsante Home o la barra di navigazione per eseguire una ricerca usando i contenuti sullo schermo."</string>
</resources>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
index e7680ed..28db091 100644
--- a/res/values-iw/arrays.xml
+++ b/res/values-iw/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"תיק נשיאה"</item>
+ <item msgid="184985872234062767">"בניין קלאסי"</item>
+ <item msgid="9189550412466785530">"בניין מגורים"</item>
+ <item msgid="2142527562511049422">"בועת דיבור"</item>
+ <item msgid="2548100558260478605">"קבוצה של אנשים"</item>
+ <item msgid="2270003903304578284">"נורה"</item>
+ <item msgid="4793496619091161864">"יומן"</item>
+ <item msgid="5673625795644364100">"נא לא להפריע"</item>
+ <item msgid="1423820834865831361">"אדם רץ"</item>
+ <item msgid="2037298830718732608">"גולף"</item>
+ <item msgid="2197835014443491074">"משקולת יד דאמבל"</item>
+ <item msgid="2730180105015616518">"שחייה"</item>
+ <item msgid="2666922823253345958">"אדם בטיול רגלי"</item>
+ <item msgid="8234880356472211396">"אדם זורק כדור"</item>
+ <item msgid="4642980625253001443">"אדם בועט"</item>
+ <item msgid="4324795269518833500">"בקר משחקים"</item>
+ <item msgid="7789966425125441125">"לוח צבעים של אומן"</item>
+ <item msgid="663512680597461570">"פתית שלג"</item>
+ <item msgid="7952183800501346803">"שמשייה"</item>
+ <item msgid="799139025758265891">"כלי עבודה"</item>
+ <item msgid="8112685757657659269">"פסנתר"</item>
+ <item msgid="3861584909935022342">"סרט צילום (פילם)"</item>
+ <item msgid="5827426100157335512">"ספר"</item>
+ <item msgid="8585828346253128384">"פרח לוטוס"</item>
+ <item msgid="8788370542815300188">"תודעה של אדם"</item>
+ <item msgid="7287354964767553293">"אוזניות"</item>
+ <item msgid="2530059623783800987">"טלוויזיה"</item>
+ <item msgid="5307182323469376758">"רכבת"</item>
+ <item msgid="4903790544026923026">"רכב"</item>
+ <item msgid="5010405583912314582">"סכין ומזלג"</item>
+ <item msgid="8939998598599064900">"עגלת קניות"</item>
+ <item msgid="3379605903308731893">"ילד/ה"</item>
+ <item msgid="7808668968550293112">"כפות של בעל חיים"</item>
+ <item msgid="1000692647524056504">"תג כוכב"</item>
+ <item msgid="8270261073421676502">"שני אנשים"</item>
+ <item msgid="5767782819651505460">"כוכב"</item>
+ <item msgid="4368451291862729334">"לב"</item>
+ <item msgid="2613199102208419986">"בית"</item>
+ <item msgid="3022279986430275040">"חצי ירח"</item>
+ <item msgid="5421089790869483206">"שעון"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 13a53af..81fed1f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"התאמה של מכשיר חדש"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"הפעלה אוטומטית מחר"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"אם מכבים את ה-Bluetooth, הוא מופעל שוב ביום הבא"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"התאמה באוזן ימין"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"התאמה באוזן שמאל"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"התאמה באוזן השנייה"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"השבתה של Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"האפשרות הזו משביתה את התכונה Bluetooth LE Audio אם המכשיר תומך ביכולות חומרה של LE audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"מצב Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"הפעלת התצוגה המקדימה של ממשק המשתמש לשידור באמצעות Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"הפעלת התצוגה המקדימה של ממשק המשתמש לשיתוף באמצעות LE Audio, כולל שיתוף אודיו אישי ושידור פרטי"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"הצגת המתג של LE audio בפרטי המכשיר"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"מעקף רשימת ההיתרים של Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"שימוש ב-LE Audio כברירת מחדל גם אם הציוד ההיקפי של ה-LE Audio לא אומת כעומד בקריטריונים של רשימת ההיתרים."</string>
@@ -180,7 +183,7 @@
<string name="desc_no_available_supported_locale" msgid="7883271726226947273">"בחירות השפה לאפליקציה הזו לא זמינה בהגדרות."</string>
<string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"השפה עשויה להיות שונה מהשפות הזמינות באפליקציה. יכול להיות שחלק מהאפליקציות לא תומכות בהגדרה הזו."</string>
<string name="desc_app_locale_selection_supported" msgid="6744909281573556379">"כאן מגדירים את השפה של כל אפליקציה."</string>
- <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"המכשיר שלך, האפליקציות והאתרים יוגדרו לשפה הנתמכת הראשונה מתוך רשימת השפות שציינת כמועדפות.\n\nאפליקציות רבות גם יפעלו לפי האזור של השפה שציינת כמועדפת בפורמט של תאריכים, מספרים ויחידות. כדי לשנות את האזור, צריך להוסיף שפה ואז לבחור את האזור המועדף."</string>
+ <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"השפה במכשיר שלך, באפליקציות ובאתרים מוגדרת לשפה הנתמכת הראשונה ברשימת השפות שציינת כמועדפות.\n\nאפליקציות רבות גם יקבעו את אופן הצגת התאריכים, המספרים והיחידות לפי האזור של השפה המועדפת שציינת. כדי לשנות את האזור, צריך להוסיף שפה ואז לבחור את האזור המועדף."</string>
<string name="desc_notice_of_language_picker" msgid="3449290526457925447">"כדי להגדיר ידנית את השפה של אפליקציות מסוימות, אפשר לעבור לדף \'שפות של אפליקציות\'."</string>
<string name="desc_locale_helper_footer_general" msgid="6112153921151780303">"מידע נוסף על שפות של אפליקציות"</string>
<string name="title_change_system_locale" msgid="8589844586256566951">"לשנות את שפת המערכת ל-%s?"</string>
@@ -249,9 +252,8 @@
<string name="date_time_auto" msgid="1759599045100040686">"תאריך ושעה אוטומטיים"</string>
<string name="date_time_auto_summary" msgid="8294938565417729698">"הגדרה אוטומטית באמצעות הרשת והאותות האלחוטיים"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"אזור זמן אוטומטי"</string>
- <string name="zone_auto_title_summary" msgid="6540356783943375071">"הגדרה אוטומטית בהתאם לרשתות הסלולריות בקרבתך"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="zone_auto_title_summary" msgid="6540356783943375071">"הגדרה אוטומטית לפי הרשתות הסלולריות באזור שלך"</string>
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"הגדרה אוטומטית באמצעות מיקום המכשיר, אם האפשרות זמינה"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"לפי ברירת המחדל באזור"</string>
<string name="date_time_24hour" msgid="286679379105653406">"פורמט 24 שעות"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"שעה"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"יש להרים את האצבע ולגעת שוב בחיישן"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"לא ניתן להשתמש בחיישן טביעות האצבע"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"צריך ליצור קשר עם ספק תיקונים."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"פתיחה בטביעת אצבע כשהמסך כבוי"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"שימוש בתכונה \'פתיחה בטביעת אצבע\' גם כשהמסך כבוי"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"המסך כבוי, פתיחה"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"הגדרות אבטחה נוספות"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"נעילת פרופיל העבודה, הצפנה ועוד"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"הצפנה, פרטי כניסה ועוד"</string>
@@ -563,7 +568,7 @@
<string name="work_profile_category_header" msgid="85707750968948517">"פרופיל העבודה"</string>
<string name="private_space_title" msgid="1752064212078238723">"המרחב הפרטי"</string>
<string name="private_space_summary" msgid="2274405892301976238">"נעילה והסתרה של אפליקציות פרטיות"</string>
- <string name="private_space_description" msgid="4059594203775816136">"שמירת אפליקציות פרטיות במרחב נפרד שאפשר להסתיר או לנעול"</string>
+ <string name="private_space_description" msgid="4059594203775816136">"כדאי לשמור אפליקציות פרטיות במרחב נפרד שאפשר להסתיר או לנעול"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"נעילה של המרחב הפרטי"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"אפשר לפתוח את המרחב הפרטי באותה דרך שפותחים את המכשיר או לבחור בשיטת נעילה אחרת"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"שימוש בשיטה לביטול נעילת המסך"</string>
@@ -625,7 +630,7 @@
<string name="private_space_setup_title" msgid="2272968244329821450">"המרחב הפרטי"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"אפשר להסתיר או לנעול אפליקציות פרטיות במרחב נפרד. מומלץ להשתמש בחשבון Google ייעודי לאבטחה נוספת."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"איך זה עובד"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320">""<b>"יצירת חשבון Google למרחב הפרטי"</b>\n"אם משתמשים בחשבון ייעודי למרחב הפרטי, אפשר למנוע מקבצים, תמונות ואימיילים מסונכרנים להופיע מחוץ למרחב"</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320">""<b>"יצירת חשבון Google למרחב הפרטי"</b>\n"אם לא רוצים שקבצים, תמונות ואימיילים מסונכרנים יופיעו מחוץ למרחב, מומלץ להשתמש בחשבון ייעודי למרחב הפרטי"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"הגדרת נעילה"</b>\n"אפשר לנעול את המרחב הפרטי כדי למנוע מאנשים אחרים לפתוח אותו"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"התקנת אפליקציות"</b>\n"במרחב הפרטי אפשר להתקין אפליקציות שרוצים שיישארו פרטיות"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"חשוב לזכור"</string>
@@ -1646,7 +1651,7 @@
<string name="location_time_zone_detection_not_applicable" msgid="6757964612836952714">"זיהוי אזור הזמן של המיקום מושבת"</string>
<string name="location_time_zone_detection_not_supported" msgid="3251181656388306501">"אין תמיכה בזיהוי אזור הזמן של המיקום"</string>
<string name="location_time_zone_detection_not_allowed" msgid="8264525161514617051">"אין לבצע שינויים בזיהוי אזור הזמן של המיקום"</string>
- <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"אם מיקום המכשיר זמין, הוא עשוי לשמש להגדרת אזור הזמן"</string>
+ <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"אם מיקום המכשיר זמין, הוא יכול לשמש להגדרת אזור הזמן"</string>
<string name="about_settings_summary" msgid="4831942939227432513">"הצגת מידע משפטי, סטטוס, גרסת תוכנה"</string>
<string name="legal_information" msgid="7509900979811934843">"מידע משפטי"</string>
<string name="manual" msgid="3651593989906084868">"ידני"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"המערכת מתעלמת מהקשות מהירות חוזרות על אותו המקש במקלדת"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"הסף לסינון הקשות חוזרות"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"צריך לבחור את משך הזמן שבו המערכת מתעלמת מהקשות חוזרות על מקשים במקלדת"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 שניות"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 שניות"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 שניות"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 שניות"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 שניות"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 שניות"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"בהתאמה אישית"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ערך מותאם אישית"</string>
<string name="slow_keys" msgid="2891452895499690837">"מקשים איטיים"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"שינוי הזמן שעובר מהקשה על מקש ועד להפעלה שלו"</string>
<string name="sticky_keys" msgid="7317317044898161747">"מקשים \"דביקים\""</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"מקישים אחד-אחד על רצף של מקשי קיצור, ולא צריך ללחוץ עליהם בו-זמנית."</string>
<string name="mouse_keys" msgid="6237254627808525540">"מקשי העכבר"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"שימוש במקשי העכבר"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"שליטה בסמן באמצעות המקלדת"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"גלילה הפוכה עם העכבר"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"גלילה למעלה להזזת הדף למטה"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"החלפה בין הלחצן השמאלי ללחצן הימני"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"שימוש בלחצן השמאלי של העכבר כלחצן הימני"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"מקשי העכבר במקלדת <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"אפשר להשתמש במקשים <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> כדי להזיז את סמן העכבר"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"אפשר להשתמש במקש <xliff:g id="CLICK_LABEL">%s</xliff:g> כדי ללחוץ על לחצן העכבר הראשי"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"אפשר להשתמש במקש <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> כדי ללחוץ לחיצה ארוכה על לחצן העכבר הראשי"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"אפשר להשתמש במקש <xliff:g id="RELEASE_LABEL">%s</xliff:g> כדי לשחרר את לחצן העכבר הראשי"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"אפשר להשתמש במקש <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> כדי להחליף בין מצבי גלילה. הפעולה הזו תגרום למקשי <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> לגלול את התצוגה למעלה, למטה, שמאלה או ימינה"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"אפשר להשתמש במקש <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> כדי ללחוץ על לחצן העכבר המשני"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"מקשי קיצור"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"הצגת רשימה של מקשי הקיצור"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"מקלדות וכלים בפרופיל העבודה"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"יש לבחור מפתח חדש עבור <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"תכונות נגישות שפועלות באמצעות מקלדת פיזית"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"מקשים \"דביקים\", מקשים חוזרים, לחצני העכבר"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"חזרה על מקשים"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"השהיה לפני חזרה"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"קצב החזרה"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"לוחצים לחיצה ארוכה על מקש כדי לחזור על התו שלו עד שמפסיקים ללחוץ על המקש"</string>
<string name="ime_label_title" msgid="8994569521516807168">"פריסה של <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ברירת מחדל"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"אוטומטי: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2141,7 +2152,7 @@
<string name="talkback_title" msgid="8756080454514251327">"Talkback"</string>
<string name="talkback_summary" msgid="5820927220378864281">"קורא מסך שמיועד בעיקר לאנשים עם עיוורון או עם לקות ראייה"</string>
<string name="select_to_speak_summary" msgid="1995285446766920925">"ניתן להקיש על פריטים במסך כדי לשמוע הקראה שלהם"</string>
- <string name="accessibility_captioning_title" msgid="4561871958958925225">"כתוביות"</string>
+ <string name="accessibility_captioning_title" msgid="4561871958958925225">"העדפות לכתוביות"</string>
<string name="accessibility_captioning_about_title" msgid="3542171637334191563">"מידע על ההעדפות לגבי כתוביות"</string>
<string name="accessibility_captioning_footer_learn_more_content_description" msgid="5730040700677017706">"מידע נוסף על ההעדפות לגבי כתוביות"</string>
<string name="accessibility_screen_magnification_title" msgid="1211169976144629087">"הגדלה"</string>
@@ -2224,15 +2235,15 @@
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"כדי להשתמש בתכונת הנגישות, יש להחליק כלפי מעלה מתחתית המסך באמצעות שתי אצבעות.\n\nכדי לעבור בין התכונות השונות, יש להחליק כלפי מעלה באמצעות שתי אצבעות ולהחזיק."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"כדי להשתמש בתכונת הנגישות, יש להחליק כלפי מעלה מתחתית המסך באמצעות שלוש אצבעות.\n\nכדי לעבור בין התכונות השונות, יש להחליק כלפי מעלה באמצעות שלוש אצבעות ולהחזיק."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"הבנתי"</string>
- <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"לחצן בהתאמה אישית"</string>
+ <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"התאמה אישית של הלחצן"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"אפשרויות נוספות"</string>
- <string name="accessibility_shortcut_title" msgid="8125867833704517463">"קיצור הדרך של \'<xliff:g id="SERVICE">%1$s</xliff:g>\'"</string>
+ <string name="accessibility_shortcut_title" msgid="8125867833704517463">"קיצור הדרך של <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"לחצן הנגישות"</string>
<string name="accessibility_shortcut_edit_summary_software_gesture" msgid="7346399253904683940">"תנועה להפעלת תכונות הנגישות"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"יש להחליק למעלה בעזרת שתי אצבעות"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"יש להחליק למעלה בעזרת שלוש אצבעות"</string>
<string name="accessibility_shortcut_edit_dialog_title_software" msgid="6505512764022389951">"לחצן הנגישות"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"צריך להקיש על הלחצן הצף"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"מקישים על הלחצן הצף"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"תנועה להפעלת תכונות הנגישות"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"צריך להקיש על לחצן הנגישות <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> בחלק התחתון של המסך. כדי לעבור בין תכונות, צריך ללחוץ לחיצה ארוכה על לחצן הנגישות."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{מחליקים למעלה מהחלק התחתון של המסך. כדי לעבור בין תכונות, מחליקים למעלה ומחזיקים.}one{מחליקים למעלה עם # אצבעות מהחלק התחתון של המסך. כדי לעבור בין תכונות, מחליקים למעלה עם # אצבעות ומחזיקים.}two{מחליקים למעלה עם # אצבעות מהחלק התחתון של המסך. כדי לעבור בין תכונות, מחליקים למעלה עם # אצבעות ומחזיקים.}other{מחליקים למעלה עם # אצבעות מהחלק התחתון של המסך. כדי לעבור בין תכונות, מחליקים למעלה עם # אצבעות ומחזיקים.}}"</string>
@@ -2244,7 +2255,7 @@
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"הגדרות מהירות"</string>
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"לחצני עוצמת הקול"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"לחצני עוצמת הקול"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"יש ללחוץ לחיצה ארוכה על שני הלחצנים של עוצמת הקול"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"לחיצה ארוכה על שני הלחצנים של עוצמת הקול"</string>
<string name="accessibility_shortcut_edit_screen_title_two_finger_double_tap" msgid="8952595692906527694">"הקשה כפולה עם %1$d אצבעות"</string>
<string name="accessibility_shortcut_edit_screen_summary_two_finger_double_tap" msgid="385404127425496362">"מקישים הקשה כפולה במהירות על המסך עם %1$d אצבעות"</string>
<string name="accessibility_shortcut_edit_screen_title_triple_tap" msgid="3314488747597058942">"הקשה משולשת"</string>
@@ -2271,7 +2282,7 @@
<string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"שימוש בלחצן או בתנועה"</string>
<string name="accessibility_button_location_title" msgid="7182107846092304942">"מיקום"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"גודל"</string>
- <string name="accessibility_button_fade_title" msgid="8081993897680588829">"הופך לשקוף בהדרגה כשלא בשימוש"</string>
+ <string name="accessibility_button_fade_title" msgid="8081993897680588829">"הופך לשקוף כשלא בשימוש"</string>
<string name="accessibility_button_fade_summary" msgid="7865950833524973709">"הלחצן הופך לשקוף בהדרגה אחרי מספר שניות כך שיהיה קל יותר לראות את המסך"</string>
<string name="accessibility_button_opacity_title" msgid="4727355657530362289">"רמת השקיפות כשלא בשימוש"</string>
<string name="accessibility_button_low_label" msgid="4193015407828927741">"שקוף"</string>
@@ -2443,7 +2454,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"תצוגה מקדימה"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"אפשרויות רגילות"</string>
<string name="captioning_locale" msgid="5533303294290661590">"שפה"</string>
- <string name="captioning_text_size" msgid="5764254558945371745">"גודל כתובית"</string>
+ <string name="captioning_text_size" msgid="5764254558945371745">"גודל כתוביות"</string>
<string name="captioning_preset" msgid="4174276086501638524">"סגנון כתוביות"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"אפשרויות מותאמות אישית"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"צבע הרקע"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"התאמת צריכת סוללה"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"חבילות כלולות"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"האפליקציות פועלות כרגיל"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"מומלץ להחליף את הסוללה"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"מומלץ להחליף את הסוללה כי הרמה של קיבולת הסוללה וביצועי הטעינה ירדה."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"הסוללה חלשה"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"יש להפעיל את האפשרות \'חיסכון בסוללה\' כדי להאריך את חיי הסוללה"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"שיפור חיי הסוללה"</string>
@@ -2769,7 +2782,7 @@
<string name="vpn_settings_multiple_insecure_multiple_total" msgid="1706236062478680488">"<xliff:g id="VPN_COUNT">%d</xliff:g> לא מאובטח"</string>
<string name="adaptive_connectivity_title" msgid="7464959640138428192">"קישוריות דינמית"</string>
<string name="adaptive_connectivity_summary" msgid="3648731530666326885">"האפשרות הזו מאריכה את חיי הסוללה ומשפרת את ביצועי המכשיר על ידי ניהול אוטומטי של חיבורי הרשת שלך"</string>
- <string name="adaptive_connectivity_switch_on" msgid="3653067561620745493">"מצב פעיל"</string>
+ <string name="adaptive_connectivity_switch_on" msgid="3653067561620745493">"פעילה"</string>
<string name="adaptive_connectivity_switch_off" msgid="5076172560836115265">"כיבוי"</string>
<string name="adaptive_connectivity_main_switch_title" msgid="261045483524512420">"שימוש בקישוריות דינמית"</string>
<string name="cellular_security_title" msgid="5562899485544677941">"אבטחת הרשת הסלולרית"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"האם לנתק את ה-VPN הזה?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ניתוק"</string>
<string name="vpn_version" msgid="6344167191984400976">"גרסה"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"גרסה <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"אני רוצה לשכוח את ה-VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"האם להחליף רשת VPN קיימת?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"האם להגדיר את רשת ה-VPN בחיבור תמידי?"</string>
@@ -3089,7 +3101,7 @@
<string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"למחוק את הפעילות במצב אורח?"</string>
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"האפליקציות והנתונים מהגלישה הזו במצב אורח יימחקו עכשיו, וכל פעילות עתידית במצב אורח תימחק בכל יציאה ממצב זה"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"מחיקה, פעילות, אורח, הסרה, נתונים, מבקר, למחוק"</string>
- <string name="enable_guest_calling" msgid="4620657197834392094">"מתן אפשרות לאורחים לבצע שיחות"</string>
+ <string name="enable_guest_calling" msgid="4620657197834392094">"לאפשר לאורחים לבצע שיחות"</string>
<string name="enable_guest_calling_summary" msgid="4748224917641204782">"היסטוריית השיחות תשותף עם המשתמש האורח"</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"הפעלת שיחות טלפון ו-SMS"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"הגדרת המשתמש הזה כאדמין"</string>
@@ -3367,15 +3379,15 @@
<string name="volume_content_description_silent_mode" msgid="377680514551405754">"<xliff:g id="VOLUME_TYPE">%1$s</xliff:g> מושתק"</string>
<string name="notification_volume_disabled_summary" msgid="8679988555852056079">"האפשרות לא זמינה כי הצלצול מושתק"</string>
<string name="ringtone_title" msgid="3271453110387368088">"הרינגטון של הטלפון"</string>
- <string name="notification_ringtone_title" msgid="6924501621312095512">"צליל ברירת המחדל להתראות"</string>
+ <string name="notification_ringtone_title" msgid="6924501621312095512">"צליל ברירת המחדל להתראה"</string>
<string name="notification_unknown_sound_title" msgid="1319708450698738980">"צליל שסיפקה האפליקציה"</string>
- <string name="notification_sound_default" msgid="8630353701915294299">"צליל ברירת המחדל להתראות"</string>
+ <string name="notification_sound_default" msgid="8630353701915294299">"צליל ברירת המחדל להתראה"</string>
<string name="alarm_ringtone_title" msgid="6680761007731764726">"צליל ברירת המחדל לשעון מעורר"</string>
<string name="vibrate_when_ringing_option_ramping_ringer" msgid="2798848945803840348">"רטט בהתחלה ומעבר לצלצול בהדרגה"</string>
<string name="spatial_audio_title" msgid="1775370104206884711">"אודיו מרחבי"</string>
<string name="dial_pad_tones_title" msgid="3536945335367914892">"צלילים של לוח חיוג"</string>
<string name="screen_locking_sounds_title" msgid="5695030983872787321">"צליל נעילת המסך"</string>
- <string name="charging_sounds_title" msgid="5261683808537783668">"צלילים ורטט לטעינה"</string>
+ <string name="charging_sounds_title" msgid="5261683808537783668">"צלילים ורטט בטעינה"</string>
<string name="docking_sounds_title" msgid="5341616179210436159">"צלילים בעגינה"</string>
<string name="touch_sounds_title" msgid="826964355109667449">"צלילים של הקשה ולחיצה"</string>
<string name="vibrate_icon_title" msgid="1281100105045362530">"הצגת סמל של מצב רטט"</string>
@@ -3402,8 +3414,8 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{אין}=1{הוגדר לוח זמנים אחד}one{הוגדרו # לוחות זמנים}two{הוגדרו # לוחות זמנים}other{הוגדרו # לוחות זמנים}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"נא לא להפריע"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"מצבים"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"התכונה מאפשרת לך לצמצם הסחות דעת ולהתמקד עם מצבים לשינה, לעבודה, לנהיגה וכל מה שביניהם."</string>
- <string name="zen_modes_add_mode" msgid="5926457160307593664">"יצירה של מצב"</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"התכונה מאפשרת לך לצמצם הסחות דעת בעזרת מצבים מיוחדים לשינה, לעבודה, לנהיגה וכל מה שביניהם."</string>
+ <string name="zen_modes_add_mode" msgid="5926457160307593664">"יצירת מצב"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"קבלת התראות רק מאפליקציות ומאנשים חשובים"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"הגדרת לוח זמנים"</string>
<string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"לוח הזמנים מבוסס על"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00 - 17:00 ימי חול\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"אירועים ביומן"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{מצב פעיל אחד ({mode_1})}=2{{mode_1} ו{mode_2} פעילים}=3{{mode_1}, {mode_2}, ו{mode_3} פעילים}one{{mode_1}, {mode_2} ועוד # פעילים}other{{mode_1}, {mode_2} ועוד # פעילים}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{מצב אחד יכול לפעול באופן אוטומטי}one{# מצבים יכולים לפעול באופן אוטומטי}two{# מצבים יכולים לפעול באופן אוטומטי}other{# מצבים יכולים לפעול באופן אוטומטי}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{נא לא להפריע}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2} {mode_3}}other{{mode_1}, {mode_2} {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"מצב מופעל"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"לא הוגדר"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"מצב מושבת"</string>
@@ -3463,7 +3475,7 @@
<string name="mode_aod_summary" msgid="7516159044827627065">"השבתת התצוגה התמידית"</string>
<string name="mode_wallpaper_title" msgid="5549693923133928374">"עמעום הטפט"</string>
<string name="mode_wallpaper_title_secondary_list" msgid="5034602021811580157">"עמעום הטפט"</string>
- <string name="mode_wallpaper_summary" msgid="665480011615603784">"סינון הבהירות של הטפט"</string>
+ <string name="mode_wallpaper_summary" msgid="665480011615603784">"שליטה בבהירות של הטפט"</string>
<string name="mode_dark_theme_title" msgid="8099007897943513209">"הפעלת העיצוב הכהה"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"הפעלת העיצוב הכהה"</string>
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"שינוי העיצוב שמוגדר במכשיר לרקע כהה, שפחות מאמץ את העיניים"</string>
@@ -3518,7 +3530,7 @@
<string name="zen_mode_and_condition" msgid="8580896862841920031">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
<string name="zen_mode_sound_summary_on_with_info" msgid="4803606180235742003">"פועל / <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="zen_mode_sound_summary_on" msgid="9077659040104989899">"פועל"</string>
- <string name="zen_mode_duration_summary_always_prompt" msgid="7658172853423383037">"יש לשאול בכל פעם"</string>
+ <string name="zen_mode_duration_summary_always_prompt" msgid="7658172853423383037">"אני רוצה לבחור בכל פעם"</string>
<string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"עד הכיבוי"</string>
<string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{שעה}one{# שעות}two{שעתיים}other{# שעות}}"</string>
<string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{דקה אחת}one{# דקות}two{# דקות}other{# דקות}}"</string>
@@ -3535,7 +3547,7 @@
<string name="zen_custom_settings_dialog_review_schedule" msgid="4674671820584759928">"בדיקת לוח זמנים"</string>
<string name="zen_custom_settings_dialog_ok" msgid="8842373418878278246">"הבנתי"</string>
<string name="zen_custom_settings_notifications_header" msgid="7635280645171095398">"התראות"</string>
- <string name="zen_custom_settings_duration_header" msgid="5065987827522064943">"משך זמן"</string>
+ <string name="zen_custom_settings_duration_header" msgid="5065987827522064943">"כמה זמן"</string>
<string name="sound_work_settings" msgid="752627453846309092">"צלילי פרופיל עבודה"</string>
<string name="work_use_personal_sounds_title" msgid="7729428677919173609">"שימוש בצלילי הפרופיל האישי"</string>
<string name="work_use_personal_sounds_summary" msgid="608061627969077231">"שימוש באותם הצלילים מהפרופיל האישי"</string>
@@ -3651,7 +3663,7 @@
<string name="clear" msgid="5092178335409471100">"ניקוי"</string>
<string name="clear_conversation" msgid="5564321180363279096">"מחיקה של <xliff:g id="CONVERSATION_NAME">%1$s</xliff:g>"</string>
<string name="conversation_onboarding_title" msgid="5194559958353468484">"שיחות בעדיפות גבוהה ושיחות שנערכו בהן שינויים יופיעו כאן"</string>
- <string name="conversation_onboarding_summary" msgid="2484845363368486941">"שיחות שסומנו כשיחות בעדיפות גבוהה או שיחות שנערכו בהן שינויים אחרים יופיעו כאן. \n\nלשינוי הגדרות השיחות: \nיש להחליק למטה מהחלק העליון של המסך כדי לפתוח את חלונית ההתראות, ואז ללחוץ לחיצה ארוכה על שיחה כלשהי."</string>
+ <string name="conversation_onboarding_summary" msgid="2484845363368486941">"שיחות שסומנו כשיחות בעדיפות גבוהה או שיחות שנערכו בהן שינויים אחרים יופיעו כאן. \n\nלשינוי הגדרות השיחות: \nמחליקים למטה מהחלק העליון של המסך כדי לפתוח את חלונית ההתראות, ואז לוחצים לחיצה ארוכה על שיחה כלשהי."</string>
<string name="notification_importance_min_title" msgid="7676541266705442501">"ברמה מינימלית"</string>
<string name="notification_importance_high_title" msgid="394129291760607808">"הופעה במסך"</string>
<string name="notification_silence_title" msgid="4085829874452944989">"שקטה"</string>
@@ -3691,7 +3703,7 @@
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"התכונה יכולה להפעיל או להשבית את מצב \'נא לא להפריע\' ולשנות הגדרות קשורות."</string>
<string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"זו אפשרות שממנה מנהלים ומפעילים מצבים וגם משנים הגדרות קשורות."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"אם משביתים את הגישה של <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> להתראות, יכול להיות שגם הגישה לתכונה \'נא לא להפריע\' תושבת."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"אם משביתים את הרשאת הגישה של <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> להתראות, יכול להיות שגם הגישה למצבים תושבת."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"אם משביתים את הרשאת הגישה להתראות של <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, יכול להיות שגם הגישה למצבים תושבת."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"השבתה"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"ביטול"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"זמן אמת"</string>
@@ -3700,7 +3712,7 @@
<string name="notif_type_conversation_summary" msgid="179142405410217101">"SMS, הודעות טקסט וסוגים אחרים של תקשורת"</string>
<string name="notif_type_alerting" msgid="4713073696855718576">"התראות"</string>
<string name="notif_type_alerting_summary" msgid="4681068287836313604">"ייתכן שיופעל צלצול או רטט בהתאם להגדרות"</string>
- <string name="notif_type_silent" msgid="6273951794420331010">"שקטות"</string>
+ <string name="notif_type_silent" msgid="6273951794420331010">"מצב שקט"</string>
<string name="notif_type_silent_summary" msgid="7820923063105060844">"התראות שאף פעם לא משמיעות צלילים ולא מפעילות רטט"</string>
<string name="notification_listener_allowed" msgid="5536962633536318551">"יש הרשאה"</string>
<string name="notification_listener_not_allowed" msgid="3352962779597846538">"אין הרשאה"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"אם קיבלת הרבה התראות תוך זמן קצר, המכשיר ינמיך את עוצמת הקול ויצמצם את ההפרעות למשך עד 2 דקות. ההפוגה לא חלה על שיחות, שעונים מעוררים ושיחות בעדיפות גבוהה. \n\nכדי למצוא את ההתראות שהתקבלו במהלך ההפוגה, מושכים למטה מראש המסך."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"הפעלה בפרופילי העבודה"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"הפעלה באפליקציות של פרופיל העבודה"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"שירותי סיוע של VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"לא התקבלו בקשות מאפליקציות מותקנות לפעול כשירותי סיוע של VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"האם לאפשר לשירות VR גישה אל <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3798,7 +3820,7 @@
<string name="zen_schedule_rule_type_name" msgid="8071428540221112090">"זמן"</string>
<string name="zen_event_rule_type_name" msgid="1921166617081971754">"אירוע"</string>
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"בזמן אירועים שמופיעים ב-"</string>
- <string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"כל יומן"</string>
+ <string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"כל היומנים"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"כשהתשובה היא"</string>
<string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"כן, אולי או לא השיב/ה"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"כן או אולי"</string>
@@ -3874,7 +3896,7 @@
<string name="zen_mode_apps_title" msgid="1691010857014041183">"אפליקציות"</string>
<string name="zen_mode_apps_category" msgid="4082380323683889391">"אפליקציות שיכולות להפריע"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"אפליקציות שנבחרו"</string>
- <string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"אף אחת מהאפשרויות"</string>
+ <string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"אף אפליקציה"</string>
<string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{אף אפליקציה לא יכולה להפריע}=1{האפליקציה {app_1} יכולה להפריע}=2{האפליקציות {app_1} וגם {app_2} יכולות להפריע}=3{האפליקציות {app_1}, {app_2} וגם {app_3} יכולות להפריע}one{האפליקציות {app_1}, {app_2} ועוד # יכולות להפריע}other{האפליקציות {app_1}, {app_2} ועוד # יכולות להפריע}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (עבודה)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"מתבצע חישוב…"</string>
@@ -3933,17 +3955,17 @@
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"המצב הזה אף פעם לא יופעל כשהוא מושבת"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"השבתה"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"להפעיל את <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"יכול להיות שהמצב הזה יופעל באופן אוטומטי על סמך ההגדרות שלו"</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"יכול להיות שהמצב הזה יופעל באופן אוטומטי. תלוי בהגדרות שלו."</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"הפעלה"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"הגדרת מצב עם לוח זמנים קבוע"</string>
- <string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"הגדרת מצב לסנכרון של אירועים ביומן ושליחת תגובות להזמנות"</string>
+ <string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"אפשר להגדיר מצב שיסנכרן את האירועים ביומן וישלח תגובות להזמנות"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"תכנון שגרת שינה רגועה. הגדרת שעונים מעוררים, עמעום המסך וחסימת התראות."</string>
<string name="zen_mode_blurb_driving" msgid="1316054379000667305">"מתעדפים את הבטיחות בדרכים ונמנעים מהסחות דעת בזמן נהיגה"</string>
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"חוסמים הסחות דעת והפרעות במכשיר ומתרכזים טוב יותר"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"מסירים את כל הסחות דעת ונהנים מסביבה שקטה"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"התאמה אישית של חווית המשתמש ושל ההגדרות במכשיר למשתמשים שונים"</string>
<string name="zen_mode_blurb_generic" msgid="3041601339807075625">"פחות הסחות דעת: יתקבלו התראות רק מאפליקציות נבחרות ומאנשים חשובים"</string>
- <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"הגדרת מצב עם לוח זמנים קבוע"</string>
+ <string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"אפשר להגדיר מצב עם לוח זמנים קבוע"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"שמירה על סנכרון המכשיר עם האירועים של היום"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"מתעוררים עם תחושה שהכול מושלם"</string>
<string name="zen_mode_inspiration_driving" msgid="8237825783857483135">"בטיחות לפני הכול בזמן הנהיגה"</string>
@@ -3994,7 +4016,7 @@
<string name="app_launch_open_domain_urls_title" msgid="4805388403977096285">"פתיחת קישורים נתמכים"</string>
<string name="app_launch_open_in_app" msgid="2208182888681699512">"באפליקציה"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"בדפדפן"</string>
- <string name="app_launch_top_intro_message" msgid="9037324384325518290">"בחירת האופן שבו קישורים לאתרים ייפתחו באפליקציה הזו"</string>
+ <string name="app_launch_top_intro_message" msgid="9037324384325518290">"כאן בוחרים איך לפתוח באפליקציה הזו קישורים לדפי אינטרנט"</string>
<string name="app_launch_links_category" msgid="2380467163878760037">"קישורים שייפתחו באפליקציה הזו"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"קישורים נתמכים"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"העדפות אחרות שמוגדרות כברירת מחדל"</string>
@@ -4121,7 +4143,7 @@
<string name="usb_summary_UVC_power" msgid="226810354412154061">"מצלמת אינטרנט ואספקת חשמל"</string>
<string name="background_check_pref" msgid="5304564658578987535">"בדיקה ברקע"</string>
<string name="assist_access_context_title" msgid="5201495523514096201">"שימוש בטקסט המופיע במסך"</string>
- <string name="assist_access_context_summary" msgid="6951814413185646275">"אפליקציית העזרה תוכל לגשת לתוכן במסך, למשל לטקסט"</string>
+ <string name="assist_access_context_summary" msgid="6951814413185646275">"אפליקציית העזרה תוכל לגשת לטקסט במסך"</string>
<string name="assist_access_screenshot_title" msgid="4395902231753643633">"שימוש בצילום מסך"</string>
<string name="assist_access_screenshot_summary" msgid="5276593070956201863">"אפליקציית העזרה תוכל לגשת לצילום של המסך"</string>
<string name="assist_flash_title" msgid="5449512572885550108">"הבהוב מסך"</string>
@@ -4313,7 +4335,7 @@
<string name="unrestricted_data_saver" msgid="5913547065342097274">"חבילת גלישה ללא הגבלה"</string>
<string name="restrict_background_blocklisted" msgid="2308345280442438232">"נתוני הרקע כבויים"</string>
<string name="data_saver_on" msgid="7848893946018448793">"פועל"</string>
- <string name="data_saver_off" msgid="5891210864117269045">"מצב כבוי"</string>
+ <string name="data_saver_off" msgid="5891210864117269045">"מושבת"</string>
<string name="data_saver_switch_title" msgid="7111538580123722959">"שימוש בחוסך הנתונים (Data Saver)"</string>
<string name="unrestricted_app_title" msgid="8531936851059106374">"שימוש בחבילת גלישה ללא הגבלה"</string>
<string name="unrestricted_app_summary" msgid="8320813971858627624">"הפעלת גישה לחבילת גלישה ללא הגבלה כשחוסך הנתונים מופעל"</string>
@@ -5029,7 +5051,7 @@
<string name="default_app_none" msgid="5420632042222036264">"ללא"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"אפשרות זו כבר לא תקפה. יש לנסות שוב."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"לחיצה ארוכה על לחצן ההפעלה"</string>
- <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"יש ללחוץ לחיצה ארוכה על לחצן ההפעלה כדי לגשת אל"</string>
+ <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"לחיצה ארוכה על לחצן ההפעלה תפעיל את"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"תפריט ההפעלה"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"העוזר הדיגיטלי"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"גישה לעוזר הדיגיטלי"</string>
@@ -5038,7 +5060,7 @@
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"תפריט הפעלה:\nיש ללחוץ על לחצן ההפעלה ולחצן הגברת עוצמת הקול בו-זמנית"</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"מניעת צלצול:\nיש ללחוץ על לחצן עוצמת הקול כדי להשתמש בקיצור הדרך"</string>
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"משך הלחיצה"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"כדי להתאים את מידת הרגישות, צריך לבחור את משך הלחיצה על לחצן ההפעלה."</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"מידת הרגישות של הלחצן. בחירה במשך זמן הלחיצה על לחצן ההפעלה"</string>
<string name="power_menu_long_press_for_assist_sensitivity_low_label" msgid="3430099983480845635">"לחיצה קצרה"</string>
<string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"לחיצה ארוכה"</string>
<string name="lockscreen_privacy_wallet_setting_toggle" msgid="4188327143734192000">"הצגת Wallet"</string>
@@ -5173,7 +5195,7 @@
<string name="smart_forwarding_missing_mdn_text" msgid="2907314684242542226">"חסר מספר טלפון."</string>
<string name="smart_forwarding_missing_alert_dialog_text" msgid="7870419247987316112">"אישור"</string>
<string name="enable_2g_title" msgid="8184757884636162942">"אישור שימוש ב-2G"</string>
- <string name="enable_2g_summary" msgid="2794534052372565914">"רמת האבטחה של רשתות 2G נמוכה יותר, אבל הן עשויות לשפר את החיבור שלך במיקומים מסוימים. לרשתות 2G תמיד ניתנת הרשאה כשצריך לבצע שיחות חירום."</string>
+ <string name="enable_2g_summary" msgid="2794534052372565914">"רמת האבטחה של רשתות 2G נמוכה יותר, אבל היא יכולה לשפר את החיבור במיקומים מסוימים. בכל מצב של שיחות חירום יתאפשר שימוש ב-2G ."</string>
<string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"לצורך זמינות ב-<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> נדרשת רשת 2G"</string>
<string name="require_cellular_encryption_title" msgid="6087085031703089235">"מתן הרשאה לרשתות מוצפנות בלבד"</string>
<string name="require_cellular_encryption_summary" msgid="6090569065420631457">"ההגדרה הזו מאובטחת יותר אבל היא עלולה להוביל לבעיות קליטה במקומות מסוימים. תמיד אפשר לבצע שיחת חירום."</string>
@@ -5272,7 +5294,7 @@
<string name="aspect_ratio_summary" msgid="4056406351663726494">"אם אין לאפליקציה הזו הגדרות מובנות לתצוגה במכשיר <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, ההגדרה הזו תציג אותה ביחס גובה-רוחב חדש"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"אם אין לאפליקציה הזו הגדרות מובנות לתצוגה במכשיר <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, ההגדרה הזו תציג אותה ביחס גובה-רוחב חדש. יש אפליקציות שלא עובדות טוב ביחסי גובה-רוחב מסוימים."</string>
<string name="aspect_ratio_summary_text" msgid="4737461467467220325">"כדאי לנסות יחס גובה-רוחב חדש כדי לראות אפליקציה אם היא לא תוכננה להתאים למכשיר <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"כדאי לנסות יחס גובה-רוחב חדש כדי לראות אפליקציה אם היא לא תוכננה להתאים למכשיר <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. אפליקציות מסוימות לא יעבדו בצורה אופטימלית בחלק מיחסי הגובה-רוחב."</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"אם יש אפליקציה שלא תוכננה להתאים למכשיר <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, כדאי לנסות יחס גובה-רוחב חדש כדי שיהיה אפשר לראות אותה. אפליקציות מסוימות לא יעבדו בצורה אופטימלית בחלק מיחסי הגובה-רוחב."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"הצעות לאפליקציות"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"אפליקציות ששונו"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"ברירת המחדל של האפליקציה"</string>
@@ -5343,7 +5365,7 @@
<string name="about_phone_device_name_warning" msgid="3243226572404472381">"המכשיר שלך גלוי לאפליקציות שהתקנת. כמו כן, ייתכן שאנשים אחרים יראו אותו בהתחברות למכשירי Bluetooth, לרשת Wi-Fi, או בהגדרת נקודת Wi-Fi לשיתוף אינטרנט."</string>
<string name="grammatical_gender_title" msgid="8584242850477270828">"לשון הפנייה"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"בחירת לשון הפנייה"</string>
- <string name="content_protection_preference_title" msgid="5069260032659193074">"מתבצעת סריקה לאיתור אפליקציות מטעות"</string>
+ <string name="content_protection_preference_title" msgid="5069260032659193074">"סריקה לאיתור אפליקציות מטעות"</string>
<string name="content_protection_preference_summary" msgid="2252393849408445391">"בדיקת הפעילות באפליקציה לאיתור פישינג"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"שימוש בסריקה לגילוי אפליקציות שיש בהן ניסיונות הונאה"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"שימוש בסריקה לגילוי אפליקציות לצורכי עבודה שיש בהן ניסיונות הונאה"</string>
@@ -5460,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"האזנה לשידור"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"צריך לסרוק קוד QR של שידור אודיו כדי להאזין עם <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"אי אפשר לערוך את הסיסמה בזמן השיתוף. כדי לשנות את הסיסמה, קודם צריך להשבית את שיתוף האודיו."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"הסיסמה חייבת להכיל 4-16 תווים של אותיות, מספרים וסמלים בלבד"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"סורק קודי QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"רוצה עזרה?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"חיפוש בהגדרות"</string>
@@ -5468,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"מכשיר בלבד"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"אנשי קשר חדשים לא יסונכרנו עם חשבון כלשהו"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"אנשי הקשר יישמרו במכשיר ויוסנכרנו עם החשבון שלך כברירת מחדל"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"לא הוגדרה ברירת מחדל"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"אירעה שגיאה בהגדרה של חשבון ברירת המחדל"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"לא הוגדרה ברירת מחדל"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"מכשיר בלבד"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"כדי להתחיל, צריך להוסיף חשבון"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"מקיפים ומחפשים"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"לוחצים לחיצה ארוכה על לחצן דף הבית או על נקודת האחיזה לניווט כדי להפעיל חיפוש של התוכן שמופיע על המסך."</string>
</resources>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index 4540b99..82c1342 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"書類カバン"</item>
+ <item msgid="184985872234062767">"古典的な建物"</item>
+ <item msgid="9189550412466785530">"アパート"</item>
+ <item msgid="2142527562511049422">"吹き出し"</item>
+ <item msgid="2548100558260478605">"人々のグループ写真"</item>
+ <item msgid="2270003903304578284">"電球"</item>
+ <item msgid="4793496619091161864">"カレンダー"</item>
+ <item msgid="5673625795644364100">"サイレント モード"</item>
+ <item msgid="1423820834865831361">"ランニングしている人"</item>
+ <item msgid="2037298830718732608">"ゴルフ"</item>
+ <item msgid="2197835014443491074">"ジムのダンベル"</item>
+ <item msgid="2730180105015616518">"水泳"</item>
+ <item msgid="2666922823253345958">"ハイキングをしている人"</item>
+ <item msgid="8234880356472211396">"ボールを投げている人"</item>
+ <item msgid="4642980625253001443">"蹴っている人"</item>
+ <item msgid="4324795269518833500">"ゲーム コントローラ"</item>
+ <item msgid="7789966425125441125">"アーティストのカラーパレット"</item>
+ <item msgid="663512680597461570">"雪の結晶"</item>
+ <item msgid="7952183800501346803">"ビーチパラソル"</item>
+ <item msgid="799139025758265891">"工具セット"</item>
+ <item msgid="8112685757657659269">"ピアノ"</item>
+ <item msgid="3861584909935022342">"フィルムリール"</item>
+ <item msgid="5827426100157335512">"書籍"</item>
+ <item msgid="8585828346253128384">"ハスの花"</item>
+ <item msgid="8788370542815300188">"人の心"</item>
+ <item msgid="7287354964767553293">"ヘッドフォン"</item>
+ <item msgid="2530059623783800987">"テレビ"</item>
+ <item msgid="5307182323469376758">"電車"</item>
+ <item msgid="4903790544026923026">"車"</item>
+ <item msgid="5010405583912314582">"ナイフとフォーク"</item>
+ <item msgid="8939998598599064900">"ショッピング カート"</item>
+ <item msgid="3379605903308731893">"子ども"</item>
+ <item msgid="7808668968550293112">"動物の足"</item>
+ <item msgid="1000692647524056504">"スターバッジ"</item>
+ <item msgid="8270261073421676502">"2 人"</item>
+ <item msgid="5767782819651505460">"スター"</item>
+ <item msgid="4368451291862729334">"ハート"</item>
+ <item msgid="2613199102208419986">"家"</item>
+ <item msgid="3022279986430275040">"半月"</item>
+ <item msgid="5421089790869483206">"時計"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index dde62a7..04c586e 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"新しいデバイスとペア設定"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"明日自動的に ON にする"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Bluetooth を OFF にしても、翌日に再び ON になります"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"右耳をペア設定"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"左耳をペア設定"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"もう一方の耳をペア設定"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audio を無効にする"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"デバイスが LE オーディオ ハードウェア機能に対応している場合に、Bluetooth LE Audio 機能を無効にします。"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio モード"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio ブロードキャスト UI のプレビューを有効にする"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"個人の音声の共有やプライベート ブロードキャストなど、LE Audio 共有 UI のプレビューを有効にします"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE Audio の切替をデバイスの詳細に表示"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio の許可リストを回避する"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio の周辺機器が許可リストの基準を満たしていない場合でも、デフォルトで LE Audio を使用します。"</string>
@@ -243,15 +246,14 @@
<string name="airplane_mode" msgid="3196085857882526817">"機内モード"</string>
<string name="wireless_networks_settings_title" msgid="8557542379234105369">"無線とネットワーク"</string>
<string name="roaming" msgid="3055365654530847985">"ローミング"</string>
- <string name="roaming_enable" msgid="7845716016861535340">"ローミング中にデータサービスに接続"</string>
- <string name="roaming_disable" msgid="729512894708689604">"ローミング中にデータサービスに接続"</string>
+ <string name="roaming_enable" msgid="7845716016861535340">"ローミング中にデータサービスに接続します"</string>
+ <string name="roaming_disable" msgid="729512894708689604">"ローミング中にデータサービスに接続します"</string>
<string name="roaming_warning" msgid="7703647889040229013">"ローミング料金が発生する場合があります。"</string>
<string name="date_time_auto" msgid="1759599045100040686">"日時の自動設定"</string>
<string name="date_time_auto_summary" msgid="8294938565417729698">"ネットワークとワイヤレス通信を使用して自動的に設定します"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"タイムゾーンの自動設定"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"付近のモバイル ネットワークに基づいて自動的に設定します"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"可能であればデバイスの位置情報で自動設定します"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"言語 / 地域で一般的な形式を使用する"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24時間表示"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"時刻"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"指を離してから、もう一度センサーに触れてください。"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"指紋認証センサーを使用できません"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"修理業者に調整を依頼してください。"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"画面オフ時の指紋認証"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"画面がオフの状態でも指紋認証を使用"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"画面オフ、ロック解除"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"セキュリティの詳細設定"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"仕事用プロファイルのロック、暗号化など"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"暗号化、認証情報など"</string>
@@ -630,8 +635,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"アプリをインストールする"</b>\n"スペース内で非公開にするアプリをインストールします"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"注意事項"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"スペースをロックするとアプリが停止する"</b>\n"スペースをロックするとアプリが停止して、アプリからの通知が届かなくなります"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"プライベート スペースは、バックグラウンドでの実行や重要な通知の送信が必要なアプリ(医療アプリなど)には適していません。その理由は、スペースがロックされている場合、通知とバックグラウンド アクティビティが停止するためです。\n\nプライベート スペースがロックされている場合、プライベート スペース内のアプリは権限マネージャ、プライバシー ダッシュボード、その他の設定に表示されません。\n\nプライベート スペースを新しいデバイスに移動することはできません。別のデバイスで使用したい場合は、別のプライベート スペースを設定する必要があります。\n\n誰かがあなたのデバイスをパソコンに接続したり、あなたのデバイスに有害なアプリをインストールしたりすると、そのユーザーもあなたのプライベート スペースにアクセスできる可能性があります。"</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"プライベート スペースは、バックグラウンドでの実行や重要な通知の送信が必要なアプリ(医療アプリなど)には適していません。その理由は、スペースがロックされている場合、通知とバックグラウンド アクティビティが停止するためです。\n\nプライベート スペースがロックされている場合、プライベート スペース内のアプリは権限マネージャ、プライバシー ダッシュボード、その他の設定に表示されません。\n\nプライベート スペースを新しいデバイスに復元することはできません。別のデバイスで使用したい場合は、別のスペースを設定する必要があります。\n\n誰かがあなたのデバイスをパソコンに接続したり、あなたのデバイスに悪意のあるアプリをインストールしたりすると、そのユーザーもあなたのプライベート スペースにアクセスできる可能性があります。"</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"プライベート スペースは、バックグラウンドでの実行や重要な通知の送信が必要なアプリ(医療アプリなど)には適していません。その理由は、スペースがロックされている場合、通知とバックグラウンド アクティビティが停止するためです。\n\nプライベート スペースがロックされている場合、プライベート スペース内のアプリは権限マネージャー、プライバシー ダッシュボード、その他の設定に表示されません。\n\nプライベート スペースを新しいデバイスに移動することはできません。別のデバイスで使用したい場合は、別のプライベート スペースを設定する必要があります。\n\n誰かがあなたのデバイスをパソコンに接続したり、あなたのデバイスに有害なアプリをインストールしたりすると、そのユーザーもあなたのプライベート スペースにアクセスできる可能性があります。"</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"プライベート スペースは、バックグラウンドでの実行や重要な通知の送信が必要なアプリ(医療アプリなど)には適していません。その理由は、スペースがロックされている場合、通知とバックグラウンド アクティビティが停止するためです。\n\nプライベート スペースがロックされている場合、プライベート スペース内のアプリは権限マネージャー、プライバシー ダッシュボード、その他の設定に表示されません。\n\nプライベート スペースを新しいデバイスに復元することはできません。別のデバイスで使用したい場合は、別のスペースを設定する必要があります。\n\n誰かがあなたのデバイスをパソコンに接続したり、あなたのデバイスに悪意のあるアプリをインストールしたりすると、そのユーザーもあなたのプライベート スペースにアクセスできる可能性があります。"</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"プライベート スペースの詳細"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"しばらくお待ちください"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"プライベート スペースを設定しています…"</string>
@@ -1950,23 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"キーボードの同じキーが連続で押された場合は、その操作を無視します"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"バウンスキーのしきい値"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"キーボードのキーが連続で押されても無視する時間を選択します"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"カスタム"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"カスタム値"</string>
<string name="slow_keys" msgid="2891452895499690837">"スローキー"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"押されたキーが有効になるまでの時間を設定します"</string>
<string name="sticky_keys" msgid="7317317044898161747">"固定キー"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ショートカットで複数のキーを同時に押すのではなく 1 つずつ押します"</string>
<string name="mouse_keys" msgid="6237254627808525540">"マウスキー"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"マウスキーを使用する"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"キーボードを使用してポインタを操作します"</string>
- <!-- no translation found for mouse_reverse_vertical_scrolling (154907817154779952) -->
- <skip />
- <!-- no translation found for mouse_reverse_vertical_scrolling_summary (3386655598642587942) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button (3028204969091057207) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button_summary (3276638019321067902) -->
- <skip />
+ <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"マウスの逆スクロール"</string>
+ <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"上にスクロールすると、ページ下部に移動します"</string>
+ <string name="mouse_swap_primary_button" msgid="3028204969091057207">"左右のボタンを入れ替える"</string>
+ <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"左のマウスボタンを右のマウスボタンとして使用します"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> のマウスキー"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"<xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> キーを使用してマウスポインタを移動します"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"<xliff:g id="CLICK_LABEL">%s</xliff:g> キーを使用してマウスのメインボタンをクリックします"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> キーを使用して、マウスのメインボタンを長押しします"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"<xliff:g id="RELEASE_LABEL">%s</xliff:g> キーを使用してマウスのメインボタンを離します"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"<xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> キーを使用してスクロール モードを切り替えます。<xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> キーでビューを上、下、左、右にスクロールします"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"<xliff:g id="RELEASE_2_LABEL">%s</xliff:g> キーを使用して、マウスの 2 番目のボタンをクリックします"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"キーボード ショートカット"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ショートカットのリストを表示"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"仕事用プロファイルのキーボードとツール"</string>
@@ -1996,7 +2007,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"白"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"黒"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"なし"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"タッチパッド操作を見る"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"タッチパッド操作を学ぶ"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"トラックパッド, マウス, カーソル, スクロール, スワイプ, 右クリック, クリック, ポインタ"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"右クリック, タップ"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"ホームに移動"</string>
@@ -2035,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> の新しいキーを選択してください"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"物理キーボードのユーザー補助"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"固定キー、バウンスキー、マウスキー"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"キーの繰り返し"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"リピートまでの時間"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"リピート速度"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"キーを長押しすると、キーを離すまでその文字が繰り返されます"</string>
<string name="ime_label_title" msgid="8994569521516807168">"レイアウト: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"デフォルト"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"自動: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2263,11 +2270,11 @@
<string name="accessibility_shortcut_service_on_lock_screen_title" msgid="2301019277262462426">"ロック画面での音量ボタンのショートカット"</string>
<string name="accessibility_shortcut_description" msgid="2184693606202133549">"有効にすると、音量大と音量小の両方のボタンを数秒ほど長押しすることで、ロック画面でもショートカットを ON にできます。"</string>
<string name="accessibility_button_title" msgid="5251235485581552614">"ユーザー補助機能ボタン"</string>
- <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ユーザー補助機能ボタンと操作"</string>
+ <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ユーザー補助機能ボタンとジェスチャー"</string>
<string name="accessibility_button_intro_text" msgid="80993874471745687">"どの画面からでもユーザー補助機能にすぐにアクセスできます"</string>
<string name="accessibility_button_about_title" msgid="3581116105084067926">"ユーザー補助機能ボタンについて"</string>
- <string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"ユーザー補助機能ボタンと操作について"</string>
- <string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"ユーザー補助機能ボタンと操作の詳細"</string>
+ <string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"ユーザー補助機能ボタンとジェスチャーについて"</string>
+ <string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"ユーザー補助機能ボタンとジェスチャーの詳細"</string>
<string name="accessibility_button_intro" msgid="2601976470525277903">"ユーザー補助機能ボタンを使用します。3 ボタン ナビゲーションでは操作は利用できません。"</string>
<string name="accessibility_button_summary" msgid="8510939012631455831">"ユーザー補助機能にすばやくアクセスできます"</string>
<string name="accessibility_button_gesture_description" msgid="1141723096904904336">"<b>始めるには</b><br/> {0,number,integer}. ユーザー補助設定に移動します<br/> {1,number,integer}. 機能を選んでショートカットをタップします<br/> {2,number,integer}. 機能へのアクセスに、ボタンを使うかジェスチャーを使うかを選択します<br/>"</string>
@@ -2362,7 +2369,7 @@
<string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"画面の上部からクイック設定に「片手モード」を追加することもできます"</string>
<string name="accessibility_font_scaling_auto_added_qs_tooltip_content" msgid="7229921960884718332">"クイック設定にフォントサイズが追加されました。下にスワイプしてフォントサイズをいつでも変更できます。"</string>
<string name="accessibility_quick_settings_tooltip_dismiss" msgid="3269120277643884190">"閉じる"</string>
- <string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"色補正を使用"</string>
+ <string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"色補正を使用する"</string>
<string name="accessibility_daltonizer_shortcut_title" msgid="7480360363995502369">"色補正のショートカット"</string>
<string name="accessibility_daltonizer_about_title" msgid="6063650804116981287">"色補正について"</string>
<string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"色補正の詳細"</string>
@@ -2447,8 +2454,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"プレビュー"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"標準オプション"</string>
<string name="captioning_locale" msgid="5533303294290661590">"言語"</string>
- <!-- no translation found for captioning_text_size (5764254558945371745) -->
- <skip />
+ <string name="captioning_text_size" msgid="5764254558945371745">"字幕のサイズ"</string>
<string name="captioning_preset" msgid="4174276086501638524">"字幕スタイル"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"カスタマイズオプション"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"背景色"</string>
@@ -2575,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"消費電力の調整"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"含まれているパッケージ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"アプリは正常に実行されています"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"バッテリーの交換をおすすめします"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"バッテリー容量と充電性能が低下しているため、バッテリーの交換をおすすめします。"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"バッテリー残量が少なくなっています"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"バッテリー セーバーを ON にしてバッテリーを長持ちさせます"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"バッテリー寿命の改善"</string>
@@ -2992,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"この VPN の接続を解除しますか?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"接続を解除"</string>
<string name="vpn_version" msgid="6344167191984400976">"バージョン"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"バージョン <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN を削除"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"既存の VPN を置き換えますか?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"常時接続 VPN を設定しますか?"</string>
@@ -3095,7 +3102,7 @@
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"今回のゲスト セッションのアプリとデータが今すぐ削除され、今後のゲストのアクティビティはすべて、ゲストモードを終了するたびに削除されます"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"削除, ゲスト, アクティビティ, 消す, データ, ビジター, 消去"</string>
<string name="enable_guest_calling" msgid="4620657197834392094">"ゲストに通話を許可する"</string>
- <string name="enable_guest_calling_summary" msgid="4748224917641204782">"通話履歴がゲストユーザーと共有されます。"</string>
+ <string name="enable_guest_calling_summary" msgid="4748224917641204782">"通話履歴がゲストユーザーと共有されます"</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"通話と SMS を ON"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"このユーザーを管理者にする"</string>
<string name="user_remove_user" msgid="8468203789739693845">"ユーザーの削除"</string>
@@ -3416,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"「平日の午前 9 時から午後 5 時」"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"カレンダーの予定"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} がアクティブです}=2{{mode_1} と {mode_2} がアクティブです}=3{{mode_1}、{mode_2}、{mode_3} がアクティブです}other{{mode_1}、{mode_2}、他 # 個がアクティブです}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 個のモードを自動的に ON にできます}other{# 個のモードを自動的に ON にできます}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{サイレント モード}=1{{mode_1}}=2{{mode_1}、{mode_2}}other{{mode_1}、{mode_2}、{mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"未設定"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"無効"</string>
@@ -3465,7 +3472,7 @@
<string name="mode_grayscale_summary" msgid="6682099523626777038">"画面をモノクロに切り替えます"</string>
<string name="mode_aod_title" msgid="5903435070341237325">"画面を暗くしたままにする"</string>
<string name="mode_aod_title_secondary_list" msgid="8268180392811027557">"画面を暗くしたままにする"</string>
- <string name="mode_aod_summary" msgid="7516159044827627065">"「常に表示状態のディスプレイ」機能を無効にする"</string>
+ <string name="mode_aod_summary" msgid="7516159044827627065">"「常に表示状態のディスプレイ」機能を無効にします"</string>
<string name="mode_wallpaper_title" msgid="5549693923133928374">"壁紙を暗くする"</string>
<string name="mode_wallpaper_title_secondary_list" msgid="5034602021811580157">"壁紙を暗くする"</string>
<string name="mode_wallpaper_summary" msgid="665480011615603784">"壁紙の明るさを調整します"</string>
@@ -3496,8 +3503,8 @@
<string name="zen_mode_block_effect_intent" msgid="7621578645742903531">"画面を OFF のままにする"</string>
<string name="zen_mode_block_effect_light" msgid="1997222991427784993">"点滅させない"</string>
<string name="zen_mode_block_effect_peek" msgid="2525844009475266022">"画面にポップアップ通知を表示しない"</string>
- <string name="zen_mode_block_effect_status" msgid="5765965061064691918">"ステータスバー アイコンを非表示"</string>
- <string name="zen_mode_block_effect_badge" msgid="332151258515152429">"アプリアイコンの通知ドットを非表示"</string>
+ <string name="zen_mode_block_effect_status" msgid="5765965061064691918">"ステータスバー アイコンを表示しない"</string>
+ <string name="zen_mode_block_effect_badge" msgid="332151258515152429">"アプリアイコンの通知ドットを表示しない"</string>
<string name="zen_mode_block_effect_ambient" msgid="1247740599476031543">"通知で画面を ON にしない"</string>
<string name="zen_mode_block_effect_list" msgid="7549367848660137118">"プルダウン シェードに通知を表示しない"</string>
<string name="zen_mode_block_effect_summary_none" msgid="6688519142395714659">"設定しない"</string>
@@ -3720,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"短時間の間に通知が多く届いた場合に、最長 2 分間、デバイスが音量を下げて通知を最小限に抑えます。通話、アラーム、優先度の高い会話には影響しません。\n\nクールダウンの間に受信した通知は、画面上部から下にスワイプすると確認できます。"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"仕事用プロファイルに適用する"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"仕事用プロファイルのアプリに適用する"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR ヘルパー サービス"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"VR ヘルパー サービスとしての実行権限をリクエストしたインストール済みアプリはありません。"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR サービスから <xliff:g id="SERVICE">%1$s</xliff:g> へのアクセスの許可"</string>
@@ -3880,7 +3897,7 @@
<string name="zen_mode_apps_category" msgid="4082380323683889391">"割り込み可能なアプリ"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"選択したアプリ"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"なし"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{アプリは割り込み不可}=1{{app_1} が割り込み可能}=2{{app_1} と {app_2} が割り込み可能}=3{{app_1}、{app_2}、{app_3} が割り込み可能}other{{app_1}、{app_2}、他 # 個が割り込み可能}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{割り込み可能なアプリはありません}=1{{app_1} が割り込み可能}=2{{app_1} と {app_2} が割り込み可能}=3{{app_1}、{app_2}、{app_3} が割り込み可能}other{{app_1}、{app_2}、他 # 個が割り込み可能}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g>(仕事用)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"計算中…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"アプリの設定"</string>
@@ -4044,7 +4061,7 @@
<string name="filter_instant_apps" msgid="2292108467020380068">"Instant Apps"</string>
<string name="filter_notif_blocked_apps" msgid="1065653868850012325">"通知 OFF"</string>
<string name="advanced_apps" msgid="7643010673326578815">"詳細設定"</string>
- <string name="app_permissions" msgid="8666537659217653626">"権限マネージャ"</string>
+ <string name="app_permissions" msgid="8666537659217653626">"権限マネージャー"</string>
<string name="app_data_sharing_updates_title" msgid="1694297952320402788">"位置情報を共有する方法の更新"</string>
<string name="app_data_sharing_updates_summary" msgid="4465929918457739443">"ユーザーの位置情報を共有する方法が変更されたアプリを確認"</string>
<string name="tap_to_wake" msgid="3313433536261440068">"タップして復帰"</string>
@@ -4160,7 +4177,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"このアプリで作成したすべてのサイレント モード ルールは削除されます。"</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"<xliff:g id="APP">%1$s</xliff:g> によるモードへのアクセスを許可しますか?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"アプリはサイレント モードの ON / OFF を切り替えたり、モードの管理や有効化を行ったり、関連する設定を変更したりできるようになります。"</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"<xliff:g id="APP">%1$s</xliff:g> に対するモードのアクセス権限を取り消しますか?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"<xliff:g id="APP">%1$s</xliff:g> によるモードへのアクセス権限を取り消しますか?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"このアプリで作成したすべてのモードが削除されます。"</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"最適化しない"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"最適化する"</string>
@@ -4772,7 +4789,7 @@
<string name="network_5G_recommended" msgid="4769018972369031538">"5G(推奨)"</string>
<string name="network_lte" msgid="2449425437381668780">"LTE(推奨)"</string>
<string name="network_4G" msgid="9018841362928321047">"4G(推奨)"</string>
- <string name="select_automatically" msgid="2419752566747259155">"ネットワークを自動的に選択"</string>
+ <string name="select_automatically" msgid="2419752566747259155">"ネットワークを自動的に選択する"</string>
<string name="carrier_settings_title" msgid="6959295328730560529">"携帯通信会社の設定"</string>
<string name="cdma_lte_data_service" msgid="6937443423651347345">"データサービスの設定"</string>
<string name="mobile_data_settings_title" msgid="3927524078598009792">"モバイルデータ"</string>
@@ -5176,7 +5193,7 @@
<string name="smart_forwarding_input_mdn_dialog_title" msgid="7542216086697868415">"電話番号を入力"</string>
<string name="smart_forwarding_missing_mdn_text" msgid="2907314684242542226">"電話番号が指定されていません。"</string>
<string name="smart_forwarding_missing_alert_dialog_text" msgid="7870419247987316112">"OK"</string>
- <string name="enable_2g_title" msgid="8184757884636162942">"2G を許可"</string>
+ <string name="enable_2g_title" msgid="8184757884636162942">"2G を許可する"</string>
<string name="enable_2g_summary" msgid="2794534052372565914">"2G は安全面で劣りますが、場所によっては接続性が改善される場合があります。緊急通報では 2G は常に許可されます。"</string>
<string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> を利用するには、2G が必要です"</string>
<string name="require_cellular_encryption_title" msgid="6087085031703089235">"暗号化されたネットワークのみを許可する"</string>
@@ -5464,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ストリームを聴く"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>で聴くには、音声ストリームの QR コードをスキャンします"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"共有中はパスワードを編集できません。パスワードを変更するには、まず音声の共有を OFF にしてください。"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"パスワードは英字、数字、記号のみを使用し、4~16 文字で指定してください"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR コードスキャナ"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"ご不明な点がある場合"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"設定を検索"</string>
@@ -5472,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"デバイスのみ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"新しい連絡先はアカウントと同期されません"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"デフォルトでは、連絡先はデバイスに保存されて、アカウントと同期されます"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"デフォルトは設定されていません"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"デフォルトのアカウントの設定中にエラーが発生しました"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"デフォルトは設定されていません"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"デバイスのみ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"開始するにはアカウントを追加してください"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"かこって検索"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ホームボタンまたはナビゲーション ハンドルを長押しすると、画面上のコンテンツを使って検索できます。"</string>
</resources>
diff --git a/res/values-ka/arrays.xml b/res/values-ka/arrays.xml
index c2385f2..ba848ad 100644
--- a/res/values-ka/arrays.xml
+++ b/res/values-ka/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ქეისი"</item>
+ <item msgid="184985872234062767">"კლასიკური შენობა"</item>
+ <item msgid="9189550412466785530">"აპარტამენტების შენობა"</item>
+ <item msgid="2142527562511049422">"საუბრის ბუშტი"</item>
+ <item msgid="2548100558260478605">"ადამიანების ჯგუფი"</item>
+ <item msgid="2270003903304578284">"ნათურა"</item>
+ <item msgid="4793496619091161864">"კალენდარი"</item>
+ <item msgid="5673625795644364100">"არ შემაწუხოთ"</item>
+ <item msgid="1423820834865831361">"მორბენალი ადამიანი"</item>
+ <item msgid="2037298830718732608">"გოლფი"</item>
+ <item msgid="2197835014443491074">"სპორტული დარბაზის ჰანტელი"</item>
+ <item msgid="2730180105015616518">"ცურვა"</item>
+ <item msgid="2666922823253345958">"მოლაშქრე"</item>
+ <item msgid="8234880356472211396">"ადამიანი, რომელიც ბურთს ისვრის"</item>
+ <item msgid="4642980625253001443">"ადამიანი, რომელიც არტყამს"</item>
+ <item msgid="4324795269518833500">"თამაშის კონტროლერი"</item>
+ <item msgid="7789966425125441125">"მხატვრის ფერთა პალიტრა"</item>
+ <item msgid="663512680597461570">"ფიფქი"</item>
+ <item msgid="7952183800501346803">"სანაპიროს ქოლგა"</item>
+ <item msgid="799139025758265891">"სახელოსნოს ხელსაწყოები"</item>
+ <item msgid="8112685757657659269">"პიანინო"</item>
+ <item msgid="3861584909935022342">"კინოკადრი"</item>
+ <item msgid="5827426100157335512">"დაჯავშნა"</item>
+ <item msgid="8585828346253128384">"ლოტოსის ყვავილი"</item>
+ <item msgid="8788370542815300188">"ადამიანის გონება"</item>
+ <item msgid="7287354964767553293">"ყურსასმენები"</item>
+ <item msgid="2530059623783800987">"ტელევიზორი"</item>
+ <item msgid="5307182323469376758">"მატარებელი"</item>
+ <item msgid="4903790544026923026">"მანქანა"</item>
+ <item msgid="5010405583912314582">"დანა-ჩანგალი"</item>
+ <item msgid="8939998598599064900">"საყიდლების კალათა"</item>
+ <item msgid="3379605903308731893">"ბავშვი"</item>
+ <item msgid="7808668968550293112">"ცხოველის თათი"</item>
+ <item msgid="1000692647524056504">"ვარსკვლავის ბეჯი"</item>
+ <item msgid="8270261073421676502">"ორი ადამიანი"</item>
+ <item msgid="5767782819651505460">"ვარსკვლავი"</item>
+ <item msgid="4368451291862729334">"გული"</item>
+ <item msgid="2613199102208419986">"სახლი"</item>
+ <item msgid="3022279986430275040">"ნახევარმთვარე"</item>
+ <item msgid="5421089790869483206">"საათი"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index f58d5c6..86ac339 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"ახალი მოწყობილობის დაწყვილება"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ხვალ ავტომატურად ჩართვა"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"თუ Bluetooth-ს გამორთავთ, ის მეორე დღეს ხელახლა ჩაირთვება"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"დააწყვილეთ მარჯვენა დინამიკი"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"მარცხენა დინამიკის დაკავშირება"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"დააწყვილეთ სხვა დინამიკი"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE-აუდიოს გათიშვა"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Bluetooth LE AUDIO-ს ფუნქცია ითიშება, თუ მოწყობილობას აქვს LE AUDIO-ს აპარატურული გარჩევადობები."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE-აუდიო რეჟიმი"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE-აუდიო ტრანსლაციის ინტერფეისის გადახედვის ჩართვა"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"რთავს LE-აუდიოს გაზიარების ინტერფეისის გადახედვას, მათ შორის, პერსონალურ აუდიოს გაზიარებასა და პირად ტრანსლაციას"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE-აუდიო გადართვის ჩვენება მოწყობილობის დეტალებში"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE-აუდიოს დაშვებულთა სიისთვის გვერდის ავლა"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"გამოიყენეთ LE-აუდიო ნაგულისხმევი სახით, თუნდაც LE-აუდიო პერიფერიული მოწყობილობა არ შეესაბამებოდეს დაშვებულთა სიის კრიტერიუმს."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ავტომატურად დაყენება თქვენი ქსელის და უსადენო სიგნალების გამოყენებით"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ავტომატური სასაათო სარტყელი"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ავტომატურად დაყენება თქვენთან ახლომდებარე მობილურ ქსელებზე დაყრდნობით"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ავტომატურად დაყენება მოწყობილობის მდებარეობით, თუ ხელმისაწვდომია"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ლოკალის ნაგულისხმევი პარამეტრის გამოყენება"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-საათიანი ფორმატი"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"დრო"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"თითი აიღეთ და შემდეგ ხელახლა შეეხეთ სენსორს"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"თითის ანაბეჭდის სენსორის გამოყენება შეუძლებელია"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ეწვიეთ შეკეთების სერვისის პროვაიდერს."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"გამორთული ეკრანის ანაბეჭდით განბლოკვა"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"გამოიყენეთ ანაბეჭდით განბლოკვა მაშინაც კი, როდესაც ეკრანი გამორთულია"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"გამორთული ეკრანი, განბლოკვა"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"უსაფრთხოების მეტი პარამეტრი"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"სამსახურის პროფილის დაბლოკვა, დაშიფვრა და სხვა"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"დაშიფვრა, ავტორიზაციის მონაცემები და სხვა"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"კლავიატურა აიგნორებს ერთსა და იმავე კლავიშზე სწრაფ, განმეორებით დაჭერებს"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"კლავიშების ასხლეტის ზღურბლი"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"აირჩიეთ დროის ხანგრძლივობა, რომლის განმავლობაშიც თქვენი კლავიატურა აიგნორებს კლავიშის განმეორებით დაჭერას"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 წმ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 წმ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 წმ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 წმ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 წმ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 წმ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"მორგებული"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"მორგებული მნიშვნელობა"</string>
<string name="slow_keys" msgid="2891452895499690837">"ნელი კლავიშები"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"არეგულირებს დროს, რომელიც სჭირდება კლავიშის დაჭერას აქტივაციისთვის"</string>
<string name="sticky_keys" msgid="7317317044898161747">"კლავიშების ფიქსაცია"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"მალსახმობებისთვის დააჭირეთ კლავიშებს ცალ-ცალკე და არა ერთდროულად"</string>
<string name="mouse_keys" msgid="6237254627808525540">"მაუსის კლავიშები"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"მაუსის კლავიშების გამოყენება"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"თქვენი კლავიატურის გამოყენება კურსორის სამართავად"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"მაუსით უკუგადაადგილება"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"ზემოთ გადაადგილება გვერდის ჩამოსაწევად"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"მარცხენა და მარჯვენა ღილაკების ფუნქციის გაცვლა"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"გამოიყენეთ მაუსის მარცხენა ღილაკი მარჯვენის ფუნქციით"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>-ის მაუსის კლავიშები"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"გამოიყენეთ <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> კლავიშები მაუსის კურსორის გადასაადგილებლად"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"გამოიყენეთ <xliff:g id="CLICK_LABEL">%s</xliff:g> კლავიში მაუსის ძირითად ღილაკზე დასაწკაპუნებლად"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> კლავიშის გამოყენება მაუსის ძირითად ღილაკზე ხანგრძლივად დასაჭერად"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"<xliff:g id="RELEASE_LABEL">%s</xliff:g> კლავიშის გამოყენება მაუსის ძირითადი ღილაკის ასაშვებად"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"<xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> კლავიშის გამოყენება გადაადგილების რეჟიმის გადასართავად. ეს საშუალებას მისცემს <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> კლავიშებს გადააადგილოს ხედი ზემოთ, ქვემოთ, მარცხნივ ან მარჯვნივ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"<xliff:g id="RELEASE_2_LABEL">%s</xliff:g> კლავიშის გამოყენება მაუსის მეორეულ ღიკალზე დასაწკაპუნებლად"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"კლავიატურის მალსახმობები"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"მალსახმობების სიის ჩვენება"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"სამსახურის პროფილის კლავიატურა და ხელსაწყოები"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"აირჩიეთ ახალი კლავიში <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>-ისთვის:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ფიზიკური კლავიატურის მისაწვდომობა"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"კლავიშების ფიქსაცია, მრავალჯერადი დაჭერის შეზღუდვა კლავიშებზე, მაუსის კლავიშები"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"განმეორებადი კლავიშები"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"დაყოვნება განმეორებამდე"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"გამეორების სიხშირე"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ხანგრძლივად დააჭირეთ კლავიშზე, რათა განმეორებით აიკრიფოს სიმბოლო, სანამ კლავიშიდან თითს აიღებთ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> განლაგება"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ნაგულისხმევი"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ავტომატური: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ენერგიის მოხმარების მორგება"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"შესული პაკეტები"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"აპები გაშვებულია ჩვეულებრივად"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"რეკომენდებულია ბატარეის გამოცვლა"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ბატარეის ტევადობა და დატენის ეფექტურობა შემცირებულია და რეკომენდებულია ბატარეის გამოცვლა."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ბატარეა იცლება"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ჩართეთ ბატარეის დამზოგი ბატარეის მუშაობის გასახანგრძლივებლად"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ბატარეის მუშაობის ხანგრძლივობის გაუმჯობესება"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"გსურთ ამ VPN-თან კავშირის გაწყვეტა?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"კავშირის გაწყვეტა"</string>
<string name="vpn_version" msgid="6344167191984400976">"ვერსია"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ვერსია <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN-ის დავიწყება"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"გსურთ არსებული VPN-ის ჩანაცვლება?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"გსურთ ყოველთვის ჩართული VPN-ის დაყენება?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„09:00 —17:00, კვირის დღეები“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"კალენდრის მოვლენები"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} აქტიურია}=2{{mode_1} და {mode_2} აქტიურია}=3{{mode_1}, {mode_2} და {mode_3} აქტიურია}other{{mode_1}, {mode_2} და # სხვა აქტიურია}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 რეჟიმი შესაძლოა ჩაირთოს ავტომატურად}other{# რეჟიმი შესაძლოა ჩაირთოს ავტომატურად}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{არ შემაწუხოთ}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2} და {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ჩართული"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"არ არის დაყენებული"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"გათიშულია"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"როცა მცირე დროის განმავლობაში ბევრ შეტყობინებას იღებთ, თქვენი მოწყობილობა ხმას დაუწევს და მინიმალურამდე შეამცირებს ეკრანზე ამომხტარ გაფრთხილებებს ორ წუთამდე დროის განმავლობაში. თქვენი მოწყობილობის ხმა და გაფრთხილებები ავტომატურად მცირდება 2 წუთამდე, როცა ძალიან ბევრ შეტყობინებას მიიღებთ ერთდროულად. ზარებზე, მაღვიძარებსა და პრიორიტეტულ საუბრებზე ეს გავლენას არ ახდენს. \n\nგანტვირთვის პერიოდის განმავლობაში მიღებული შეტყობინებების ნახვა შესაძლებელია ეკრანის ზემოდან ქვემოთ ჩამოწევით."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"გავრცელდეს სამსახურის პროფილზე"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"სამსახურის პროფილის აპებზე გავრცელება"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"ვირტ. რეალობის დამხმარე სერვისები"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ვირტუალური რეალობის დამხმარე სერვისად გაშვება არცერთ დაინსტალირებულ აპს არ მოუთხოვია."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"გსურთ ვირტუალური რეალობის სერვისისთვის <xliff:g id="SERVICE">%1$s</xliff:g>-ზე წვდომის დაშვება?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ნაკადის მოსმენა"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"დაასკანირეთ აუდიო ნაკადის QR კოდი<xliff:g id="DEVICE_NAME">%1$s</xliff:g> მოწყობილობასთან ერთად მოსასმენად"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"გაზიარების დროს შეუძლებელია პაროლის რედაქტირება. პაროლის შესაცვლელად, პირველ რიგში, გამორთეთ აუდიოს გაზიარება."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"თქვენი პაროლი უნდა შეიცავდეს 4-16 სიმბოლოს და გამოყენებული იყოს მხოლოდ ასოები, ციფრები და სიმბოლოები"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR კოდის სკანერი"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"დახმარება გჭირდებათ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ძიების პარამეტრები"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"მხოლოდ მოწყობილობა"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"ახალი კონტაქტები არ სინქრონიზდება ანგარიშთან"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"კონტაქტები შეინახება თქვენს მოწყობილობაში და სინქრონიზდება თქვენს ანგარიშთან ნაგულისხმევად"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ნაგულისხმევი ანგარიში დაყენებული არ არის"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ნაგულისხმევი ანგარიშის დაყენებისას წარმოიშვა შეცდომა"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ნაგულისხმევი ანგარიში დაყენებული არ არის"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"მხოლოდ მოწყობილობა"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"დასაწყებად დაამატეთ ანგარიში"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ძიება წრის მოხაზვით"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ეკრანზე არსებული კონტენტის გამოყენებით ძიებისთვის ხანგრძლივად შეეხეთ მთავარი ეკრანის ღილაკს ან ნავიგაციის ზოლს."</string>
</resources>
diff --git a/res/values-kk/arrays.xml b/res/values-kk/arrays.xml
index cbc026e..5efc68b 100644
--- a/res/values-kk/arrays.xml
+++ b/res/values-kk/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Портфель"</item>
+ <item msgid="184985872234062767">"Классикалық ғимарат"</item>
+ <item msgid="9189550412466785530">"Тұрғын үй ғимараты"</item>
+ <item msgid="2142527562511049422">"Мәтінді бұлтшалар"</item>
+ <item msgid="2548100558260478605">"Адамдар тобы"</item>
+ <item msgid="2270003903304578284">"Шам"</item>
+ <item msgid="4793496619091161864">"Күнтізбе"</item>
+ <item msgid="5673625795644364100">"Мазаламау"</item>
+ <item msgid="1423820834865831361">"Жүгіріп бара жатқан адам"</item>
+ <item msgid="2037298830718732608">"Гольф"</item>
+ <item msgid="2197835014443491074">"Спортзалдағы гантель"</item>
+ <item msgid="2730180105015616518">"Жүзу"</item>
+ <item msgid="2666922823253345958">"Жаяу жүріп бара жатқан адам"</item>
+ <item msgid="8234880356472211396">"Доп лақтырып жатқан адам"</item>
+ <item msgid="4642980625253001443">"Теуіп жатқан адам"</item>
+ <item msgid="4324795269518833500">"Ойын контроллері"</item>
+ <item msgid="7789966425125441125">"Суретшінің түстер палитрасы"</item>
+ <item msgid="663512680597461570">"Ұлпа қар"</item>
+ <item msgid="7952183800501346803">"Жағажай қолшатыры"</item>
+ <item msgid="799139025758265891">"Шеберхана құралдары"</item>
+ <item msgid="8112685757657659269">"Пианино"</item>
+ <item msgid="3861584909935022342">"Кинопленка"</item>
+ <item msgid="5827426100157335512">"Кітап"</item>
+ <item msgid="8585828346253128384">"Лотос гүлі"</item>
+ <item msgid="8788370542815300188">"Адам санасы"</item>
+ <item msgid="7287354964767553293">"Құлақаспап"</item>
+ <item msgid="2530059623783800987">"Теледидар"</item>
+ <item msgid="5307182323469376758">"Пойыз"</item>
+ <item msgid="4903790544026923026">"Автокөлік"</item>
+ <item msgid="5010405583912314582">"Шанышқы мен пышақ"</item>
+ <item msgid="8939998598599064900">"Себет"</item>
+ <item msgid="3379605903308731893">"Бала"</item>
+ <item msgid="7808668968550293112">"Жануардың табаны"</item>
+ <item msgid="1000692647524056504">"Жұлдызша танымбелгісі"</item>
+ <item msgid="8270261073421676502">"Екі адам"</item>
+ <item msgid="5767782819651505460">"Жұлдыз"</item>
+ <item msgid="4368451291862729334">"Жүрек"</item>
+ <item msgid="2613199102208419986">"Үй"</item>
+ <item msgid="3022279986430275040">"Жарты ай"</item>
+ <item msgid="5421089790869483206">"Сағат"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index c573428..c892257 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Жаңа құрылғымен жұптастыру"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Ертең автоматты түрде қосу"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Оң құлақты жұптау"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Сол құлақты жұптау"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Екінші құлақты жұптау"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audio функциясын өшіру"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Құрылғы LE Audio жабдық мүмкіндіктерін қолдайтын болса, Bluetooth LE Audio функциясы өшіріледі."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio режимі"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE аудио тарату пайдаланушы интерфейсінің алғы нұсқасын қосу"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"LE аудио бөлісу пайдаланушы интерфейсінің алғы нұсқасын, соның ішінде жеке аудио бөлісу және жеке тарату опцияларын қосады."</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE Audio ауыстырғышын \"Құрылғы туралы мәлімет\" бөлімінде көрсету"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bypass Bluetooth LE Audio рұқсат тізімін айналып өту"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio перифериялық құрылғысының рұқсат тізімі шарттарына сәйкес келуі расталмаса да, LE Audio әдепкісінше пайдаланылады."</string>
@@ -249,9 +253,8 @@
<string name="date_time_auto" msgid="1759599045100040686">"Күн мен уақытты автоматты түрде анықтау"</string>
<string name="date_time_auto_summary" msgid="8294938565417729698">"Желі мен сымсыз сигналдар арқылы автоматты түрде орнатылады."</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Aвтоматты уақыт белдеуі"</string>
- <string name="zone_auto_title_summary" msgid="6540356783943375071">"Маңайдағы мобильдік желілер негізінде автоматты түрде орнату"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="zone_auto_title_summary" msgid="6540356783943375071">"Маңайдағы мобильдік желілер бойынша автоматты түрде орнату"</string>
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Құрылғы локациясы (қолжетімді болса) арқылы автоматты түрде орнатылады."</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Жергілікті әдепкі формат"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 сағаттық формат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Уақыт"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Саусақты көтеріп, содан кейін сканерді қайтадан түртіңіз."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Саусақ ізін оқу сканерін пайдалану мүмкін емес"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Жөндеу қызметіне барыңыз."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Экран өшірулі кезде саусақ ізімен ашу"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Саусақ ізімен ашу функциясын экран өшіп тұрса да пайдалану"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Экран өшірулі кезде құлыпты ашу"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Басқа қауіпсіздік параметрлері"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Жұмыс профилін құлыптау, шифрлау және т. б."</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифрлау, тіркелу деректері және т. б."</string>
@@ -625,7 +631,7 @@
<string name="private_space_setup_title" msgid="2272968244329821450">"Құпия кеңістік"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Жеке қолданбаларыңызды бөлек кеңістікке жасырып қоюға немесе құлыппен жауып қоюға болады. Қосымша қауіпсіздік үшін арнайы Google аккаунтын пайдаланыңыз."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Бұл қалай жұмыс істейді?"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Кеңістіңіз үшін Google аккаунтын жасау"</b>\n"Арнайы аккаунтты пайдалансаңыз, синхрондалған файлдар, фотосуреттер мен электрондық хаттар кеңістігіңізден тыс көрсетілмейді."</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Кеңістік үшін Google аккаунтын жасау"</b>\n"Арнайы аккаунтыңыз болса, синхрондалған файлдар, фотосуреттер мен электрондық хаттар кеңістігіңізден тыс көрсетілмейді."</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Құлыптау функциясын орнату"</b>\n"Кеңістігіңізді басқа адамдар ашып алмауы үшін, оны құлыптаңыз."</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Қолданбалар орнату"</b>\n"Кеңістігіңізге құпия сақтағыңыз келетін қолданбаларды орнатуға болады."</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Есте сақтаңыз"</string>
@@ -1306,7 +1312,7 @@
<string name="dark_ui_text" msgid="4392646155331126666">"Қараңғы батарея кейбір экрандарда батарея зарядын ұзаққа жеткізу үшін қара фонды пайдаланады. Экран өшпейінше, қараңғы режим кестелері қосылмайды."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Қараңғы режим қазір \"Ұйқы\" режимінің кестесіне қолданылып жатыр."</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"\"Ұйқы\" режимі параметрлері"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Режимдердің триггерлері қараңғы режимді де қосуы мүмкін.}=1{{mode_1} режимінің триггері қараңғы режимді де қосады.}=2{{mode_1} және {mode_2} режимдерінің триггері қараңғы режимді де қосады.}=3{{mode_1}, {mode_2} және {mode_3} режимдерінің триггері қараңғы режимді де қосады.}other{{mode_1}, {mode_2} және тағы # режимнің триггері қараңғы режимді де қосады.}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Қараңғы режим басқа режимдердің ықпалынан да қосылуы мүмкін.}=1{Қараңғы режим {mode_1} режимінің ықпалынан да қосылуы мүмкін.}=2{Қараңғы режим {mode_1} және {mode_2} режимдерінің ықпалынан да қосылуы мүмкін.}=3{Қараңғы режим {mode_1}, {mode_2} және {mode_3} режимдерінің ықпалынан да қосылуы мүмкін.}other{Қараңғы режим {mode_1}, {mode_2} және тағы # режимнің ықпалынан да қосылуы мүмкін.}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Режим параметрлері"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Жарықтығын бұрынғыдан азайту"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Құрылғы жарықтығын әдеттегіден азайтып пайдалану"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Пернетақта бір перненің тез арада қайталап басылуын елемейді."</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Пернелердің байқаусызда басылуын елемеу шегі"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Пернетақта пернелердің қайталап басылуын елемейтін уақыт ұзақтығын таңдаңыз."</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 с"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 с"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 с"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 с"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 с"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 с"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Арнаулы"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"арнаулы мән"</string>
<string name="slow_keys" msgid="2891452895499690837">"Баяу пернелер"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Басқаннан кейін перненің іске қосылу уақытын реттейді."</string>
<string name="sticky_keys" msgid="7317317044898161747">"Бекітілген пернелер"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Жылдам пәрмендерді пайдалану үшін пернелерді бірге баспай-ақ, бір пернені бір рет бассаңыз болады."</string>
<string name="mouse_keys" msgid="6237254627808525540">"Тінтуір пернелері"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Тінтуір пернелерін пайдалану"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Меңзерді басқару үшін пернетақтаны пайдаланыңыз."</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Тінтуірмен кері айналдыру"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Бетті төмен жылжыту үшін жоғары қарай айналдырыңыз."</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Сол және оң жақ түймелердің орындарын ауыстырыңыз"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Тінтуірдің сол жақ түймесін оң жақ түйме ретінде пайдаланыңыз."</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"\"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>\" пернетақтасына арналған тінтуір пернелері"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Тінтуір меңзерін жылжыту үшін <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> пернелерін пайдаланыңыз."</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Негізгі тінтуір түймесін басу үшін <xliff:g id="CLICK_LABEL">%s</xliff:g> пернесін пайдаланыңыз."</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Негізгі тінтуір түймесін ұстап тұру үшін <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> пернесін пайдаланыңыз."</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Негізгі тінтуір түймесін жіберу үшін <xliff:g id="RELEASE_LABEL">%s</xliff:g> пернесін пайдаланыңыз."</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Айналдыру режимін қосу/өшіру үшін <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> пернесін пайдаланыңыз. Сол кезде <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> пернелері көріністі жоғары, төмен, солға немесе оңға айналдырады."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Қосымша тінтуір түймесін басу үшін <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> пернесін пайдаланыңыз."</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Перне тіркесімдері"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Перне тіркесімдерінің тізімін көрсету"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Жұмыс профилі пернетақталары және құралдары"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> жаңа пернесін таңдау:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Физикалық пернетақтаның арнайы мүмкіндіктері"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Бекітілген пернелер, серпімді пернелер, тінтуір пернелері"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Пернелерді қайталау"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Қайталау алдындағы кідіріс"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Қайталау жиілігі"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Пернені басып тұру арқылы таңбаны қайталап жазу"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> форматы"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Әдепкі"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автоматты: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2117,7 +2129,7 @@
<string name="color_contrast_preview" msgid="6791430227535363883">"Алғы көрініс"</string>
<string name="color_contrast_preview_sender_name" msgid="8641943417589238147">"Хелен, Адам"</string>
<string name="color_contrast_preview_email_send_date" msgid="2108702726171600080">"2 күн бұрын"</string>
- <string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"Жазыласыз ба?"</string>
+ <string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"Жауап бересіз бе?"</string>
<string name="color_contrast_preview_email_title" msgid="198712116139754823">"Іссапар туралы есеп"</string>
<string name="color_contrast_preview_email_body" msgid="2714343154965937945">"Қосымша көмек алу үшін маған немесе Хеленге хабарласыңыз. Бұл есеп:"</string>
<string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"Клиент шығындары"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Қуат қолданысын бейімдеу"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Қамтылған орамдар"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Қолданбалар қалыпты жұмыс істеп тұр"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Батареяны ауыстырған дұрыс"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Батарея сыйымдылығы мен зарядтау өнімділігі азайды, сондай-ақ батареяны ауыстырған жөн."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Батарея деңгейі төмен"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Батарея жұмысын ұзарту үшін батареяны үнемдеу режимін қосыңыз."</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Батарея жұмысын ұзартыңыз"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Осы VPN желісі ажыратылсын ба?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Ажырату"</string>
<string name="vpn_version" msgid="6344167191984400976">"Нұсқа"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g> нұсқасы"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN ұмыту"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Бар VPN қолданбасын ауыстыру керек пе?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Әрқашан қосулы VPN режимін орнату"</string>
@@ -3085,12 +3098,12 @@
<string name="user_category_title" msgid="4368580529662699083">"Пайдаланушылар"</string>
<string name="other_user_category_title" msgid="7089976887307643217">"Басқа пайдаланушылар"</string>
<string name="remove_guest_on_exit" msgid="8202972371459611066">"Қонақ әрекетін жою"</string>
- <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Қонақ режимінен шыққан кезде, барлық қонақ қолданбасы мен дерегін жою"</string>
+ <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Қонақ режимінен шыққан кезде, барлық қолданба мен деректі жою"</string>
<string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Қонақ әрекетін жою керек пе?"</string>
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Осы қонақ сеансындағы қолданбалар мен деректер қазір жойылады және қонақ режимінен шыққан сайын қонақтың барлық әрекеті өшіп отырады."</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"жою, қонақ, әрекет, өшіру, деректер, кіруші, тазарту"</string>
<string name="enable_guest_calling" msgid="4620657197834392094">"Қонаққа қоңырау шалуға рұқсат беру"</string>
- <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Қоңыраулар тарихы осы қонақ пайдаланушыға көрсетіледі."</string>
+ <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Қоңыраулар тарихы қонақ пайдаланушыға көрсетіледі."</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"Телефон қоңырауларын және SMS қосу"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"Осы пайдаланушыны әкімші ету"</string>
<string name="user_remove_user" msgid="8468203789739693845">"Пайдаланушыны жою"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00–17:00 жұмыс күндері\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Күнтізбедегі іс-шаралар"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} қосулы}=2{{mode_1} және {mode_2} қосулы}=3{{mode_1}, {mode_2} және {mode_3} қосулы}other{{mode_1}, {mode_2} және тағы # режим қосулы}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режимді автоматты түрде қосуға болады.}other{# режимді автоматты түрде қосуға болады.}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Мазаламау}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ҚОСУЛЫ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Орнатылмаған"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Өшірілді"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Қысқа уақыт ішінде көп хабарландыру алған кезде, құрылғының дыбыс деңгейі азайтылып, хабарландырулар 2 минутқа дейін кідіртіледі. Бұл параметр қоңырауларға, оятқыштарға және маңызды әңгімелерге әсер етпейді. \n\nДыбысын азайту кезінде алынған хабарландыруларды экранның жоғарғы жағынан төмен тарту арқылы табуға болады."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Жұмыс профильдеріне қолдану"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Жұмыс профиліндегі қолданбаларға қолдану"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Көмекші VR қызметтері"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Орнатылған қолданбалар көмекші VR қызметі ретінде қосылуға рұқсат сұраған жоқ."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR қызметіне <xliff:g id="SERVICE">%1$s</xliff:g> пайдалануға рұқсат берілсін бе?"</string>
@@ -5046,7 +5069,7 @@
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"QR кодының сканерін көрсету"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"QR кодын сканерлеу қолданбасын құлыптаулы экраннан пайдалануға рұқсат ету"</string>
<string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Құрылғыны басқару элементтерін көрсету"</string>
- <string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Құлып экраны арқылы"</string>
+ <string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Құлыптаулы экраннан"</string>
<string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Құрылғыны басқару элементтерін пайдалану"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Пайдалану үшін алдымен \"Құрылғыны басқару элементтерін көрсету\" параметрін қосыңыз."</string>
<string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"Сағат көлемі құлып экранындағы контентке сай өзгереді."</string>
@@ -5459,18 +5482,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Трансляцияны тыңдау"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Аудио трансляцияның QR кодын сканерлеп, құрылғымен (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) тыңдаңыз."</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Бөлісу кезінде құпия сөзді өзгертуге болмайды. Өзгерту үшін алдымен аудио бөлісу функциясын өшіріңіз."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Құпия сөзіңізде 4-16 таңба болуы керек және тек әріптерден, сандардан және символдардан тұруы керек."</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR кодының сканері"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Көмек керек пе?"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"Іздеу параметрлері"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"Параметрлерден іздеу"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"контактілер, жад, аккаунт"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"Контактілер жады"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Тек құрылғы"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Жаңа контактілер аккаунтпен синхрондалмайды."</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Контактілер әдепкісінше аккаунтыңызбен синхрондалады және құрылғыңызға сақталады."</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Әдепкі аккаунт таңдалмаған"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Әдепкі аккаунт орнату кезінде қате шықты."</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Әдепкі аккаунт таңдалмаған."</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Құрылғы ғана"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Бастау үшін аккаунт қосыңыз."</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Қоршау арқылы іздеу"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Экрандағы контенттің көмегімен іздеу үшін негізгі экран түймесін немесе навигация тетігін басып тұрыңыз."</string>
</resources>
diff --git a/res/values-km/arrays.xml b/res/values-km/arrays.xml
index 122ba62..e0d7b35 100644
--- a/res/values-km/arrays.xml
+++ b/res/values-km/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"កាបូបធ្វើការ"</item>
+ <item msgid="184985872234062767">"អគារបុរាណ"</item>
+ <item msgid="9189550412466785530">"អគារអាផាតមិន"</item>
+ <item msgid="2142527562511049422">"ផ្ទាំងវាចា"</item>
+ <item msgid="2548100558260478605">"ក្រុមមនុស្ស"</item>
+ <item msgid="2270003903304578284">"អំពូលភ្លើង"</item>
+ <item msgid="4793496619091161864">"ប្រតិទិន"</item>
+ <item msgid="5673625795644364100">"កុំរំខាន"</item>
+ <item msgid="1423820834865831361">"មនុស្សរត់"</item>
+ <item msgid="2037298830718732608">"កូនហ្គោល"</item>
+ <item msgid="2197835014443491074">"ដុំដែកនៅកន្លែងហាត់ប្រាណ"</item>
+ <item msgid="2730180105015616518">"ការហែលទឹក"</item>
+ <item msgid="2666922823253345958">"មនុស្សកំពុងដើរកាត់ព្រៃភ្នំ"</item>
+ <item msgid="8234880356472211396">"មនុស្សកំពុងគប់បាល់"</item>
+ <item msgid="4642980625253001443">"មនុស្សកំពុងធាក់"</item>
+ <item msgid="4324795269518833500">"ឧបករណ៍បញ្ជាហ្គេម"</item>
+ <item msgid="7789966425125441125">"ក្ដារលាយពណ៌វិចិត្រករ"</item>
+ <item msgid="663512680597461570">"ផ្កាព្រិល"</item>
+ <item msgid="7952183800501346803">"ឆត្រនៅតាមឆ្នេរ"</item>
+ <item msgid="799139025758265891">"ឧបករណ៍រោងជាង"</item>
+ <item msgid="8112685757657659269">"ព្យាណូ"</item>
+ <item msgid="3861584909935022342">"ដុំហ្វីលភាពយន្ត"</item>
+ <item msgid="5827426100157335512">"សៀវភៅ"</item>
+ <item msgid="8585828346253128384">"ផ្កាឈូក"</item>
+ <item msgid="8788370542815300188">"ចិត្តរបស់មនុស្ស"</item>
+ <item msgid="7287354964767553293">"កាស"</item>
+ <item msgid="2530059623783800987">"ទូរទស្សន៍"</item>
+ <item msgid="5307182323469376758">"រថភ្លើង"</item>
+ <item msgid="4903790544026923026">"រថយន្ត"</item>
+ <item msgid="5010405583912314582">"សម និងកាំបិត"</item>
+ <item msgid="8939998598599064900">"រទេះទិញទំនិញ"</item>
+ <item msgid="3379605903308731893">"កុមារ"</item>
+ <item msgid="7808668968550293112">"ក្រញាំសត្វ"</item>
+ <item msgid="1000692647524056504">"សញ្ញាផ្កាយ"</item>
+ <item msgid="8270261073421676502">"មនុស្សពីរនាក់"</item>
+ <item msgid="5767782819651505460">"ផ្កាយ"</item>
+ <item msgid="4368451291862729334">"បេះដូង"</item>
+ <item msgid="2613199102208419986">"ផ្ទះ"</item>
+ <item msgid="3022279986430275040">"ព្រះចន្ទមួយចំហៀង"</item>
+ <item msgid="5421089790869483206">"នាឡិកា"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index b8270cd..f2ec750 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"ផ្គូផ្គងឧបករណ៍ថ្មី"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ប៊្លូធូស"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"បើកនៅថ្ងៃស្អែកដោយស្វ័យប្រវត្តិ"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"ប្រសិនបើអ្នកបិទប៊្លូធូស នោះវានឹងបើកម្ដងទៀតនៅថ្ងៃបន្ទាប់"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ផ្គូផ្គងឧបករណ៍ជំនួយការស្ដាប់ខាងស្ដាំ"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ផ្គូផ្គងឧបករណ៍ជំនួយការស្ដាប់ខាងឆ្វេង"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ផ្គូផ្គងឧបករណ៍ជំនួយការស្ដាប់ម្ខាងទៀតរបស់អ្នក"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"បិទប៊្លូធូស LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"បិទមុខងារប៊្លូធូស LE Audio ប្រសិនបើឧបករណ៍អាចប្រើសមត្ថភាពហាតវែរ LE Audio បាន។"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"មុខងារប៊្លូធូស LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"បើកការមើល UI ការផ្សាយប៊្លូធូស LE Audio សាកល្បង"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"បើកការមើល UI នៃការស្ដាប់ LE Audio រួមគ្នាសាកល្បង រួមទាំងការស្ដាប់សំឡេងរួមគ្នាផ្ទាល់ខ្លួន និងការផ្សាយឯកជន"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"បង្ហាញប៊ូតុងបិទ/បើក LE Audio ក្នុងព័ត៌មានលម្អិតអំពីឧបករណ៍"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"រំលងបញ្ជីអនុញ្ញាតប៊្លូធូស LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ប្រើ LE Audio តាមលំនាំដើម ទោះបីជាមិនបានផ្ទៀងផ្ទាត់ឧបករណ៍ខាងក្រៅ LE Audio ដើម្បីឱ្យបំពេញតាមលក្ខខណ្ឌបញ្ជីអនុញ្ញាតក៏ដោយ។"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"កំណត់ដោយស្វ័យប្រវត្តិដោយប្រើបណ្ដាញ និងសញ្ញាឥតខ្សែរបស់អ្នក"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ល្វែងម៉ោងស្វ័យប្រវត្តិ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"កំណត់ដោយស្វ័យប្រវត្តិដោយផ្អែកលើបណ្ដាញទូរសព្ទចល័តដែលនៅជិតអ្នក"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"កំណត់ដោយស្វ័យប្រវត្តិដោយប្រើទីតាំងឧបករណ៍អ្នក ប្រសិនបើមាន"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ប្រើតាមតំបន់"</string>
<string name="date_time_24hour" msgid="286679379105653406">"ប្រើប្រព័ន្ធ ២៤ ម៉ោង"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"ម៉ោង"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"លើកម្រាមដៃ ហើយបន្ទាប់មកប៉ះឧបករណ៍ចាប់សញ្ញាម្តងទៀត"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"មិនអាចប្រើសេនស័រចាប់ស្នាមម្រាមដៃបានទេ"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ទាក់ទងក្រុមហ៊ុនផ្ដល់ការជួសជុល។"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"ការដោះសោដោយស្កេនស្នាមម្រាមដៃពេលអេក្រង់បិទ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ប្រើការដោះសោដោយស្កេនស្នាមម្រាមដៃ សូម្បីនៅពេលអេក្រង់ត្រូវបានបិទ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"អេក្រង់ត្រូវបានបិទ សូមដោះសោ"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"ការកំណត់សុវត្ថិភាពច្រើនទៀត"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ការចាក់សោកម្រងព័ត៌មានការងារ ការអ៊ីនគ្រីប និងអ្វីៗជាច្រើនទៀត"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ការអ៊ីនគ្រីប ព័ត៌មានផ្ទៀងផ្ទាត់ និងអ្វីៗជាច្រើនទៀត"</string>
@@ -1950,26 +1955,36 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ក្ដារចុចមិនអើពើនឹងការចុចដដែលៗយ៉ាងរហ័សនៃគ្រាប់ចុចដដែល"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"កម្រិតកំណត់គ្រាប់ចុចឡង"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ជ្រើសរើសរយៈពេលដែលក្តារចុចរបស់អ្នកមិនអើពើនឹងការចុចគ្រាប់ចុចដដែលៗ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 វិ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 វិ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 វិ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 វិ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 វិ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 វិ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"ផ្ទាល់ខ្លួន"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"តម្លៃផ្ទាល់ខ្លួន"</string>
<string name="slow_keys" msgid="2891452895499690837">"គ្រាប់ចុចយឺត"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"កែតម្រូវរយៈពេលនៃការចុចគ្រាប់ចុចដើម្បីបើកដំណើរការ"</string>
<string name="sticky_keys" msgid="7317317044898161747">"គ្រាប់ចុចស្អិត"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ចុចគ្រាប់ចុចមួយក្នុងមួយលើកសម្រាប់ផ្លូវកាត់ជំនួសឱ្យការចុចគ្រាប់ចុចឱ្យជាប់រួមគ្នា"</string>
<string name="mouse_keys" msgid="6237254627808525540">"គ្រាប់ចុចម៉ៅស៍"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ប្រើគ្រាប់ចុចម៉ៅស៍"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ប្រើក្តារចុចរបស់អ្នកដើម្បីគ្រប់គ្រងសញ្ញាព្រួញ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"ការរំកិលម៉ៅស៍បញ្រ្ចាស"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"រំកិលឡើងលើ ដើម្បីផ្លាស់ទីទំព័រចុះក្រោម"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ដោះដូររវាងប៊ូតុងឆ្វេង និងប៊ូតុងស្ដាំ"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ប្រើប៊ូតុងម៉ៅស៍ខាងឆ្វេងជាប៊ូតុងម៉ៅស៍ខាងស្ដាំរបស់អ្នក"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"គ្រាប់ចុចម៉ៅស៍សម្រាប់ <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ប្រើគ្រាប់ចុច <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ដើម្បីផ្លាស់ទីព្រួញម៉ៅស៍"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ប្រើគ្រាប់ចុច <xliff:g id="CLICK_LABEL">%s</xliff:g> ដើម្បីចុចប៊ូតុងម៉ៅស៍ចម្បង"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ប្រើគ្រាប់ចុច <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ដើម្បីចុចឱ្យជាប់លើប៊ូតុងម៉ៅស៍ចម្បង"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ប្រើគ្រាប់ចុច <xliff:g id="RELEASE_LABEL">%s</xliff:g> ដើម្បីលែងប៊ូតុងម៉ៅស៍ចម្បង"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"ប្រើគ្រាប់ចុច <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ដើម្បីបិទ/បើកមុខងាររំកិល។ សកម្មភាពនេះនឹងធ្វើឱ្យគ្រាប់ចុច <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> រំកិលទៅទិដ្ឋភាពខាងលើ ខាងក្រោម ខាងឆ្វេង ឬខាងស្ដាំ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ប្រើគ្រាប់ចុច <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ដើម្បីចុចប៊ូតុងម៉ៅស៍បន្ទាប់បន្សំ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"ផ្លូវកាត់ក្តារចុច"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"បង្ហាញបញ្ជីផ្លូវកាត់"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"ឧបករណ៍ និងក្ដារចុចកម្រងព័ត៌មានការងារ"</string>
<string name="virtual_keyboards_for_work_title" msgid="786459157034008675">"ក្ដារចុចលើអេក្រង់សម្រាប់ការងារ"</string>
<string name="keyboard_default_layout" msgid="5377811770620422301">"លំនាំដើម"</string>
<string name="trackpad_settings" msgid="2071131324087677005">"ផ្ទាំងប៉ះ"</string>
- <string name="trackpad_mouse_settings" msgid="136226693583218429">"ផ្ទាំងប៉ះ និងកណ្ដុរ"</string>
+ <string name="trackpad_mouse_settings" msgid="136226693583218429">"ផ្ទាំងប៉ះ និងម៉ៅស៍"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"ល្បឿនទស្សន៍ទ្រនិច ចលនា"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"ប៉ះដើម្បីចុច"</string>
<string name="trackpad_tap_dragging_title" msgid="798644199582480712">"ចុចអូស"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"ជ្រើសរើសប៊ូតុងថ្មីសម្រាប់ <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>៖"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ភាពងាយស្រួលប្រើប្រាស់ក្ដារចុចរូបវន្ត"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"គ្រាប់ចុចស្អិត គ្រាប់ចុចលោត គ្រាប់ចុចម៉ៅស៍"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"គ្រាប់ចុចដែលចុចឡើងវិញ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ពន្យារពេលមុនការចុចឡើងវិញ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"អត្រាចុចឡើងវិញ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ចុចឱ្យជាប់លើគ្រាប់ចុចណាមួយ ដើម្បីចុចតួអក្សររបស់វាឡើងវិញ រហូតទាល់តែគ្រាប់ចុចត្រូវបានលែង"</string>
<string name="ime_label_title" msgid="8994569521516807168">"ប្លង់ <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"លំនាំដើម"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ស្វ័យប្រវត្តិ៖ <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2224,7 +2235,7 @@
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ដើម្បីប្រើមុខងារភាពងាយប្រើ សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ ដោយប្រើម្រាមដៃ 2។\n\nដើម្បីប្ដូររវាងមុខងារផ្សេងៗ សូមអូសឡើងលើ ដោយប្រើម្រាមដៃ 2 រួចសង្កត់ឱ្យជាប់។"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"ដើម្បីប្រើមុខងារភាពងាយប្រើ សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ ដោយប្រើម្រាមដៃ 3។\n\nដើម្បីប្ដូររវាងមុខងារផ្សេងៗ សូមអូសឡើងលើ ដោយប្រើម្រាមដៃ 3 រួចសង្កត់ឱ្យជាប់។"</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"យល់ហើយ"</string>
- <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"ប៊ូតុងប្ដូរតាមបំណង"</string>
+ <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"ប្ដូរប៊ូតុងតាមបំណង"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"ជម្រើសច្រើនទៀត"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"ផ្លូវកាត់ <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"ប៊ូតុងភាពងាយស្រួល"</string>
@@ -2366,7 +2377,7 @@
<string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"ស្វែងយល់បន្ថែមអំពីការបញ្ច្រាសពណ៌"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"បង្ហាញអក្សររត់"</string>
<string name="accessibility_captioning_primary_switch_summary" msgid="2544094070306830218">"សម្រាប់កម្មវិធីដែលអាចប្រើបានតែប៉ុណ្ណោះ"</string>
- <string name="captioning_appearance_title" msgid="3128792092290011408">"រចនាប័ទ្ម និងទំហំអក្សររត់"</string>
+ <string name="captioning_appearance_title" msgid="3128792092290011408">"រចនាបថ និងទំហំអក្សររត់"</string>
<string name="captioning_appearance_summary" msgid="4620682807315588019">"ទំហំអក្សរ<xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g>"</string>
<string name="captioning_more_options_title" msgid="3484496882942539652">"ជម្រើសច្រើនទៀត"</string>
<string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"ប្ដូររចនាប័ទ្ម និងទំហំអក្សររត់តាមបំណង ដើម្បីធ្វើឱ្យកាន់តែងាយស្រួលអាន"</string>
@@ -2444,7 +2455,7 @@
<string name="captioning_standard_options_title" msgid="5360264497750980205">"ជម្រើសស្តង់ដារ"</string>
<string name="captioning_locale" msgid="5533303294290661590">"ភាសា"</string>
<string name="captioning_text_size" msgid="5764254558945371745">"ទំហំអក្សររត់"</string>
- <string name="captioning_preset" msgid="4174276086501638524">"រចនាប័ទ្មអក្សររត់"</string>
+ <string name="captioning_preset" msgid="4174276086501638524">"រចនាបថអក្សររត់"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"ជម្រើសតាមតម្រូវការ"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"ពណ៌ផ្ទៃខាងក្រោយ"</string>
<string name="captioning_background_opacity" msgid="6453738649182382614">"ភាពស្រអាប់ផ្ទៃខាងក្រោយ"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"កែការប្រើថាមពល"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"កញ្ចប់រួមបញ្ចូល"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"កម្មវិធីកំពុងដំណើរការជាធម្មតា"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ការប្ដូរថ្មត្រូវបានណែនាំ"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"កាប៉ាស៊ីតេបន្ទុករបស់ថ្ម និងប្រសិទ្ធភាពនៃការសាកថ្មថយចុះ ហើយការប្ដូរថ្មត្រូវបានណែនាំ។"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"កម្រិតថ្មជិតអស់ហើយ"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"បើកមុខងារសន្សំថ្ម ដើម្បីបង្កើនកម្រិតថាមពលថ្ម"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"បង្កើនកម្រិតថាមពលថ្ម"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ផ្តាច់ VPN នេះ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ផ្ដាច់"</string>
<string name="vpn_version" msgid="6344167191984400976">"កំណែ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"កំណែ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"បំភ្លេច VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ជំនួស VPN ដែលមានស្រាប់ឬ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"កំណត់ VPN ឲ្យបើកជានិច្ចឬ?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 ព្រឹក - 5 ល្ងាចនៃថ្ងៃធ្វើការ\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"ព្រឹត្តិការណ៍ក្នុងប្រតិទិន"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} កំពុងដំណើរការ}=2{{mode_1} និង {mode_2} កំពុងដំណើរការ}=3{{mode_1}, {mode_2} និង {mode_3} កំពុងដំណើរការ}other{{mode_1}, {mode_2}និង # ទៀតកំពុងដំណើរការ}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{មុខងារ 1 អាចបើកដោយស្វ័យប្រវត្តិ}other{មុខងារ # អាចបើកដោយស្វ័យប្រវត្តិ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{កុំរំខាន}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"បើក"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"មិនបានកំណត់"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"បានបិទ"</string>
@@ -3689,7 +3701,7 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"វាអាចឆ្លើយតបសារ និងធ្វើសកម្មភាពលើប៊ូតុងនៅក្នុងការជូនដំណឹង រួមទាំងផ្អាក ឬច្រានចោលការជូនដំណឹង និងទទួលទូរសព្ទផងដែរ។"</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"ប្ដូរការកំណត់"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"វាអាចបើក ឬបិទមុខងារកុំរំខាន និងប្ដូរការកំណត់ដែលពាក់ព័ន្ធ។"</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"វាអាចគ្រប់គ្រង និងដំណើរការមុខងារ និងផ្លាស់ប្ដូរការកំណត់ដែលពាក់ព័ន្ធ។"</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"វាអាចគ្រប់គ្រង និងបើកដំណើរការមុខងារ និងផ្លាស់ប្ដូរការកំណត់ពាក់ព័ន្ធ។"</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"ប្រសិនបើអ្នកបិទការចូលប្រើការជូនដំណឹងសម្រាប់ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> នោះការចូលប្រើមុខងារកុំរំខានក៏អាចនឹងត្រូវបានបិទដែរ។"</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"ប្រសិនបើអ្នកបិទការចូលប្រើការជូនដំណឹងសម្រាប់ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> នោះការចូលប្រើមុខងារក៏អាចបិទផងដែរ។"</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"បិទ"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"នៅពេលអ្នកទទួលបានការជូនដំណឹងច្រើនក្នុងរយៈពេលខ្លីមួយ ឧបករណ៍របស់អ្នកនឹងបន្ថយកម្រិតសំឡេង និងការជូនដំណឹងរហូតដល់ 2 នាទី។ ការហៅទូរសព្ទ សំឡេងរោទិ៍ និងការសន្ទនាអាទិភាពមិនរងប៉ះពាល់ទេ។ \n\nអ្នកអាចស្វែងរកការជូនដំណឹងដែលបានទទួលក្នុងអំឡុងពេលបន្ថយសំឡេង ដោយទាញពីផ្នែកខាងលើនៃអេក្រង់ចុះក្រោម។"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ដាក់ប្រើលើកម្រងព័ត៌មានការងារ"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ដាក់ប្រើលើកម្មវិធីកម្រងព័ត៌មានការងារ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"សេវាកម្មជំនួយ VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"មិនមានកម្មវិធីដែលបានដំឡើងត្រូវបានស្នើឲ្យដំណើរការជាសេវាកម្មជំនួយ VR នោះទេ។"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"អនុញ្ញាតឲ្យសេវាកម្ម VR ចូលដំណើរការ <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -4154,7 +4176,7 @@
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"ដកសិទ្ធិចូលប្រើមុខងារកុំរំខានសម្រាប់ <xliff:g id="APP">%1$s</xliff:g> ឬ?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"វិធានទាំងអស់របស់មុខងារកុំរំខានដែលបានបង្កើតដោយកម្មវិធីនេះនឹងត្រូវដកចេញ។"</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"អនុញ្ញាតឱ្យចូលប្រើមុខងារសម្រាប់ <xliff:g id="APP">%1$s</xliff:g> ឬ?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"កម្មវិធីនឹងអាចបើក/បិទមុខងារ កុំរំខាន គ្រប់គ្រង និងដំណើរការមុខងារ និងធ្វើការផ្លាស់ប្ដូរការកំណត់ដែលពាក់ព័ន្ធ។"</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"កម្មវិធីនឹងអាចបើក/បិទមុខងារកុំរំខាន គ្រប់គ្រង និងបើកដំណើរការមុខងារ និងធ្វើការផ្លាស់ប្ដូរលើការកំណត់ពាក់ព័ន្ធ។"</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"ដកសិទ្ធិចូលប្រើមុខងារសម្រាប់ <xliff:g id="APP">%1$s</xliff:g> ឬ?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"មុខងារទាំងអស់ដែលបង្កើតឡើងដោយកម្មវិធីនេះនឹងត្រូវបានដកចេញ។"</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"កុំបង្កើនប្រសិទ្ធភាព"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ស្ដាប់ការចាក់"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"ស្កេនកូដ QR ការចាក់សំឡេងលើអ៊ីនធឺណិត ដើម្បីស្ដាប់ជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"មិនអាចកែពាក្យសម្ងាត់ពេលកំពុងស្ដាប់រួមគ្នាបានទេ។ ដើម្បីផ្លាស់ប្ដូរពាក្យសម្ងាត់ សូមបិទការស្ដាប់សំឡេងរួមគ្នាជាមុនសិន។"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"ពាក្យសម្ងាត់របស់អ្នកត្រូវតែមាន 4-16 តួអក្សរ និងប្រើអក្សរ លេខ និងនិមិត្តសញ្ញាតែប៉ុណ្ណោះ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"កម្មវិធីស្កេនកូដ QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"ត្រូវការជំនួយឬ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ស្វែងរកការកំណត់"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"សម្រាប់តែឧបករណ៍"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"ទំនាក់ទំនងថ្មីៗនឹងមិនត្រូវបានធ្វើសមកាលកម្មជាមួយគណនីទេ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ទំនាក់ទំនងនឹងត្រូវបានរក្សាទុកទៅក្នុងឧបករណ៍របស់អ្នក និងធ្វើសមកាលកម្មទៅគណនីរបស់អ្នកតាមលំនាំដើម"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"មិនបានកំណត់លំនាំដើម"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"មានបញ្ហាក្នុងការកំណត់គណនីលំនាំដើម"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"មិនបានកំណត់លំនាំដើម"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"សម្រាប់តែឧបករណ៍"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"សូមបញ្ចូលគណនី ដើម្បីចាប់ផ្ដើម"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"គូររង្វង់ដើម្បីស្វែងរក"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ចុចប៊ូតុងទំព័រដើម ឬដងរុករកឱ្យជាប់ ដើម្បីស្វែងរកដោយប្រើខ្លឹមសារនៅលើអេក្រង់របស់អ្នក។"</string>
</resources>
diff --git a/res/values-kn/arrays.xml b/res/values-kn/arrays.xml
index 815b2c7..dcf2761 100644
--- a/res/values-kn/arrays.xml
+++ b/res/values-kn/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ಬ್ರೀಫ್ಕೇಸ್"</item>
+ <item msgid="184985872234062767">"ಶಾಸ್ತ್ರೀಯ ಶೈಲಿಯ ಕಟ್ಟಡ"</item>
+ <item msgid="9189550412466785530">"ಅಪಾರ್ಟ್ಮೆಂಟ್ ಕಟ್ಟಡ"</item>
+ <item msgid="2142527562511049422">"ಸ್ಪೀಚ್ ಬಬಲ್"</item>
+ <item msgid="2548100558260478605">"ಜನರ ಗುಂಪು"</item>
+ <item msgid="2270003903304578284">"ಲೈಟ್ಬಲ್ಬ್"</item>
+ <item msgid="4793496619091161864">"ಕ್ಯಾಲೆಂಡರ್"</item>
+ <item msgid="5673625795644364100">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ"</item>
+ <item msgid="1423820834865831361">"ವ್ಯಕ್ತಿಯೊಬ್ಬರು ಓಡುತ್ತಿರುವುದು"</item>
+ <item msgid="2037298830718732608">"ಗಾಲ್ಫ್"</item>
+ <item msgid="2197835014443491074">"ಜಿಮ್ ಡಂಬೆಲ್"</item>
+ <item msgid="2730180105015616518">"ಈಜು"</item>
+ <item msgid="2666922823253345958">"ವ್ಯಕ್ತಿಯೊಬ್ಬರು ಹೈಕಿಂಗ್ ಮಾಡುತ್ತಿರುವುದು"</item>
+ <item msgid="8234880356472211396">"ವ್ಯಕ್ತಿಯೊಬ್ಬರು ಚೆಂಡನ್ನು ಎಸೆಯುತ್ತಿರುವುದು"</item>
+ <item msgid="4642980625253001443">"ವ್ಯಕ್ತಿಯೊಬ್ಬರು ಒದೆಯುತ್ತಿರುವುದು"</item>
+ <item msgid="4324795269518833500">"ಗೇಮ್ ಕಂಟ್ರೋಲರ್"</item>
+ <item msgid="7789966425125441125">"ಕಲಾವಿದರ ಬಣ್ಣದ ಫಲಕ"</item>
+ <item msgid="663512680597461570">"ಸ್ನೋಫ್ಲೇಕ್"</item>
+ <item msgid="7952183800501346803">"ಬೀಚ್ ಛತ್ರಿಗಳು"</item>
+ <item msgid="799139025758265891">"ಕಾರ್ಯಾಗಾರದ ಟೂಲ್ಗಳು"</item>
+ <item msgid="8112685757657659269">"ಪಿಯಾನೋ"</item>
+ <item msgid="3861584909935022342">"ಫಿಲಂ ರೀಲ್"</item>
+ <item msgid="5827426100157335512">"ಕಾಯ್ದಿರಿಸಿ"</item>
+ <item msgid="8585828346253128384">"ಕಮಲದ ಹೂವು"</item>
+ <item msgid="8788370542815300188">"ವ್ಯಕ್ತಿಯ ಮನಸ್ಸು"</item>
+ <item msgid="7287354964767553293">"ಹೆಡ್ಫೋನ್ಗಳು"</item>
+ <item msgid="2530059623783800987">"ಟಿವಿ"</item>
+ <item msgid="5307182323469376758">"ರೈಲು"</item>
+ <item msgid="4903790544026923026">"ಕಾರ್"</item>
+ <item msgid="5010405583912314582">"ಫೋರ್ಕ್ ಮತ್ತು ಚಾಕು"</item>
+ <item msgid="8939998598599064900">"ಶಾಪಿಂಗ್ ಕಾರ್ಟ್"</item>
+ <item msgid="3379605903308731893">"ಮಗು"</item>
+ <item msgid="7808668968550293112">"ಪ್ರಾಣಿಯ ಪಂಜ"</item>
+ <item msgid="1000692647524056504">"ಸ್ಟಾರ್ ಬ್ಯಾಡ್ಜ್"</item>
+ <item msgid="8270261073421676502">"ಇಬ್ಬರು ವ್ಯಕ್ತಿಗಳು"</item>
+ <item msgid="5767782819651505460">"ನಕ್ಷತ್ರ"</item>
+ <item msgid="4368451291862729334">"ಹೃದಯ"</item>
+ <item msgid="2613199102208419986">"ಮನೆ"</item>
+ <item msgid="3022279986430275040">"ಅರ್ಧಚಂದ್ರ"</item>
+ <item msgid="5421089790869483206">"ಗಡಿಯಾರ"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 2456080..308666e 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"ಹೊಸ ಸಾಧನ ಪೇರ್ ಮಾಡಿ"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ಬ್ಲೂಟೂತ್"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ನಾಳೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಆಗಲಿ"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"ನೀವು ಬ್ಲೂಟೂತ್ ಅನ್ನು ಆಫ್ ಮಾಡಿದರೆ, ಅದು ಮರುದಿನ ಮತ್ತೆ ಆನ್ ಆಗುತ್ತದೆ"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ಬಲಕಿವಿಯ ಶ್ರವಣ ಸಾಧನವನ್ನು ಜೋಡಿಸಿ"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ಎಡಕಿವಿಯ ಶ್ರವಣ ಸಾಧನವನ್ನು ಜೋಡಿಸಿ"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ನಿಮ್ಮ ಮತ್ತೊಂದು ಕಿವಿಯ ಸಾಧನವನ್ನು ಜೋಡಿಸಿ"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ಬ್ಲೂಟೂತ್ LE ಆಡಿಯೋವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ಸಾಧನವು LE ಆಡಿಯೋ ಹಾರ್ಡ್ವೇರ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸಿದರೆ ಈ ಆಯ್ಕೆಯು ಬ್ಲೂಟೂತ್ LE ಆಡಿಯೋ ಫೀಚರ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ಬ್ಲೂಟೂತ್ LE ಆಡಿಯೋ ಮೋಡ್"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ಬ್ಲೂಟೂತ್ LE ಆಡಿಯೋ ಬ್ರಾಡ್ಕಾಸ್ಟ್ UI ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"ವೈಯಕ್ತಿಕ ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆ ಮತ್ತು ಖಾಸಗಿ ಬ್ರಾಡ್ಕಾಸ್ಟ್ ಸೇರಿದಂತೆ LE ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯು UI ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ಸಾಧನ ವಿವರಗಳಲ್ಲಿ LE ಆಡಿಯೋ ಟಾಗಲ್ ತೋರಿಸಿ"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ಬೈಪಾಸ್ ಬ್ಲೂಟೂತ್ LE ಆಡಿಯೊ ಅನುಮತಿ ಪಟ್ಟಿ"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ಅನುಮತಿ ಪಟ್ಟಿ ಮಾನದಂಡಗಳನ್ನು ಪೂರೈಸಲು, LE ಆಡಿಯೊ ಪೆರಿಫೆರಲ್ ಅನ್ನು ದೃಢೀಕರಿಸಿರದಿದ್ದರೂ ಸಹ ಡೀಫಾಲ್ಟ್ ಆಗಿ LE ಆಡಿಯೊ ಬಳಸಿ."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಮತ್ತು ವೈರ್ಲೆಸ್ ಸಿಗ್ನಲ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೆಟ್ ಮಾಡಿ"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ಸ್ವಯಂಚಾಲಿತ ಸಮಯವಲಯ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ನಿಮ್ಮ ಸಮೀಪದ ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಆಧರಿಸಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೆಟ್ ಮಾಡಿ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ಲಭ್ಯವಿದ್ದರೆ, ನಿಮ್ಮ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಬಳಸಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೆಟ್ ಮಾಡಿ"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ಭಾಷೆ ಡೀಫಾಲ್ಟ್ ಬಳಸಿ"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-ಗಂಟೆ ಫಾರ್ಮ್ಯಾಟ್ ಬಳಸಿ"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"ಸಮಯ"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ಬೆರಳನ್ನು ಮೇಲಕ್ಕೆ ಎತ್ತಿರಿ, ನಂತರ ಮತ್ತೊಮ್ಮೆ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ರಿಪೇರಿ ಮಾಡುವವರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"ಸ್ಕ್ರೀನ್-ಆಫ್, ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ಸ್ಕ್ರೀನ್ ಆಫ್ ಆಗಿರುವಾಗಲೂ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಬಳಸಿ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"ಸ್ಕ್ರೀನ್-ಆಫ್, ಅನ್ಲಾಕ್"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"ಹೆಚ್ಚಿನ ಭದ್ರತಾ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಲಾಕ್, ಎನ್ಕ್ರಿಪ್ಶನ್ ಹಾಗೂ ಇನ್ನಷ್ಟು"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ಎನ್ಕ್ರಿಪ್ಶನ್, ರುಜುವಾತುಗಳು ಹಾಗೂ ಇನ್ನಷ್ಟು"</string>
@@ -1835,7 +1840,7 @@
<string name="filter" msgid="9039576690686251462">"ಫಿಲ್ಟರ್"</string>
<string name="filter_dlg_title" msgid="3086282431958601338">"ಫಿಲ್ಟರ್ ಆಯ್ಕೆಗಳನ್ನು ಆರಿಸಿ"</string>
<string name="filter_apps_all" msgid="5705421199299914620">"ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್ಗಳು"</string>
- <string name="filter_apps_disabled" msgid="5068011814871004105">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಆಪ್ಗಳು"</string>
+ <string name="filter_apps_disabled" msgid="5068011814871004105">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಆ್ಯಪ್ಗಳು"</string>
<string name="filter_apps_third_party" msgid="9049447784849114843">"ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="filter_apps_running" msgid="535465683273284141">"ಚಾಲನೆಯಲ್ಲಿದೆ"</string>
<string name="not_installed" msgid="5074606858798519449">"ಈ ಬಳಕೆದಾರರಿಗಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ಒಂದೇ ಕೀನ ತ್ವರಿತ ಪುನರಾವರ್ತಿತ ಪ್ರೆಸ್ಗಳನ್ನು ಕೀಬೋರ್ಡ್ ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"ಬೌನ್ಸ್ ಕೀ ಥ್ರೆಶೋಲ್ಡ್"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಪುನರಾವರ್ತಿತ ಕೀ ಪ್ರೆಸ್ಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಬೇಕಾದ ಸಮಯದ ಅವಧಿಯನ್ನು ಆರಿಸಿ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2ಸೆ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4ಸೆ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6ಸೆ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2ಸೆ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4ಸೆ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6ಸೆ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"ಕಸ್ಟಮ್"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ಕಸ್ಟಮ್ ಮೌಲ್ಯ"</string>
<string name="slow_keys" msgid="2891452895499690837">"ಸ್ಲೋ ಕೀಗಳು"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ಕೀ ಪ್ರೆಸ್ ಸಕ್ರಿಯಗೊಳ್ಳಲು ತೆಗೆದುಕೊಳ್ಳುವ ಸಮಯವನ್ನು ಅಡ್ಜಸ್ಟ್ ಮಾಡುತ್ತದೆ"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ಸ್ಟಿಕಿ ಕೀಗಳು"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ಕೀಗಳನ್ನು ಜೊತೆಯಾಗಿ ಕೆಳಗೆ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವ ಬದಲಾಗಿ ಶಾರ್ಟ್ಕಟ್ಗಳಿಗಾಗಿ ಒಂದು ಬಾರಿ ಒಂದು ಕೀ ಅನ್ನು ಒತ್ತಿ"</string>
<string name="mouse_keys" msgid="6237254627808525540">"ಮೌಸ್ ಕೀಗಳು"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ಮೌಸ್ ಕೀಗಳನ್ನು ಬಳಸಿ"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ಪಾಯಿಂಟರ್ ಅನ್ನು ಕಂಟ್ರೋಲ್ ಮಾಡಲು ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"ಮೌಸ್ ಹಿಮ್ಮುಖ ಸ್ಕ್ರಾಲ್ ಮಾಡುವಿಕೆ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"ಪುಟವನ್ನು ಕೆಳಕ್ಕೆ ಸರಿಸಲು ಮೇಲಕ್ಕೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ಎಡ ಮತ್ತು ಬಲ ಬಟನ್ಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ಎಡ ಮೌಸ್ ಬಟನ್ ಅನ್ನು ನಿಮ್ಮ ಬಲ ಬಟನ್ ಆಗಿ ಬಳಸಿ"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> ನ ಮೌಸ್ ಕೀಗಳು"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ಮೌಸ್ ಪಾಯಿಂಟರ್ ಅನ್ನು ಸರಿಸಲು <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ಕೀಗಳನ್ನು ಬಳಸಿ"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ಪ್ರಾಥಮಿಕ ಮೌಸ್ ಬಟನ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಲು <xliff:g id="CLICK_LABEL">%s</xliff:g> ಕೀಯನ್ನು ಬಳಸಿ"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ಪ್ರಾಥಮಿಕ ಮೌಸ್ ಬಟನ್ ಅನ್ನು ಒತ್ತಿ ಹಿಡಿಯಲು <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ಕೀಯನ್ನು ಬಳಸಿ"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ಪ್ರಾಥಮಿಕ ಮೌಸ್ ಬಟನ್ ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲು <xliff:g id="RELEASE_LABEL">%s</xliff:g> ಕೀಯನ್ನು ಬಳಸಿ"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"ಸ್ಕ್ರಾಲ್ ಮೋಡ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಲು <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ಕೀಯನ್ನು ಬಳಸಿ. ಇದು <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ಕೀಗಳು ವೀಕ್ಷಣೆಯನ್ನು ಮೇಲಕ್ಕೆ, ಕೆಳಕ್ಕೆ, ಎಡ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ಕ್ರಾಲ್ ಮಾಡುತ್ತದೆ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ಸೆಕೆಂಡರಿ ಮೌಸ್ ಬಟನ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಲು <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ಕೀಯನ್ನು ಬಳಸಿ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳು"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ಶಾರ್ಟ್ಕಟ್ಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಕೀಬೋರ್ಡ್ಗಳು ಮತ್ತು ಉಪಕರಣಗಳು"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> ಗಾಗಿ ಹೊಸ ಕೀ ಆಯ್ಕೆಮಾಡಿ:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ಭೌತಿಕ ಕೀಬೋರ್ಡ್ ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ಸ್ಟಿಕಿ ಕೀಗಳು, ಬೌನ್ಸ್ ಕೀಗಳು, ಮೌಸ್ ಕೀಗಳು"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"ಕೀಗಳನ್ನು ಪುನರಾವರ್ತಿಸಿ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ಪುನರಾವರ್ತನೆಗೆ ಮೊದಲು ವಿಳಂಬ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ಪುನರಾವರ್ತಿತ ದರ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ಕೀ ಬಿಡುಗಡೆ ಆಗುವವರೆಗೆ ಅದರ ಅಕ್ಷರವನ್ನು ಪುನರಾವರ್ತಿಸಲು ಕೀಯನ್ನು ಹೋಲ್ಡ್ ಮಾಡಿ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> ಲೇಔಟ್"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ಡಿಫಾಲ್ಟ್"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ಆಟೋಮೆಟಿಕ್: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ವಿದ್ಯುತ್ ಬಳಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ಒಳಗೊಂಡ ಪ್ಯಾಕೇಜ್ಗಳು"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿವೆ"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ಬ್ಯಾಟರಿ ಬದಲಿಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ಬ್ಯಾಟರಿ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಚಾರ್ಜಿಂಗ್ ಕಾರ್ಯಕ್ಷಮತೆಯು ಕಡಿಮೆಯಾಗಿದೆ ಹಾಗೂ ಬ್ಯಾಟರಿಯನ್ನು ಬದಲಾಯಿಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ಬ್ಯಾಟರಿ ಮಟ್ಟ ಕಡಿಮೆ ಇದೆ"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ವಿಸ್ತರಿಸಲು ಬ್ಯಾಟರಿ ಸೇವರ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಸುಧಾರಿಸಿ"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ಈ VPN ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುವುದೇ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ"</string>
<string name="vpn_version" msgid="6344167191984400976">"ಆವೃತ್ತಿ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ಆವೃತ್ತಿ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN ಮರೆತುಬಿಡು"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಸ್ಥಾನಾಂತರಿಸುವುದೇ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"VPN ಯಾವಾಗಲೂ ಆನ್ ಆಗಿರುವಂತೆ ಹೊಂದಿಸುವುದೇ?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"ವಾರದ ದಿನಗಳಲ್ಲಿ 9 AM - 5 PM\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"ಕ್ಯಾಲೆಂಡರ್ ಈವೆಂಟ್ಗಳು"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ಸಕ್ರಿಯವಾಗಿದೆ}=2{{mode_1} ಮತ್ತು {mode_2} ಸಕ್ರಿಯವಾಗಿವೆ}=3{{mode_1}, {mode_2}, ಮತ್ತು {mode_3} ಸಕ್ರಿಯವಾಗಿವೆ}one{{mode_1}, {mode_2}, ಮತ್ತು # ಇತ್ಯಾದಿಗಳು ಸಕ್ರಿಯವಾಗಿವೆ}other{{mode_1}, {mode_2}, ಮತ್ತು # ಇತ್ಯಾದಿಗಳು ಸಕ್ರಿಯವಾಗಿವೆ}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ಮೋಡ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಆಗಬಹುದು}one{# ಮೋಡ್ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಆಗಬಹುದು}other{# ಮೋಡ್ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಆಗಬಹುದು}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ಅಡಚಣೆ ಮಾಡಬೇಡಿ}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ಆನ್ ಆಗಿದೆ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"ಸೆಟ್ ಮಾಡಿಲ್ಲ"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -3482,7 +3494,7 @@
<string name="zen_mode_restrict_notifications_enable_custom" msgid="4303255634151330401">"ಕಸ್ಟಮ್ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="zen_mode_restrict_notifications_disable_custom" msgid="5062332754972217218">"ಕಸ್ಟಮ್ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
<string name="zen_mode_restrict_notifications_summary_muted" msgid="2826459087306271381">"ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ತೋರಿಸಲಾಗಿದೆ"</string>
- <string name="zen_mode_restrict_notifications_summary_custom" msgid="6455811408721183198">"ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಭಾಗಶಃ ಮರೆಮಾಡಲಾಗಿದೆ"</string>
+ <string name="zen_mode_restrict_notifications_summary_custom" msgid="6455811408721183198">"ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಭಾಗಶಃ ಮರೆಮಾಡಲಾಗಿರುತ್ತದೆ"</string>
<string name="zen_mode_restrict_notifications_summary_hidden" msgid="2157279412167366119">"ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ"</string>
<string name="zen_mode_what_to_block_title" msgid="5692710098205334164">"ಕಸ್ಟಮ್ ನಿರ್ಬಂಧಗಳು"</string>
<string name="zen_mode_block_effects_screen_on" msgid="8780668375194500987">"ಪರದೆಯು ಆನ್ ಆಗಿರುವಾಗ"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"ನೀವು ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ಹೆಚ್ಚು ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ, ನಿಮ್ಮ ಸಾಧನವು 2 ನಿಮಿಷಗಳವರೆಗೆ ತನ್ನ ವಾಲ್ಯೂಮ್ ಅನ್ನು ತಗ್ಗಿಸುತ್ತದೆ ಮತ್ತು ಅಲರ್ಟ್ಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಕರೆಗಳು, ಅಲಾರಂಗಳು ಮತ್ತು ಆದ್ಯತೆಯ ಸಂಭಾಷಣೆಗಳು ಪ್ರಭಾವಿತವಾಗುವುದಿಲ್ಲ. \n\nಕೂಲ್ಡೌನ್ ಸಮಯದಲ್ಲಿ ಸ್ವೀಕರಿಸಿದ ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಸ್ಕ್ರೀನ್ನ ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಎಳೆಯುವ ಮೂಲಕ ಕಾಣಬಹುದಾಗಿದೆ."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ಉದ್ಯೋಗದ ಪ್ರೊಫೈಲ್ಗಳಿಗೆ ಅನ್ವಯಿಸಿ"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಆ್ಯಪ್ಗಳಿಗೆ ಅನ್ವಯಿಸಿ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR ಸಹಾಯ ಸೇವೆಗಳು"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ಯಾವುದೇ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದ ಆ್ಯಪ್ಗಳು VR ಅಸಿಸ್ಟೆಂಟ್ ಸೇವೆಗಳ ರೀತಿಯಲ್ಲಿ ರನ್ ಮಾಡಲು ವಿನಂತಿಸಿಲ್ಲ."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> ಗೆ VR ಸೇವೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
@@ -4419,7 +4441,7 @@
<string name="automatic_storage_manager_days_title" msgid="5077286114860539367">"ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
<string name="automatic_storage_manager_preference_title" msgid="3483357910142595444">"ಸಂಗ್ರಹಣೆ ನಿರ್ವಾಹಕ"</string>
<string name="automatic_storage_manager_primary_switch_title" msgid="9131959126462101994">"ಸಂಗ್ರಹಣೆ ನಿರ್ವಾಹಕವನ್ನು ಬಳಸಿ"</string>
- <string name="gesture_preference_title" msgid="8291899281322647187">"ಗೆಸ್ಚರ್ಗಳು"</string>
+ <string name="gesture_preference_title" msgid="8291899281322647187">"ಜೆಸ್ಚರ್ಗಳು"</string>
<string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"ತ್ವರಿತವಾಗಿ ಕ್ಯಾಮರಾ ತೆರೆಯಿರಿ"</string>
<string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"ಕ್ಯಾಮರಾವನ್ನು ತ್ವರಿತವಾಗಿ ತೆರೆಯಲು, ಎರಡು ಬಾರಿ ಪವರ್ ಬಟನ್ ಒತ್ತಿ. ಯಾವುದೇ ಸ್ಕ್ರೀನ್ನಿಂದ ಕೆಲಸ ಮಾಡುತ್ತದೆ."</string>
<string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"ಸೆಲ್ಫೀ ತೆಗೆಯಲು ಕ್ಯಾಮರಾ ತಿರುಗಿಸಿ"</string>
@@ -5459,18 +5481,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಆಲಿಸಿ"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆ ಕೇಳಲು ಆಡಿಯೋ ಸ್ಟ್ರೀಮ್ QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"ಹಂಚಿಕೊಳ್ಳುವಾಗ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಲು, ಮೊದಲು ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಆಫ್ ಮಾಡಿ."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ 4-16 ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬೇಕು ಮತ್ತು ಅಕ್ಷರಗಳು, ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಚಿಹ್ನೆಗಳನ್ನು ಮಾತ್ರ ಬಳಸಬೇಕು"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR ಕೋಡ್ ಸ್ಕ್ಯಾನರ್"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"ಸಹಾಯ ಬೇಕೇ?"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಹುಡುಕಿ"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"ಸಂಪರ್ಕಗಳು, ಸಂಗ್ರಹಣೆ, ಖಾತೆ"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"ಸಂಪರ್ಕಗಳ ಸಂಗ್ರಹಣೆ"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"ಸಾಧನ ಮಾತ್ರ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"ಹೊಸ ಸಂಪರ್ಕಗಳನ್ನು ಖಾತೆಯ ಜೊತೆ ಸಿಂಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ಸಂಪರ್ಕಗಳನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸೇವ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಡೀಫಾಲ್ಟ್ ಆಗಿ ನಿಮ್ಮ ಖಾತೆಗೆ ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತದೆ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ಡೀಫಾಲ್ಟ್ ಆಗಿ ಯಾವುದನ್ನೂ ಸೆಟ್ ಮಾಡಿಲ್ಲ"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ಡೀಫಾಲ್ಟ್ ಖಾತೆಯನ್ನು ಸೆಟ್ ಮಾಡುವಾಗ ದೋಷ ಎದುರಾಗಿದೆ"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ಡೀಫಾಲ್ಟ್ ಆಗಿ ಯಾವುದನ್ನೂ ಸೆಟ್ ಮಾಡಿಲ್ಲ"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"ಸಾಧನ ಮಾತ್ರ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ಪ್ರಾರಂಭಿಸಲು ಒಂದು ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ಹುಡುಕಲು ಒಂದು ಸರ್ಕಲ್ ರಚಿಸಿ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲಿನ ಕಂಟೆಂಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಹುಡುಕಲು ಹೋಮ್ ಬಟನ್ ಅಥವಾ ನ್ಯಾವಿಗೇಶನ್ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string>
</resources>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index b21f8ec..0d2685a 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"서류 가방"</item>
+ <item msgid="184985872234062767">"고전 건물"</item>
+ <item msgid="9189550412466785530">"아파트"</item>
+ <item msgid="2142527562511049422">"말풍선"</item>
+ <item msgid="2548100558260478605">"한 무리의 사람들"</item>
+ <item msgid="2270003903304578284">"전구"</item>
+ <item msgid="4793496619091161864">"캘린더"</item>
+ <item msgid="5673625795644364100">"방해 금지 모드"</item>
+ <item msgid="1423820834865831361">"달리는 사람"</item>
+ <item msgid="2037298830718732608">"골프"</item>
+ <item msgid="2197835014443491074">"헬스장 덤벨"</item>
+ <item msgid="2730180105015616518">"수영"</item>
+ <item msgid="2666922823253345958">"하이킹 중인 사람"</item>
+ <item msgid="8234880356472211396">"공을 던지는 사람"</item>
+ <item msgid="4642980625253001443">"발차기를 하는 사람"</item>
+ <item msgid="4324795269518833500">"게임 컨트롤러"</item>
+ <item msgid="7789966425125441125">"아티스트 색상 팔레트"</item>
+ <item msgid="663512680597461570">"눈송이"</item>
+ <item msgid="7952183800501346803">"비치 파라솔"</item>
+ <item msgid="799139025758265891">"워크숍 도구"</item>
+ <item msgid="8112685757657659269">"피아노"</item>
+ <item msgid="3861584909935022342">"필름 릴"</item>
+ <item msgid="5827426100157335512">"책"</item>
+ <item msgid="8585828346253128384">"연꽃"</item>
+ <item msgid="8788370542815300188">"사람의 마음"</item>
+ <item msgid="7287354964767553293">"헤드폰"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"기차"</item>
+ <item msgid="4903790544026923026">"자동차"</item>
+ <item msgid="5010405583912314582">"포크와 나이프"</item>
+ <item msgid="8939998598599064900">"장바구니"</item>
+ <item msgid="3379605903308731893">"아이"</item>
+ <item msgid="7808668968550293112">"동물 발"</item>
+ <item msgid="1000692647524056504">"별표 배지"</item>
+ <item msgid="8270261073421676502">"두 사람"</item>
+ <item msgid="5767782819651505460">"별"</item>
+ <item msgid="4368451291862729334">"하트"</item>
+ <item msgid="2613199102208419986">"집"</item>
+ <item msgid="3022279986430275040">"반달"</item>
+ <item msgid="5421089790869483206">"시계"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index a345709..b57fcae 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"새 기기와 페어링"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"블루투스"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"내일 자동 사용 설정"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"블루투스를 끄면 다음 날 다시 켜집니다."</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"오른쪽 보청기 페어링"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"왼쪽 보청기 페어링"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"반대쪽 보청기 페어링"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"블루투스 LE 오디오 사용 중지"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"기기가 LE 오디오 하드웨어 기능을 지원하는 경우 블루투스 LE 오디오 기능을 사용 중지합니다."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"블루투스 LE 오디오 모드"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"블루투스 LE 오디오 브로드캐스트 UI 미리보기 사용 설정"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"개인 오디오 공유 및 비공개 브로드캐스트를 포함한 LE 오디오 공유 UI 미리보기 사용 설정"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"기기 세부정보에 LE 오디오 전환 버튼 표시"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"블루투스 LE 오디오 허용 목록 우회"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE 오디오 주변기기가 허용 목록 기준을 충족하는 것으로 확인되지 않은 경우에도 기본적으로 LE 오디오를 사용합니다."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"네트워크 및 무선 신호를 사용하여 자동으로 설정합니다."</string>
<string name="zone_auto_title" msgid="3520584257065861479">"시간대 자동 설정"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"주변의 모바일 네트워크를 기반으로 자동으로 설정합니다."</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"가능한 경우, 기기 위치를 사용하여 자동으로 설정합니다."</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"언어 기본값 사용"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24시간 형식 사용"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"시간"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"손가락을 뗐다가 센서를 다시 터치하세요."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"지문 센서를 사용할 수 없음"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"수리업체에 방문하세요."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"화면 꺼짐 상태에서 지문 잠금 해제"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"화면이 꺼져 있어도 지문 잠금 해제 사용"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"화면 꺼짐, 잠금 해제"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"보안 설정 더보기"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"직장 프로필 잠금, 암호화 등"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"암호화, 사용자 인증 정보 등"</string>
@@ -563,14 +568,14 @@
<string name="work_profile_category_header" msgid="85707750968948517">"직장 프로필"</string>
<string name="private_space_title" msgid="1752064212078238723">"비공개 스페이스"</string>
<string name="private_space_summary" msgid="2274405892301976238">"비공개 앱을 잠그고 숨겨진 상태로 유지"</string>
- <string name="private_space_description" msgid="4059594203775816136">"비공개 앱을 숨기거나 잠글 수 있는 별도의 스페이스에 보관하세요."</string>
+ <string name="private_space_description" msgid="4059594203775816136">"숨기거나 잠글 수 있는 별도의 스페이스에 비공개 앱을 보관하세요."</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"비공개 스페이스 잠금"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"기기를 잠금 해제하는 방식과 동일하게 비공개 스페이스를 잠금 해제하거나 다른 잠금 방식을 선택할 수 있습니다."</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"기기 화면 잠금 사용"</string>
<string name="private_space_biometric_title" msgid="3934339826674553174">"얼굴 및 지문 잠금 해제"</string>
<string name="private_space_fingerprint_title" msgid="5989254643211889931">"지문 잠금 해제"</string>
<string name="private_space_face_title" msgid="3290402865367663079">"얼굴 인식 잠금 해제"</string>
- <string name="private_space_biometric_summary" msgid="4403837276018724581">"탭하여 설정"</string>
+ <string name="private_space_biometric_summary" msgid="4403837276018724581">"설정하려면 탭하세요."</string>
<string name="private_space_fingerprint_unlock_title" msgid="3614016453395789051">"비공개 스페이스용 지문 잠금 해제"</string>
<string name="private_space_face_unlock_title" msgid="462248384776453613">"비공개 스페이스용 얼굴 인식 잠금 해제"</string>
<string name="private_space_biometric_unlock_title" msgid="1978145237698659673">"비공개 스페이스용 얼굴 인식 및 지문 잠금 해제"</string>
@@ -609,7 +614,7 @@
<string name="private_space_category_system" msgid="1286843321867285700">"시스템"</string>
<string name="private_space_delete_title" msgid="636873505724100006">"비공개 스페이스 삭제"</string>
<string name="private_space_delete_header" msgid="4594429153176776184">"비공개 스페이스를 삭제하시겠습니까?"</string>
- <string name="private_space_delete_summary" msgid="7507302208399543921">"비공개 스페이스가 기기에서 영구적으로 삭제되며, \n\n해당 스페이스에 있는 모든 앱과 관련 데이터도 휴대전화의 "<b>"내부 저장소"</b>"에서 영구적으로 삭제됩니다."</string>
+ <string name="private_space_delete_summary" msgid="7507302208399543921">"비공개 스페이스가 기기에서 영구적으로 삭제됩니다. \n\n해당 스페이스에 있는 모든 앱과 관련 데이터도 휴대전화의 "<b>"내부 저장소"</b>"에서 영구적으로 삭제됩니다."</string>
<string name="private_space_accounts" msgid="1078277762792056395">"다음 계정이 비공개 스페이스에서 삭제됩니다."</string>
<string name="private_space_delete_button_label" msgid="1256981385318225002">"삭제"</string>
<string name="private_space_confirm_deletion_header" msgid="3468651585498942977">"비공개 스페이스 삭제 중…"</string>
@@ -623,7 +628,7 @@
<string name="private_space_cancel_label" msgid="379259667396956886">"취소"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"설정"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"비공개 스페이스"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"별도의 스페이스에서 비공개 앱을 숨기거나 잠급니다. 추가 보안을 위해 전용 Google 계정을 사용하세요."</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"별도의 스페이스에서 비공개 앱을 숨기거나 잠글 수 있습니다. 추가 보안을 위해 전용 Google 계정을 사용하세요."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"작동 원리"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"스페이스를 위한 Google 계정 만들기"</b>\n"전용 계정을 사용하면 동기화된 파일, 사진, 이메일이 스페이스 외부에 표시되는 것을 방지할 수 있습니다."</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"잠금 설정"</b>\n"다른 사용자가 스페이스를 열지 못하게 하려면 스페이스를 잠급니다."</string>
@@ -1337,9 +1342,9 @@
<string name="ambient_display_screen_title" msgid="8615947016991429325">"절전 모드 자동 해제"</string>
<string name="ambient_display_category_triggers" msgid="1216640141609270011">"표시 시점"</string>
<string name="doze_title" msgid="1523090408230862316">"알림 수신 시 화면 켜짐"</string>
- <string name="doze_summary" msgid="8252867381522942804">"화면이 꺼져 있을 때 새 알림이 오면 화면이 켜집니다."</string>
+ <string name="doze_summary" msgid="8252867381522942804">"새 알림이 오면 꺼졌던 화면이 켜짐"</string>
<string name="doze_always_on_title" msgid="7326245192352868477">"시간 및 정보 항상 표시"</string>
- <string name="doze_always_on_summary" msgid="509097829739647852">"배터리 사용량 증가"</string>
+ <string name="doze_always_on_summary" msgid="509097829739647852">"배터리 사용량이 증가함"</string>
<string name="force_bold_text" msgid="4620929631102086716">"텍스트 굵게 표시"</string>
<string name="title_font_size" msgid="570613010306330622">"글꼴 크기"</string>
<string name="short_summary_font_size" msgid="8444689613442419978">"텍스트를 확대 또는 축소"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"동일한 키를 빠르게 반복해서 누를 시 키보드에서 이를 무시합니다."</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"바운스 키 기준점"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"키보드에서 반복 키 입력을 무시하는 시간을 선택하세요"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2초"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4초"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6초"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2초"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4초"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6초"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"맞춤"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"맞춤 값"</string>
<string name="slow_keys" msgid="2891452895499690837">"느린 키"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"키를 누를 때 활성화하기까지 걸리는 시간을 조정합니다."</string>
<string name="sticky_keys" msgid="7317317044898161747">"고정키"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"단축키를 사용할 때 키를 함께 누르지 않고 한 번에 하나씩 누릅니다"</string>
<string name="mouse_keys" msgid="6237254627808525540">"마우스 키"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"마우스 키 사용"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"키보드를 사용하여 포인터를 제어합니다."</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"마우스 역방향 스크롤"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"위로 스크롤하여 페이지 아래로 이동합니다."</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"왼쪽 및 오른쪽 버튼 바꾸기"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"왼쪽 마우스 버튼을 오른쪽 버튼으로 사용합니다."</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>의 마우스 키"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"<xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> 키를 사용하여 마우스 포인터를 이동합니다."</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"<xliff:g id="CLICK_LABEL">%s</xliff:g> 키를 사용하여 기본 마우스 버튼을 클릭합니다."</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> 키를 사용하여 기본 마우스 버튼을 길게 누릅니다."</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"<xliff:g id="RELEASE_LABEL">%s</xliff:g> 키를 사용하여 기본 마우스 버튼을 놓습니다."</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"스크롤 모드를 전환하려면 <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> 키를 사용하세요. 이렇게 하면 <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> 키를 사용하여 뷰를 위, 아래, 왼쪽 또는 오른쪽으로 스크롤할 수 있습니다."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"<xliff:g id="RELEASE_2_LABEL">%s</xliff:g> 키를 사용하여 마우스의 보조 버튼을 클릭합니다."</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"단축키"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"단축키 목록 표시"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"직장 프로필 키보드 및 도구"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>의 새 키 선택:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"실제 키보드 접근성"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"고정키, 바운스 키, 마우스 키"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"키 반복"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"반복 전 지연"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"반복 속도"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"키를 길게 눌러 문자를 반복해서 입력하고 키에서 손을 뗍니다."</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> 레이아웃"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"기본"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"자동: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"전원 사용 조절"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"포함된 패키지"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"앱이 정상적으로 작동 중"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"배터리 교체 권장"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"배터리 용량과 충전 성능이 저하되어 배터리 교체가 권장됩니다."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"배터리 잔량 부족"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"절전 모드를 사용 설정하여 배터리 수명을 늘리세요"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"배터리 수명 개선"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"이 VPN을 연결 해제하시겠습니까?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"연결 해제"</string>
<string name="vpn_version" msgid="6344167191984400976">"버전"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"버전 <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN 삭제"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"기존 VPN을 교체하시겠습니까?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"연결 유지 VPN을 설정하시겠습니까?"</string>
@@ -3406,12 +3418,12 @@
<string name="zen_modes_add_mode" msgid="5926457160307593664">"나만의 모드 만들기"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"중요한 사람과 앱의 알림만 받기"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"일정 설정"</string>
- <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"다음 자동 일정"</string>
+ <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"자동 일정 선택"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"요일 및 시간"</string>
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\'평일 오전 9시~오후 5시\'"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"캘린더 일정"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} 모드가 활성화됨}=2{{mode_1} 및 {mode_2} 모드가 활성화됨}=3{{mode_1}, {mode_2}, {mode_3} 모드가 활성화됨}other{{mode_1}, {mode_2} 외 #개 모드가 활성화됨}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{모드 1개가 자동으로 사용 설정될 수 있음}other{모드 #개가 자동으로 사용 설정될 수 있음}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{방해 금지 모드}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"사용"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"설정되지 않음"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"사용 중지됨"</string>
@@ -3424,7 +3436,7 @@
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"방해 요소 차단"</string>
<string name="zen_mode_setup_button_label" msgid="1959984133767361374">"<xliff:g id="MODE">%1$s</xliff:g> 설정"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"방해 금지 모드 사용 설정"</string>
- <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"알람 및 미디어 소리 예외"</string>
+ <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"알람 및 미디어 소리만 예외"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"예약"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"예약 삭제"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"삭제"</string>
@@ -3435,9 +3447,9 @@
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"예약"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"예약"</string>
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"자동으로 사용 설정되는 시간"</string>
- <string name="zen_mode_set_calendar_title" msgid="609741570346510347">"이벤트 일정"</string>
- <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"다음 이벤트 중에 사용 설정"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"초대 답장 위치"</string>
+ <string name="zen_mode_set_calendar_title" msgid="609741570346510347">"일정 캘린더"</string>
+ <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"다음 캘린더의 일정에 적용"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"다음 초대 응답에 적용"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"시간으로 설정"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"일정"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g>시간 <xliff:g id="MINUTES">%2$d</xliff:g>분"</string>
@@ -3466,10 +3478,10 @@
<string name="mode_wallpaper_summary" msgid="665480011615603784">"배경화면 밝기 필터링"</string>
<string name="mode_dark_theme_title" msgid="8099007897943513209">"어두운 테마 사용"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"어두운 테마 사용"</string>
- <string name="mode_dark_theme_summary" msgid="2808149708986602464">"어두운 배경으로 기기 테마를 전환하여 눈의 피로도를 줄이세요."</string>
+ <string name="mode_dark_theme_summary" msgid="2808149708986602464">"기기 테마를 어두운 배경으로 전환하여 눈의 피로도 줄이기"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{디스플레이 변경사항 없음}=1{{effect_1}}=2{{effect_1} 및 {effect_2}}=3{{effect_1}, {effect_2}, {effect_3}}other{{effect_1}, {effect_2} 외 #개}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"모든 알림 허용"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"사람, 앱, 소리 예외"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"사람, 앱, 소리에 대한 필터링 없음"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"필터링한 알림에 대한 표시 옵션"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"방해 금지 모드 사용 시"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"알림 소리 차단"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"짧은 시간 내에 많은 알림을 받으면 최대 2분간 기기에서 볼륨을 낮추고 알림을 최소화합니다. 통화, 알람, 우선순위 대화는 영향을 받지 않습니다. \n\n쿨다운 중에 받은 알림은 화면 상단에서 아래로 당겨서 확인할 수 있습니다."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"직장 프로필에 적용"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"직장 프로필 앱에 적용"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR 도우미 서비스"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"설치된 앱 중에서 VR 도우미 서비스로 실행되도록 요청한 앱이 없습니다."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR 서비스가 <xliff:g id="SERVICE">%1$s</xliff:g>에 액세스하도록 허용하시겠습니까?"</string>
@@ -3763,7 +3785,7 @@
<string name="notification_channels_other" msgid="18159805343647908">"기타"</string>
<string name="no_channels" msgid="4716199078612071915">"이 앱에서 게시한 알림이 없음"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"사용하지 않는 카테고리 표시"</string>
- <string name="app_settings_link" msgid="6725453466705333311">"앱 내 추가 설정"</string>
+ <string name="app_settings_link" msgid="6725453466705333311">"앱 추가 설정"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"사용하지 않는 카테고리 표시"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"사용하지 않는 카테고리 숨기기"</string>
<string name="deleted_channels" msgid="8489800381509312964">"{count,plural, =1{카테고리 #개 삭제됨}other{카테고리 #개 삭제됨}}"</string>
@@ -3829,7 +3851,7 @@
<string name="zen_mode_calls_title" msgid="2078578043677037740">"전화"</string>
<string name="zen_mode_calls" msgid="7653245854493631095">"전화"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"전화"</string>
- <string name="zen_mode_calls_header" msgid="8379225445095856726">"예외 전화"</string>
+ <string name="zen_mode_calls_header" msgid="8379225445095856726">"예외가 허용되는 전화"</string>
<string name="zen_mode_calls_footer" msgid="2008079711083701243">"허용된 전화를 놓치지 않도록 기기가 벨소리로 설정되어 있는지 확인하세요."</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"예약된 시간(‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\')에 수신 전화가 차단됩니다. 설정을 조정하여 친구, 가족 또는 연락처에 등록된 다른 사용자의 연락을 허용할 수 있습니다."</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"별표 표시한 연락처"</string>
@@ -3838,7 +3860,7 @@
<string name="zen_mode_messages" msgid="7315084748885170585">"메시지"</string>
<string name="zen_mode_messages_list" msgid="5431014101342361882">"메시지"</string>
<string name="zen_mode_messages_title" msgid="1777598523485334405">"메시지"</string>
- <string name="zen_mode_messages_header" msgid="253721635061451577">"예외 메시지"</string>
+ <string name="zen_mode_messages_header" msgid="253721635061451577">"예외가 허용되는 메시지"</string>
<string name="zen_mode_messages_footer" msgid="6002468050854126331">"허용된 메시지를 놓치지 않도록 기기가 벨소리로 설정되어 있는지 확인하세요."</string>
<string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"예약된 시간(‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\')에 수신 메시지가 차단됩니다. 설정을 조정하여 친구, 가족 또는 연락처에 등록된 다른 사용자의 연락을 허용할 수 있습니다."</string>
<string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"모든 메시지 받기"</string>
@@ -3872,16 +3894,16 @@
<string name="zen_mode_events_list" msgid="7191316245742097229">"일정"</string>
<string name="zen_mode_events_list_first" msgid="7425369082835214361">"일정"</string>
<string name="zen_mode_apps_title" msgid="1691010857014041183">"앱"</string>
- <string name="zen_mode_apps_category" msgid="4082380323683889391">"예외 앱"</string>
+ <string name="zen_mode_apps_category" msgid="4082380323683889391">"예외가 허용되는 앱"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"선택한 앱"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"없음"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{예외 앱 없음}=1{{app_1} 예외}=2{{app_1} 및 {app_2} 예외}=3{{app_1}, {app_2}, {app_3} 예외}other{{app_1}, {app_2} 외 #가지 예외}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{예외 앱 없음}=1{{app_1} 앱만 예외}=2{{app_1} 및 {app_2} 앱만 예외}=3{{app_1}, {app_2}, {app_3} 앱만 예외}other{{app_1}, {app_2} 외 #개 앱만 예외}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g>(직장용)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"계산 중…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"앱 설정"</string>
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"앱에서 무시하도록 허용"</string>
- <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"예외 앱"</string>
+ <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"예외가 허용되는 앱"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"앱 추가 선택"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"선택된 앱 없음"</string>
<string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"예외 앱 없음"</string>
@@ -3889,13 +3911,13 @@
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"모든 알림"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"일부 알림"</string>
<string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"선택된 사람은 앱 알림이 사용 중지되어 있어도 나에게 연락할 수 있습니다."</string>
- <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{예외 앱 없음}=1{{app_1} 예외}=2{{app_1} 및 {app_2} 예외}=3{{app_1}, {app_2}, {app_3} 예외}other{{app_1}, {app_2} 외 #개 예외}}"</string>
+ <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{예외 앱 없음}=1{{app_1} 앱만 예외}=2{{app_1} 및 {app_2} 앱만 예외}=3{{app_1}, {app_2}, {app_3} 앱만 예외}other{{app_1}, {app_2} 외 #개 앱만 예외}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"앱"</string>
- <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"예외 알림"</string>
+ <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"예외가 허용되는 알림"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"모든 알림 허용"</string>
- <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{예외 소리 없음}=1{{sound_category_1} 예외}=2{{sound_category_1} 및 {sound_category_2} 예외}=3{{sound_category_1}, {sound_category_2}, {sound_category_3} 예외}other{{sound_category_1}, {sound_category_2} 외 #가지 예외}}"</string>
+ <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{예외 소리 없음}=1{{sound_category_1}만 예외}=2{{sound_category_1} 및 {sound_category_2}만 예외}=3{{sound_category_1}, {sound_category_2}, {sound_category_3}만 예외}other{{sound_category_1}, {sound_category_2} 외 #가지만 예외}}"</string>
<string name="zen_mode_sounds_none" msgid="6557474361948269420">"예외 소리 없음"</string>
- <string name="zen_mode_people_none" msgid="4613147461974255046">"예외 사용자 없음"</string>
+ <string name="zen_mode_people_none" msgid="4613147461974255046">"예외가 적용되는 사람 없음"</string>
<string name="zen_mode_people_some" msgid="9101872681298810281">"일부 사람만 예외"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"반복 발신자의 방해 허용"</string>
<string name="zen_mode_people_all" msgid="311036110283015205">"모든 사람 예외"</string>
@@ -3933,7 +3955,7 @@
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"이 모드를 사용 중지하면 다시 사용 설정할 수 없습니다."</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"사용 중지"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> 모드를 사용 설정하시겠습니까?"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"이 모드는 해당 설정에 따라 자동으로 사용 설정될 수 있습니다."</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"이 모드는 해당 설정에 따라 자동으로 시작될 수 있습니다."</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"사용"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"규칙적인 일정을 따르는 모드를 설정합니다."</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"캘린더 일정 및 초대 응답을 동기화하는 모드를 설정합니다."</string>
@@ -4155,7 +4177,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"이 앱에서 생성된 모든 방해 금지 모드 규칙이 삭제됩니다."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"<xliff:g id="APP">%1$s</xliff:g>에 대해 모드 액세스 권한을 허용하시겠습니까?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"앱에서 방해 금지 모드를 사용 또는 사용 중지하고, 모드를 관리 및 활성화하고, 관련 설정을 변경할 수 있습니다."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"모드에 대한 <xliff:g id="APP">%1$s</xliff:g>의 액세스 권한을 취소하시겠습니까?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"<xliff:g id="APP">%1$s</xliff:g> 앱의 모드 액세스 권한을 취소하시겠습니까?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"이 앱에서 생성된 모든 모드가 삭제됩니다."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"최적화하지 않음"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"최적화"</string>
@@ -4422,7 +4444,7 @@
<string name="gesture_preference_title" msgid="8291899281322647187">"동작"</string>
<string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"빠르게 카메라 열기"</string>
<string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"카메라를 빨리 열려면 전원 버튼을 두 번 누릅니다. 어느 화면에서나 작동합니다."</string>
- <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"비틀어서 셀카용 카메라로 전환"</string>
+ <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"뒤집어서 셀카용 카메라로 전환"</string>
<string name="double_twist_for_camera_mode_summary" msgid="592503740044744951"></string>
<string name="system_navigation_title" msgid="4890381153527184636">"탐색 모드"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"2버튼 탐색"</string>
@@ -5049,9 +5071,9 @@
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"잠금 화면에서 사용"</string>
<string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"기기 제어 사용"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"사용하려면 먼저 \'기기 제어 표시\'를 켜세요."</string>
- <string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"시계 크기가 잠금 화면 콘텐츠에 따라 변경됩니다."</string>
+ <string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"잠금 화면 콘텐츠에 따라 시계 크기 변경"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"동적 시계"</string>
- <string name="lockscreen_quick_affordances_title" msgid="8615741551327565793">"단축키"</string>
+ <string name="lockscreen_quick_affordances_title" msgid="8615741551327565793">"바로가기"</string>
<plurals name="lockscreen_quick_affordances_summary" formatted="false" msgid="4225396036524703997">
<item quantity="other"><xliff:g id="FIRST_1">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g></item>
<item quantity="one"><xliff:g id="FIRST_0">%1$s</xliff:g></item>
@@ -5182,7 +5204,7 @@
<string name="all_apps" msgid="3054120149509114789">"모든 앱"</string>
<string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"허용 안함"</string>
<string name="uwb_settings_title" msgid="8578498712312002231">"초광대역(UWB)"</string>
- <string name="uwb_settings_summary" msgid="3074271396764672268">"UWB를 지원하는 근처 기기의 상대적인 위치를 파악할 수 있도록 돕습니다."</string>
+ <string name="uwb_settings_summary" msgid="3074271396764672268">"UWB를 지원하는 주변 기기의 상대적인 위치를 파악하도록 돕습니다."</string>
<string name="uwb_settings_summary_airplane_mode" msgid="1328864888135086484">"UWB를 사용하려면 비행기 모드를 사용 중지하세요."</string>
<string name="uwb_settings_summary_no_uwb_regulatory" msgid="3465456428217979428">"현재 위치에서는 UWB를 사용할 수 없습니다."</string>
<string name="thread_network_settings_title" msgid="4212301030523859220">"스레드"</string>
@@ -5271,7 +5293,7 @@
<string name="aspect_ratio_summary" msgid="4056406351663726494">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 맞지 않게 만들어졌다면 새로운 가로세로 비율로 이 앱을 표시해 보세요."</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 맞지 않게 만들어졌다면 새로운 가로세로 비율로 이 앱을 표시해 보세요. 일부 앱은 특정 가로세로 비율에 최적화되어 있지 않을 수 있습니다."</string>
<string name="aspect_ratio_summary_text" msgid="4737461467467220325">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 맞지 않게 만들어졌다면 새로운 가로세로 비율로 앱을 표시해 보세요."</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 맞지 않게 만들어졌다면 새로운 가로세로 비율로 앱을 표시해 보세요. 일부 앱은 특정 가로세로 비율에 최적화되어 있지 않을 수 있습니다."</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"앱 크기가 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 맞지 않다면 새로운 가로세로 비율로 변경해 보세요. 일부 앱은 특정 가로세로 비율에 최적화되어 있지 않을 수 있습니다."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"추천 앱"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"변경된 앱"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"앱 기본값"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"스트림 듣기"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"오디오 스트림 QR 코드를 스캔하여 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 기기로 들으세요."</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"공유 중에는 비밀번호를 수정할 수 없습니다. 비밀번호를 변경하려면 먼저 오디오 공유를 사용 중지하세요."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"비밀번호는 4~16자(영문 기준)여야 하며 문자, 숫자, 기호만 사용해야 합니다."</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR 코드 스캐너"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"도움이 필요하신가요?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"설정 검색"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"기기만"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"새 연락처는 계정과 동기화되지 않습니다."</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"연락처가 기기에 저장되고 기본적으로 계정과 동기화됩니다."</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"기본 설정 없음"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"기본 계정을 설정하는 중에 오류가 발생했습니다."</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"기본 설정 없음"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"기기만"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"계정을 추가하여 시작하세요."</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"서클 투 서치"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"화면의 콘텐츠를 사용해 검색하려면 홈 버튼 또는 탐색 핸들을 길게 터치합니다."</string>
</resources>
diff --git a/res/values-ky/arrays.xml b/res/values-ky/arrays.xml
index 4288f15..7514614 100644
--- a/res/values-ky/arrays.xml
+++ b/res/values-ky/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Портфель"</item>
+ <item msgid="184985872234062767">"Классикалык имарат"</item>
+ <item msgid="9189550412466785530">"Көп кабаттуу үй"</item>
+ <item msgid="2142527562511049422">"Кеп булутчасы"</item>
+ <item msgid="2548100558260478605">"Адамдардын тобу"</item>
+ <item msgid="2270003903304578284">"Электр лампасы"</item>
+ <item msgid="4793496619091161864">"Жылнаама"</item>
+ <item msgid="5673625795644364100">"Тынчымды алба"</item>
+ <item msgid="1423820834865831361">"Чуркап бараткан киши"</item>
+ <item msgid="2037298830718732608">"Гольф"</item>
+ <item msgid="2197835014443491074">"Спортзалдагы гантель"</item>
+ <item msgid="2730180105015616518">"Сууда сүзүү"</item>
+ <item msgid="2666922823253345958">"Сейилдеп бараткан киши"</item>
+ <item msgid="8234880356472211396">"Топ ыргытып жаткан киши"</item>
+ <item msgid="4642980625253001443">"Тээп жаткан киши"</item>
+ <item msgid="4324795269518833500">"Оюн көзөмөлдөгүчү"</item>
+ <item msgid="7789966425125441125">"Сүрөтчүнүн түстөр топтому"</item>
+ <item msgid="663512680597461570">"Кар бүртүгү"</item>
+ <item msgid="7952183800501346803">"Кумдуу жээктеги чатыр"</item>
+ <item msgid="799139025758265891">"Устаканадагы аспаптар"</item>
+ <item msgid="8112685757657659269">"Пианино"</item>
+ <item msgid="3861584909935022342">"Тасма түрмөгү"</item>
+ <item msgid="5827426100157335512">"Аудиокитеп"</item>
+ <item msgid="8585828346253128384">"Лотос гүлү"</item>
+ <item msgid="8788370542815300188">"Адамдын акылы"</item>
+ <item msgid="7287354964767553293">"Гарнитура"</item>
+ <item msgid="2530059623783800987">"Сыналгы"</item>
+ <item msgid="5307182323469376758">"Поезд"</item>
+ <item msgid="4903790544026923026">"Унаа"</item>
+ <item msgid="5010405583912314582">"Вилка жана бычак"</item>
+ <item msgid="8939998598599064900">"Себет"</item>
+ <item msgid="3379605903308731893">"Бала"</item>
+ <item msgid="7808668968550293112">"Жаныбардын таманы"</item>
+ <item msgid="1000692647524056504">"Жылдызча бейджиги"</item>
+ <item msgid="8270261073421676502">"Эки киши"</item>
+ <item msgid="5767782819651505460">"Жылдыз"</item>
+ <item msgid="4368451291862729334">"Жүрөк"</item>
+ <item msgid="2613199102208419986">"Башкы бет"</item>
+ <item msgid="3022279986430275040">"Жарым ай"</item>
+ <item msgid="5421089790869483206">"Саат"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 1040688..f38817b 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Жаңы түзмөк кошуу"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Эртең автоматтык түрдө күйгүзүлсүн"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Оң кулакты жупташтыруу"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Сол кулакты жупташтыруу"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Экинчи кулагыңызды жупташтырыңыз"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE audio\'ну өчүрүү"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Эгер түзмөктө аппараттык мүмкүнчүлүктөр болсо, Bluetooth LE Audio функциясы өчүрүлөт."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio режими"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio Broadcast колдонуучу интерфейсинин алдын ала версиясын иштетүү"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"LE Audio Sharing колдонуучу интерфейсинин алдын ала версиясын, ошондой эле жеке аудиону бөлүшүү жана купуя кабарлоону иштетет"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Түзмөктүн чоо-жайынан LE Audio которгучун көрсөтүү"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio ак тизмесин кыйгап өтүү"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio тышкы түзмөгү ак тизменин талабына жооп берери ырасталбаса да, LE Audio\'ну демейки шартта колдонуңуз."</string>
@@ -180,7 +184,7 @@
<string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Бул колдонмонун тилин Параметрлерден тандоого болбойт."</string>
<string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Тил колдонмодо жеткиликтүү тилдерден айырмаланышы мүмкүн. Бул параметр айрым колдонмолор тарабынан колдоого алынбайт болушу мүмкүн."</string>
<string name="desc_app_locale_selection_supported" msgid="6744909281573556379">"Ар бир колдонмого өзүнчө тил тандаңыз."</string>
- <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"Керектүү тилдердин тизмесиндеги биринчи колдоого алынган тил түзмөктүн, колдонмолордун жана вебсайттардын тили болуп калат.\n\nКөпчүлүк колдонмолор күндөрдү, сандарды жана бирдиктерди форматтоо үчүн тандалган тилдин регионун да колдонушат. Регионду өзгөртүү үчүн тил кошуп, андан соң каалаган регионду тандаңыз."</string>
+ <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"Керектүү тилдердин тизмесиндеги биринчи тил түзмөктүн, колдонмолордун жана вебсайттардын тили болуп калат.\n\nКөпчүлүк колдонмолор күндөрдү, сандарды жана бирдиктерди сиз жашаган жер боюнча колдонушат. Чөлкөмдү өзгөртүү үчүн тил кошуп, андан соң каалаган чөлкөмдү тандаңыз."</string>
<string name="desc_notice_of_language_picker" msgid="3449290526457925447">"Ар бир колдонмого өзүнчө тил тандоо үчүн анын тилдер параметрлерине өтүңүз."</string>
<string name="desc_locale_helper_footer_general" msgid="6112153921151780303">"Колдонмонун тилдери жөнүндө кеңири маалымат"</string>
<string name="title_change_system_locale" msgid="8589844586256566951">"Системанын тилин %s тилине өзгөртөсүзбү?"</string>
@@ -247,11 +251,10 @@
<string name="roaming_disable" msgid="729512894708689604">"Роуминг учурунда маалыматтарды өткөрүүчү кызматтарга туташасыз"</string>
<string name="roaming_warning" msgid="7703647889040229013">"Роуминг акысын төлөп калышыңыз мүмкүн."</string>
<string name="date_time_auto" msgid="1759599045100040686">"Күн менен убакытты автоматтык түрдө аныктоо"</string>
- <string name="date_time_auto_summary" msgid="8294938565417729698">"Тармак жана зымсыз сигналдар аркылуу автоматтык түрдө орнотуу"</string>
+ <string name="date_time_auto_summary" msgid="8294938565417729698">"Тармак жана зымсыз сигналдар аркылуу автоматтык түрдө коюлат"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Убакыт алкагын автоматтык түрдө аныктоо"</string>
- <string name="zone_auto_title_summary" msgid="6540356783943375071">"Жаныңыздагы мобилдик тармактардын негизинде автоматтык түрдө орнотуу"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="zone_auto_title_summary" msgid="6540356783943375071">"Жаныңыздагы мобилдик тармактарга жараша автоматтык түрдө коюлат"</string>
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Түзмөктүн жайгашкан жерине жараша автоматтык түрдө коюлат"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Демейки жергиликтүү форматты колдонуу"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 сааттык форматты колдонуу"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Убакыт"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Манжаңызды көтөрүп, кайра сенсорго тийгизиңиз"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Манжа изинин сенсорун колдонууга болбойт"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Тейлөө кызматына кайрылыңыз."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Өчүрүлгөн экран, Манжа изи менен ачуу"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Экран өчүп турса да, Манжа изи менен ачуу функциясын колдонуу"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Өчүрүлгөн экран, кулпуну ачуу"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Кошумча коопсуздук параметрлери"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Жумуш профилин кулпулоо, шифрлөө жана башкалар"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифрлөө, аккаунтка байланыштуу нерселер жана башкалар"</string>
@@ -563,7 +569,7 @@
<string name="work_profile_category_header" msgid="85707750968948517">"Жумуш профили"</string>
<string name="private_space_title" msgid="1752064212078238723">"Жеке мейкиндик"</string>
<string name="private_space_summary" msgid="2274405892301976238">"Жеке колдонмолорду кулпулап жана жашырып коюңуз"</string>
- <string name="private_space_description" msgid="4059594203775816136">"Жеке колдонмолорду жашырып же кулпулай ала турган өзүнчө мейкиндикте сактаңыз"</string>
+ <string name="private_space_description" msgid="4059594203775816136">"Жеке колдонмолорду жашырылуучу же кулпулануучу өзүнчө мейкиндикте сактаңыз"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Жеке мейкиндикти кулпулоо"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Жеке мейкиндикти түзмөгүңүздүн кулпусу менен бекитип же башка кулпуну тандай аласыз"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"Түзмөктүн экранын кулпулоо ыкмасын колдонуу"</string>
@@ -626,12 +632,12 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Жеке колдонмолоруңуз үчүн мейкиндик түзүп, каалаган учурда жашырып же кулпулап коёсуз. Коопсуздук максатында өзүнчө Google аккаунтун колдонуңуз."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Ал кантип иштейт"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Жеке мейкиндик үчүн Google аккаунтун түзүү"</b>\n"Эгер атайын дайындалган аккаунтту түзсөңүз, жеке мейкиндиктен сырткары жайгашкан файлдар, сүрөттөр жана электрондук каттар шайкештирилбейт"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Кулпу коюңуз"</b>\n"Башкалар ачып албашы үчүн жеке мейкиндигиңизди кулпулап коюңуз"</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Колдонмолорду орнотуу"</b>\n"Жеке мейкиндикте купуя сактагыңыз келген колдонмолорду орнотуңуз"</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Кулпу коюңуз"</b>\n"Жеке мейкиндигиңизди башкалар ачып албагандай кылып кулпулап коюңуз"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Колдонмолорду орнотуңуз"</b>\n"Аларды өзүңүз гана колдоносуз"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Эскертүү"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Жеке мейкиндикти кулпулаганыңызда колдонмолор иштебей калат"</b>\n"Жеке мейкиндикти кулпулаганыңызда андагы колдонмолор иштебей калат жана алардан билдирмелерди албай каласыз"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Жеке мейкиндиктер фондук режимде иштеп же маанилүү билдирмелерди жөнөтүшү керек болгон колдонмолорго (мисалы, медициналык колдонмолор) ылайыксыз. Мындай мейкиндик кулпуланганда, фондогу аракеттер жана билдирмелер токтотулат.\n\nЖеке мейкиндик кулпуланганда андагы колдонмолор уруксаттарда, купуялык тактасында жана башка параметрлерде көрүнбөйт.\n\nЖеке мейкиндигиңизди жаңы түзмөккө жылдырууга болбойт. Башка түзмөктө колдонуу үчүн башка жеке мейкиндикти тууралашыңыз керек болот.\n\nЖеке мейкиндигиңизге түзмөгүңүзгө зыянкеч колдонмолорду орноткон же аны өз компьютерине кошуп алган адам кире алат."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Жеке мейкиндиктер фондук режимде иштеп же маанилүү билдирмелерди жөнөтүшү керек болгон колдонмолорго (мисалы, медициналык колдонмолор) ылайыксыз. Мындай мейкиндик кулпуланганда фондогу аракеттер жана билдирмелер токтотулат.\n\nЖеке мейкиндик кулпуланганда андагы колдонмолор уруксаттарда, купуялык тактасында жана башка параметрлерде көрүнбөйт.\n\nЖеке мейкиндикти жаңы түзмөктө калыбына келтирүүгө болбойт. Башка түзмөктө колдонуу үчүн башка мейкиндикти тууралашыңыз керек.\n\nЖеке мейкиндигиңизге түзмөгүңүзгө зыянкеч колдонмолорду орноткон же аны өз компьютерине кошуп алган адам кире алат."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Жеке мейкиндиктер фондук режимде иштеген же маанилүү билдирмелерди жөнөткөн колдонмолорго (мисалы, медициналык колдонмолор) жарабайт. Мындай мейкиндик кулпуланганда, фондогу аракеттер токтоп, билдирмелер келбей калат.\n\nОшондой эле андагы колдонмолор уруксаттар экранында, купуялык тактасында жана башка параметрлерде көрүнбөйт.\n\nЖеке мейкиндик жаңы түзмөктө калыбына келбейт, бирок жаңысын түзсөңүз болот.\n\nЖеке мейкиндигиңизге түзмөгүңүзгө кесепеттүү колдонмолорду орноткон же аны өз компьютерине кошуп алган адам кирип кетиши мүмкүн."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Жеке мейкиндиктер фондук режимде иштеген же маанилүү билдирмелерди жөнөткөн колдонмолорго (мисалы, медициналык колдонмолор) жарабайт. Мындай мейкиндик кулпуланганда, фондогу аракеттер токтоп, билдирмелер келбей калат.\n\nОшондой эле андагы колдонмолор уруксаттар экранында, купуялык тактасында жана башка параметрлерде көрүнбөйт.\n\nЖеке мейкиндик жаңы түзмөктө калыбына келбейт, бирок жаңысын түзсөңүз болот.\n\nЖеке мейкиндигиңизге түзмөгүңүзгө кесепеттүү колдонмолорду орноткон же аны өз компьютерине кошуп алган адам кирип кетиши мүмкүн."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Жеке мейкиндик тууралуу кеңири маалымат"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Буга аз эле убакыт кетет"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Жеке мейкиндик туураланууда…"</string>
@@ -1646,7 +1652,7 @@
<string name="location_time_zone_detection_not_applicable" msgid="6757964612836952714">"Убакыт алкагын жайгашкан жер аркылуу аныктоо өчүрүлгөн"</string>
<string name="location_time_zone_detection_not_supported" msgid="3251181656388306501">"Убакыт алкагын жайгашкан жер аркылуу аныктоо колдоого алынбайт"</string>
<string name="location_time_zone_detection_not_allowed" msgid="8264525161514617051">"Убакыт алкагын жайгашкан жер аркылуу аныктоо параметрлерин өзгөртүүгө болбойт"</string>
- <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Эгер түзмөгүңүздүн турган жери жеткиликтүү болсо, убакыт алкагы анын негизинде орнотулушу мүмкүн"</string>
+ <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Түзмөгүңүздүн жайгашкан жери аныкталса, убакыт алкагы ошого жараша коюлушу мүмкүн"</string>
<string name="about_settings_summary" msgid="4831942939227432513">"Юридикалык маалыматты, абалын, программа версиясын көрүү"</string>
<string name="legal_information" msgid="7509900979811934843">"Юридикалык маалымат"</string>
<string name="manual" msgid="3651593989906084868">"Кол менен"</string>
@@ -1784,7 +1790,7 @@
<string name="advanced_settings_summary" msgid="1823765348195530035">"Көбүрөөк тууралоо опцияларын көрсөтүү"</string>
<string name="application_info_label" msgid="1015706497694165866">"Колдонмо тууралуу"</string>
<string name="storage_label" msgid="2522307545547515733">"Сактагыч"</string>
- <string name="auto_launch_label" msgid="4069860409309364872">"Демейки шарт боюнча ачуу"</string>
+ <string name="auto_launch_label" msgid="4069860409309364872">"Демейки шартта ачуу"</string>
<string name="auto_launch_label_generic" msgid="5033137408273064599">"Демейки"</string>
<string name="screen_compatibility_label" msgid="7549658546078613431">"Экрандын шайкештиги"</string>
<string name="permissions_label" msgid="1708927634370314404">"Уруксаттар"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Бир эле баскычтын удаа басылганы этибарга алынбайт"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Удаа басылган баскычтардын мааниси"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Баскычтын удаа басылганы этибарга алынбаган убакыттын узундугун тандаңыз"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 сек."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 сек."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 сек."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 сек."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 сек."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 сек."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Жеке"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"жеке маани"</string>
<string name="slow_keys" msgid="2891452895499690837">"Жай баскычтар"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Басылган баскыч качан эске алынарын тууралайт"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Жабышма баскычтар"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Ыкчам баскычтарды чогуу басып туруунун ордуна бирден басасыз"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Чычкандын баскычтары"</string>
- <string name="mouse_keys_summary" msgid="7030731235143286467">"Курсорду баскычтоптон көзөмөлдөңүз"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Чычкандын баскычтарын колдонуу"</string>
+ <string name="mouse_keys_summary" msgid="7030731235143286467">"Курсорду баскычтоп менен башкарасыз"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Чычкан менен артка сыдыруу"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Баракты ылдый жылдыруу үчүн экранды өйдө сыдырыңыз"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Сол жана оң баскычтарды алмаштырыңыз"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Чычкандын сол баскычын оң баскыч катары колдонуңуз"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> үчүн чычкандын баскычтары"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Чычкандын курсорун жылдыруу үчүн <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> баскычтарын колдонуңуз"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Чычкандын негизги баскычын басуу үчүн <xliff:g id="CLICK_LABEL">%s</xliff:g> баскычын колдонуңуз"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Чычкандын негизги баскычын коё бербей басып туруу үчүн <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> баскычын колдонуңуз"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Чычкандын негизги баскычын коё берүү үчүн <xliff:g id="RELEASE_LABEL">%s</xliff:g> баскычын колдонуңуз"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Сыдыруу режимин өчүрүү/күйгүзүү үчүн <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> баскычын колдонуңуз. Бул режимде <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> баскычтары менен экранды өйдө, ылдый, солго же оңго сыдырууга болот"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Чычкандын кошумча баскычын басуу үчүн <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> баскычын колдонуңуз"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Ыкчам баскычтар"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Ыкчам баскычтардын тизмеси көрүнөт"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Жумуш профилинин баскычтоптору жана куралдары"</string>
@@ -1988,7 +2004,7 @@
<string name="pointer_fill_style_pink_button" msgid="4106218142489635673">"Толтуруу стилин күлгүнгө өзгөртүү"</string>
<string name="pointer_fill_style_blue_button" msgid="5594958078854032785">"Толтуруу стилин көккө өзгөртүү"</string>
<string name="pointer_fill_style_purple_button" msgid="3713175300139801778">"Толтуруу стилин кызгылт көгүш түскө өзгөртүү"</string>
- <string name="pointer_stroke_style" msgid="139962661485972329">"Көрсөткүчтүн стилинин түсү"</string>
+ <string name="pointer_stroke_style" msgid="139962661485972329">"Курсордун стилинин түсү"</string>
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"Ак"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"Кара"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"Жок"</string>
@@ -2031,24 +2047,20 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> үчүн жаңы ачкыч тандаңыз:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Аппараттык баскычтоптогу атайын мүмкүнчүлүктөр"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Жабышма баскычтар, Кайтаруу баскычтары, Чычкандын баскычтары"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Баскычтарды кайталоо"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Кайталанганга чейинки кечигүү"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Кайталоо ылдамдыгы"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Символду кайталап терүү үчүн баскычты коё бербей басып туруңуз"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> калыбы"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Демейки"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автоматтык: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Колдонуучу тандаган: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Кеп"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Көрсөткүчтүн ылдамдыгы"</string>
- <string name="pointer_scale" msgid="4941564570571663964">"Көрсөткүчтүн өлчөмү"</string>
- <string name="pointer_scale_decrease_content_description" msgid="4479646756230008068">"Көрсөткүчтүн өлчөмүн кичирейтүү"</string>
- <string name="pointer_scale_increase_content_description" msgid="1049632123702664450">"Көрсөткүчтүн өлчөмүн чоңойтуу"</string>
- <string name="pointer_scale_keywords" msgid="8939432511048322072">"масштаб, өлчөм, көрсөткүчтүн масштабы, көрсөткүчтүн өлчөмү, чычкандын чоң көрсөткүчү, чоң, байкаларлык"</string>
+ <string name="pointer_scale" msgid="4941564570571663964">"Курсордун өлчөмү"</string>
+ <string name="pointer_scale_decrease_content_description" msgid="4479646756230008068">"Курсордун өлчөмүн кичирейтүү"</string>
+ <string name="pointer_scale_increase_content_description" msgid="1049632123702664450">"Курсордун өлчөмүн чоңойтуу"</string>
+ <string name="pointer_scale_keywords" msgid="8939432511048322072">"масштаб, өлчөм, курсордун масштабы, курсордун өлчөмү, чычкандын чоң курсору, чоң, байкаларлык"</string>
<string name="game_controller_settings_category" msgid="8557472715034961918">"Оюн контроллери"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Дирилдөөнү багыттоо"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Туташкан учурларда, дирилдөөнү оюн көзөмөлдөгүчүнө жөнөтүү"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Кубат сарпталышын тууралоо"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Камтылган топтомдор"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Колдонмолор туура иштеп жатат"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Түзмөгүңүздүн батареясын алмаштырыңыз"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Батареянын сыйымдуулугу жана кубаттоо майнаптуулугу төмөндөдү. Батареяны алмаштыруу сунушталат."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Батареянын деңгээли төмөн"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Батареяны көбүрөөк убакытка жеткирүү үчүн Батареяны үнөмдөгүч режимин күйгүзүңүз"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Батареяны көбүрөөк убакытка жеткирүү"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Бул VPN ажыратылсынбы?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Ажыратуу"</string>
<string name="vpn_version" msgid="6344167191984400976">"Версия"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g> версиясы"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN профили унутулсун"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Учурдагы VPN алмаштырылсынбы?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Туруктуу VPN\'ди жөндөйсүзбү?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Иш күндөрү саат 09:00 баштап 17:00 чейин\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Жылнаамадагы иш-чаралар"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} иштеп жатат}=2{{mode_1} жана {mode_2} иштеп жатат}=3{{mode_1}, {mode_2} жана {mode_3} иштеп жатат}other{{mode_1}, {mode_2} жана дагы # иштеп жатат}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режимди автоматтык түрдө күйгүзүүгө болот}other{# режимди автоматтык түрдө күйгүзүүгө болот}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Тынчымды алба}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"КҮЙҮК"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Туураланган эмес"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Өчүк"</string>
@@ -3691,7 +3704,7 @@
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"\"Тынчымды алба\" режимин күйгүзүп же өчүрүп, анын параметрлерин өзгөртө алат."</string>
<string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Ал Режимдерди тескеп жана иштетип, тиешелүү параметрлерди өзгөртө алат."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Эгер <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> колдонмосунун билдирмелерин алуудан баш тартсаңыз, \"Тынчымды алба\" режиминин параметрлерин өзгөртө албай каласыз."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Эгер <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> үчүн билдирмелерди колдонуу мүмкүндүгүн өчүрсөңүз, Режимдерди колдонуу мүмкүндүгү да өчүрүлүшү мүмкүн."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Эгер <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> колдонмосунун билдирмелерин өчүрсөңүз, Режимдерди да колдоно албай калышыңыз мүмкүн."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Өчүрүү"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Жок"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Анык убакыт"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Кыска убакытта көп билдирме келгенде, түзмөгүңүздүн үнү 2 мүнөткө басаңдап, алардын келгенин кабарлаган билдирүүлөр да азаят. Бул режимдин чалууларга, ойготкучтарга жана маанилүү жазышууларга таасири тийбейт. \n\nУшул 2 мүнөттүн ичинде келген билдирмелерди экранды өйдө жагынан ылдый сүрүп көрсөңүз болот."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Жумуш профилдерине колдонуу"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Жумуш профилинин колдонмолоруна колдоносуз"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR көмөкчү кызматтары"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Орнотулган колдонмолор көмөкчү VR кызматы катары иштөөгө уруксат сураган жок."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR кызматына <xliff:g id="SERVICE">%1$s</xliff:g> кызматын жеткиликтүү кыласызбы?"</string>
@@ -3990,11 +4013,11 @@
<string name="memtag_learn_more" msgid="1596145970669119776">"Өркүндөтүлгөн эстутумду коргоо жөнүндө толук маалымат алыңыз."</string>
<string name="opening_paragraph_delete_profile_unknown_company" msgid="2951348192319498135">"Бул жумуш профилин төмөнкү башкарат:"</string>
<string name="managing_admin" msgid="2633920317425356619">"Төмөнкү башкарат <xliff:g id="ADMIN_APP_LABEL">%s</xliff:g>"</string>
- <string name="launch_by_default" msgid="892824422067985734">"Демейки шарт боюнча ачуу"</string>
+ <string name="launch_by_default" msgid="892824422067985734">"Демейки шартта ачуу"</string>
<string name="app_launch_open_domain_urls_title" msgid="4805388403977096285">"Колдоого алынган шилтемелерди ачуу"</string>
<string name="app_launch_open_in_app" msgid="2208182888681699512">"Колдонмодо"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"Серепчиңизде"</string>
- <string name="app_launch_top_intro_message" msgid="9037324384325518290">"Колдонмодо шилтемелер кантип ачылышы керек экенин тандаңыз"</string>
+ <string name="app_launch_top_intro_message" msgid="9037324384325518290">"Колдонмодо шилтемелер кантип ачыларын тандаңыз"</string>
<string name="app_launch_links_category" msgid="2380467163878760037">"Ушул колдонмодо ачылган шилтемелер"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"Колдоого алынган шилтемелер"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"Башка демейки жөндөөлөр"</string>
@@ -4033,7 +4056,7 @@
<string name="unused_apps_switch" msgid="7595419855882245772">"Колдонулбаган колдонмолордун ишин тындыруу"</string>
<string name="unused_apps_switch_summary" msgid="2171098908014596802">"Уруксаттар өчүрүлүп, убактылуу файлдар тазаланып, билдирмелер келбей калат"</string>
<string name="unused_apps_switch_v2" msgid="7464060328451454469">"Колдонмо колдонулбаса, аны тескеңиз"</string>
- <string name="unused_apps_switch_summary_v2" msgid="3182898279622036805">"Уруксаттарды алып салып, убактылуу файлдарды жок кылып, билдирмелерди токтотуңуз жана колдонмону архивдеңиз"</string>
+ <string name="unused_apps_switch_summary_v2" msgid="3182898279622036805">"Уруксаттарды алып салып, убактылуу файлдарды жок кылып, билдирмелерди токтотуп, колдонмону архивдейсиз"</string>
<string name="filter_all_apps" msgid="6645539744080251371">"Бардык колдонмолор"</string>
<string name="filter_enabled_apps" msgid="8868356616126759124">"Орнотулган колдонмолор"</string>
<string name="filter_instant_apps" msgid="2292108467020380068">"Ыкчам ачылуучу колдонмолор"</string>
@@ -4155,7 +4178,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Бул колдонмо түзгөн \"Тынчымды алба\" эрежелеринин баары өчөт."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"<xliff:g id="APP">%1$s</xliff:g> колдонмосуна Режимдерди колдонууга уруксат бересизби?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Бул колдонмо \"Тынчымды алба\" режимин күйгүзүп/өчүрүп, Режимдерди тескеп жана иштетип, тийиштүү параметрлерди өзгөртө алат."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"<xliff:g id="APP">%1$s</xliff:g> үчүн Режимдерге өтүү мүмкүнчүлүгү жоюлсунбу?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"<xliff:g id="APP">%1$s</xliff:g> колдонмосунун режимдерин өчүрөсүзбү?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Бул колдонмо түзгөн бардык режимдер өчүрүлөт."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Үнөмдөлбөсүн"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Үнөмдөө"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Агымды угуу"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүндө угуу үчүн аудио агымдын QR кодун скандаңыз"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Чогуу угуп жатканда сырсөздү өзгөртө албайсыз. Адегенде чогуу угууну өчүрүңүз."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Сырсөзүңүз 4-16 символдон туруп, анда тамгалар, сандар жана белгилер гана болушу керек"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR кодунун сканери"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Жардам керекпи?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Издөө параметрлери"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Түзмөк аркылуу гана"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Жаңы байланыштар аккаунтта шайкештирилбейт"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Байланыштар түзмөгүңүздө сакталып, аккаунтуңузда демейки шартта шайкештирилет"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Демейки параметрлер коюлган жок"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Демейки аккаунтту орнотуп жатканда ката кетти"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Демейки аккаунт орнотулган жок"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Түзмөктө гана"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Баштоо үчүн аккаунт кошуңуз"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Тегеректеп издөө"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Экрандагы нерселер боюнча издөө үчүн Башкы бет баскычын же өтүү тилкесин коё бербей басып туруңуз."</string>
</resources>
diff --git a/res/values-lo/arrays.xml b/res/values-lo/arrays.xml
index eaf83c8..d4b312d 100644
--- a/res/values-lo/arrays.xml
+++ b/res/values-lo/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ກະເປົາເອກະສານ"</item>
+ <item msgid="184985872234062767">"ອາຄານຄລາດສິກ"</item>
+ <item msgid="9189550412466785530">"ຕຶກອະພາດເມັນ"</item>
+ <item msgid="2142527562511049422">"ຟອງຄຳເວົ້າ"</item>
+ <item msgid="2548100558260478605">"ກຸ່ມຄົນ"</item>
+ <item msgid="2270003903304578284">"ຫຼອດໄຟ"</item>
+ <item msgid="4793496619091161864">"ປະຕິທິນ"</item>
+ <item msgid="5673625795644364100">"ຫ້າມລົບກວນ"</item>
+ <item msgid="1423820834865831361">"ຄົນແລ່ນ"</item>
+ <item msgid="2037298830718732608">"ກັອບ"</item>
+ <item msgid="2197835014443491074">"ດຳເບວສຳລັບຢີມ"</item>
+ <item msgid="2730180105015616518">"ການລອຍນ້ຳ"</item>
+ <item msgid="2666922823253345958">"ຄົນຍ່າງປ່າ"</item>
+ <item msgid="8234880356472211396">"ຄົນໂຍນບານ"</item>
+ <item msgid="4642980625253001443">"ຄົນເຮັດທ່າເຕະ"</item>
+ <item msgid="4324795269518833500">"ມືເກມ"</item>
+ <item msgid="7789966425125441125">"ຖາດສີຂອງສິນລະປິນ"</item>
+ <item msgid="663512680597461570">"ເກັດຫິມະ"</item>
+ <item msgid="7952183800501346803">"ຄັນຮົ່ມຫາດຊາຍ"</item>
+ <item msgid="799139025758265891">"ເຄື່ອງມືເວີກຊັອບ"</item>
+ <item msgid="8112685757657659269">"ເປຍໂນ"</item>
+ <item msgid="3861584909935022342">"ມ້ວນຟີມ"</item>
+ <item msgid="5827426100157335512">"ປຶ້ມ"</item>
+ <item msgid="8585828346253128384">"ດອກບົວ"</item>
+ <item msgid="8788370542815300188">"ຈິດໃຈຄົນ"</item>
+ <item msgid="7287354964767553293">"ຫູຟັງ"</item>
+ <item msgid="2530059623783800987">"ໂທລະທັດ"</item>
+ <item msgid="5307182323469376758">"ລົດໄຟ"</item>
+ <item msgid="4903790544026923026">"ລົດ"</item>
+ <item msgid="5010405583912314582">"ສ້ອມ ແລະ ມີດ"</item>
+ <item msgid="8939998598599064900">"ກະຕ່າຊື້ເຄື່ອງ"</item>
+ <item msgid="3379605903308731893">"ເດັກນ້ອຍ"</item>
+ <item msgid="7808668968550293112">"ຕີນສັດ"</item>
+ <item msgid="1000692647524056504">"ປ້າຍດາວ"</item>
+ <item msgid="8270261073421676502">"ຄົນ 2 ຄົນ"</item>
+ <item msgid="5767782819651505460">"ດາວ"</item>
+ <item msgid="4368451291862729334">"ຫົວໃຈ"</item>
+ <item msgid="2613199102208419986">"ເຮືອນ"</item>
+ <item msgid="3022279986430275040">"ເດືອນເຄິ່ງດວງ"</item>
+ <item msgid="5421089790869483206">"ໂມງ"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 78d00ed..937ee35 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"ຈັບຄູ່ອຸປະກອນໃໝ່"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ເປີດໂດຍອັດຕະໂນມັດໃນມື້ອື່ນ"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"ຫາກທ່ານປິດ Bluetooth, ອຸປະກອນຈະເປີດອີກຄັ້ງໃນມື້ຕໍ່ໄປ"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ຈັບຄູ່ຫູຂວາ"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ຈັບຄູ່ຫູຊ້າຍ"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ຈັບຄູ່ຫູອີກຂ້າງຂອງທ່ານ"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ປິດການນຳໃຊ້ສຽງ Bluetooth LE"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ປິດການນຳໃຊ້ຄຸນສົມບັດສຽງ Bluetooth LE ຫາກອຸປະກອນຮອງຮັບຄວາມສາມາດຂອງຮາດແວສຽງ LE."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ໂໝດສຽງ Bluetooth LE"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ເປີດການນຳໃຊ້ຕົວຢ່າງ Bluetooth LE Audio Broadcast UI"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"ເປີດການນຳໃຊ້ຕົວຢ່າງ LE Audio Sharing UI ໂດຍຮວມເອົາການແບ່ງປັນສຽງສ່ວນຕົວ ແລະ ການອອກອາກາດສ່ວນຕົວ"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ສະແດງການສະຫຼັບສຽງ LE ໃນລາຍລະອຽດອຸປະກອນ"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ຂ້າມລາຍຊື່ອະນຸຍາດສຽງ Bluetooth LE"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ໃຊ້ສຽງ LE ໂດຍຄ່າເລີ່ມຕົ້ນເຖິງວ່າອຸປະກອນຕໍ່ພ່ວງສຽງ LE ຈະບໍ່ໄດ້ຮັບການຢັ້ງຢືນວ່າເປັນໄປຕາມເກນລາຍຊື່ອະນຸຍາດກໍຕາມ."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ຕັ້ງຄ່າອັດຕະໂນມັດໂດຍໃຊ້ເຄືອຂ່າຍ ແລະ ສັນຍານໄຮ້ສາຍຂອງທ່ານ"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ເຂດເວລາອັດຕະໂນມັດ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ຕັ້ງຄ່າອັດຕະໂນມັດໂດຍອີງຕາມເຄືອຂ່າຍມືຖືທີ່ຢູ່ໃກ້ກັບທ່ານ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ຕັ້ງຄ່າອັດຕະໂນມັດໂດຍໃຊ້ສະຖານທີ່ອຸປະກອນຂອງທ່ານ, ຫາກມີ"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ໃຊ້ຄ່າເລີ່ມຕົ້ນຂອງສະຖານທີ່"</string>
<string name="date_time_24hour" msgid="286679379105653406">"ໃຊ້ຮູບແບບ 24 ຊົ່ວໂມງ"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"ເວລາ"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ຍົກນິ້ວມືອອກ, ຈາກນັ້ນ ສຳຜັດເຊັນເຊີອີກຄັ້ງ"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ບໍ່ສາມາດໃຊ້ເຊັນເຊີລາຍນິ້ວມືໄດ້"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ກະລຸນາໄປຫາຜູ້ໃຫ້ບໍລິການສ້ອມແປງ."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"ປົດລັອກດ້ວຍລາຍນິ້ວມືເມື່ອໜ້າຈໍປິດ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ໃຊ້ການປົດລັອກດ້ວຍລາຍນິ້ວມືເຖິງແມ່ນວ່າໜ້າຈໍຈະປິດຢູ່"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"ປິດໜ້າຈໍ, ປົດລັອກ"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"ການຕັ້ງຄ່າຄວາມປອດໄພເພີ່ມເຕີມ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ລັອກໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ, ການເຂົ້າລະຫັດ ແລະ ອື່ນໆ"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ການເຂົ້າລະຫັດ, ຂໍ້ມູນການເຂົ້າສູ່ລະບົບ ແລະ ອື່ນໆ"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ແປ້ນພິມຈະບໍ່ສົນໃຈການກົດປຸ່ມຊ້ຳໆໄວໆຂອງປຸ່ມດຽວກັນ"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"ເກນການຍົກເລີກການກົດປຸ່ມຊໍ້າໆ"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ເລືອກໄລຍະເວລາທີ່ແປ້ນພິມຂອງທ່ານບໍ່ສົນໃຈການກົດປຸ່ມຊໍ້າໆ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2ວິ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4ວິ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6ວິ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 ວິ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 ວິ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 ວິ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"ກຳນົດເອງ"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ຄ່າທີ່ກຳນົດເອງ"</string>
<string name="slow_keys" msgid="2891452895499690837">"ເພີ່ມໄລຍະເວລາໃນການກົດປຸ່ມ"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ປັບແກ້ເວລາທີ່ມັນໃຊ້ສໍາລັບການກົດປຸ່ມເພື່ອເປີດໃຊ້"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ປຸ່ມກົດຄ້າງ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ກົດເທື່ອລະປຸ່ມເພື່ອໃຊ້ທາງລັດແທນການກົດປຸ່ມຄ້າງໄວ້ຮ່ວມກັນ"</string>
<string name="mouse_keys" msgid="6237254627808525540">"ແປ້ນເມົ້າ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ໃຊ້ແປ້ນເມົ້າ"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ໃຊ້ແປ້ນພິມຂອງທ່ານເພື່ອຄວບຄຸມຕົວຊີ້"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"ການເລື່ອນເມົ້າຖອຍຫຼັງ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"ເລື່ອນຂຶ້ນເພື່ອຍ້າຍໜ້າລົງ"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ສະຫຼັບປຸ່ມຊ້າຍ ແລະ ຂວາ"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ໃຊ້ປຸ່ມເມົ້າເບື້ອງຊ້າຍເປັນປຸ່ມເບື້ອງຂວາຂອງທ່ານ"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"ແປ້ນເມົ້າສຳລັບ <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ໃຊ້ປຸ່ມ <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ເພື່ອຍ້າຍຕົວຊີ້ເມົ້າ"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ໃຊ້ປຸ່ມ <xliff:g id="CLICK_LABEL">%s</xliff:g> ເພື່ອຄລິກປຸ່ມຫຼັກຂອງເມົ້າ"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ໃຊ້ປຸ່ມ <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ເພື່ອກົດປຸ່ມຫຼັກຂອງເມົ້າຄ້າງໄວ້"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ໃຊ້ປຸ່ມ <xliff:g id="RELEASE_LABEL">%s</xliff:g> ເພື່ອປ່ອຍປຸ່ມຫຼັກຂອງເມົ້າ"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"ໃຊ້ປຸ່ມ <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ເພື່ອເປີດ/ປິດໂໝດເລື່ອນ. ເຊິ່ງຈະເຮັດໃຫ້ປຸ່ມ <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ເລື່ອນມຸມມອງຂຶ້ນເທິງ, ລົງລຸ່ມ, ໄປທາງຊ້າຍ ຫຼື ຂວາ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ໃຊ້ປຸ່ມ <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ເພື່ອຄລິກປຸ່ມສຳຮອງຂອງເມົ້າ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"ປຸ່ມລັດແປ້ນພິມ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ສະແດງລາຍຊື່ຂອງທາງລັດ"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"ແປ້ນພິມໂປຣໄຟລ໌ວຽກ ແລະ ເຄື່ອງມື"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"ເລືອກປຸ່ມໃໝ່ສຳລັບ <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ການຊ່ວຍເຂົ້າເຖິງແປ້ນພິມພາຍນອກ"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ປຸ່ມກົດຄ້າງ, ປຸ່ມຕີກັບ, ແປ້ນເມົ້າ"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"ປຸ່ມຊ້ຳ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ຄວາມຊັກຊ້າກ່ອນການກົດຊ້ຳ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ອັດຕາການກົດຊ້ຳ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ກົດປຸ່ມຄ້າງໄວ້ເພື່ອເຮັດຊ້ຳຕົວອັກສອນຂອງມັນຈົນກວ່າປຸ່ມຈະຖືກປ່ອຍ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"ໂຄງຮ່າງ <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ຄ່າເລີ່ມຕົ້ນ"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ອັດຕະໂນມັດ: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ປັບແຕ່ງການໃຊ້ພະລັງງານ"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ແພັກເກດທີ່ຮວມມານຳ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ແອັບຕ່າງໆກຳລັງເຮັດວຽກຕາມປົກກະຕິ"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ແນະນຳໃຫ້ປ່ຽນແບັດເຕີຣີ"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ຄວາມຈຸແບັດເຕີຣີ ແລະ ປະສິດທິພາບການສາກຫຼຸດລົງ ແລະ ຂໍແນະນຳໃຫ້ປ່ຽນແບັດເຕີຣີ."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ລະດັບແບັດເຕີຣີເຫຼືອໜ້ອຍ"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ທ່ານສາມາດເປີດໃຊ້ຕົວປະຢັດແບັດເຕີຣີເພື່ອຍືດອາຍຸແບັດເຕີຣີໄດ້"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ປັບປຸງອາຍຸແບັດເຕີຣີ"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ຕັດການເຊື່ອມຕໍ່ VPN ນີ້ບໍ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ຕັດການເຊື່ອມຕໍ່"</string>
<string name="vpn_version" msgid="6344167191984400976">"ເວີຊັນ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ເວີຊັນ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"ລືມ VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ຂຽນທັບ VPN ທີ່ມີຢູ່ກ່ອນແລ້ວຂອງທ່ານບໍ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Set always-on VPN?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"09:00 - 17:00 ໂມງ ຈັນຫາສຸກ\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"ນັດໝາຍປະຕິທິນ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ເຮັດວຽກຢູ່}=2{{mode_1} ແລະ {mode_2} ເຮັດວຽກຢູ່}=3{{mode_1}, {mode_2} ແລະ {mode_3} ເຮັດວຽກຢູ່}other{{mode_1}, {mode_2} ແລະ ອີກ # ໂໝດເຮັດວຽກຢູ່}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{ສາມາດເປີດໃຊ້ 1 ໂໝດໂດຍອັດຕະໂນມັດ}other{ສາມາດເປີດໃຊ້ # ໂໝດໂດຍອັດຕະໂນມັດ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ຫ້າມລົບກວນ}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ເປີດ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"ບໍ່ໄດ້ຕັ້ງຄ່າ"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ປິດການນຳໃຊ້ຢູ່"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"ເມື່ອທ່ານໄດ້ຮັບການແຈ້ງເຕືອນຈຳນວນຫຼາຍພາຍໃນໄລຍະເວລາສັ້ນໆ, ອຸປະກອນຂອງທ່ານຈະຫຼຸດລະດັບສຽງ ແລະ ຫຼຸດຈຳນວນແຈ້ງເຕືອນລົງເປັນເວລາສູງສຸດ 2 ນາທີ. ໂດຍທີ່ການໂທ, ໂມງປຸກ ແລະ ການສົນທະນາສຳຄັນຈະບໍ່ໄດ້ຮັບຜົນກະທົບ. \n\nການແຈ້ງເຕືອນທີ່ໄດ້ຮັບໃນລະຫວ່າງຄູດາວສາມາດເບິ່ງໄດ້ໂດຍການດຶງລົງຈາກທາງເທິງຂອງໜ້າຈໍ."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ນຳໃຊ້ກັບໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ໃຊ້ກັບແອັບໃນໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"ບໍລິການຕົວຊ່ວຍ VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ບໍ່ມີແອັບທີ່ຕິດຕັ້ງແລ້ວທີ່ຮ້ອງຂໍໃຫ້ໃຊ້ເປັນບໍລິການຕົວຊ່ວຍ VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"ອະນຸຍາດໃຫ້ເຂົ້າເຖິງບໍລິການ VR ສຳລັບ <xliff:g id="SERVICE">%1$s</xliff:g> ບໍ?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ຟັງສະຕຣີມ"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"ສະແກນລະຫັດ QR ການສະຕຣີມສຽງເພື່ອຟັງກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"ບໍ່ສາມາດແກ້ໄຂລະຫັດຜ່ານໃນລະຫວ່າງທີ່ແບ່ງປັນໄດ້. ເພື່ອປ່ຽນລະຫັດຜ່ານ, ທຳອິດໃຫ້ປິດການແບ່ງປັນສຽງ."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"ລະຫັດຜ່ານຂອງທ່ານຕ້ອງມີ 4-16 ຕົວອັກສອນ ແລະ ໃຊ້ຕົວອັກສອນ, ຕົວເລກ ແລະ ສັນຍາລັກເທົ່ານັ້ນ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"ຕົວສະແກນລະຫັດ QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"ຕ້ອງການຄວາມຊ່ວຍເຫຼືອບໍ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ຊອກຫາໃນການຕັ້ງຄ່າ"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"ອຸປະກອນເທົ່ານັ້ນ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"ລາຍຊື່ຜູ້ຕິດຕໍ່ໃໝ່ຈະບໍ່ຖືກຊິ້ງຂໍ້ມູນກັບບັນຊີ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ລາຍຊື່ຜູ້ຕິດຕໍ່ຈະຖືກບັນທຶກໄປໃສ່ອຸປະກອນ ແລະ ຊິ້ງຂໍ້ມູນໄປຫາບັນຊີຂອງທ່ານເປັນຄ່າເລີ່ມຕົ້ນ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ບໍ່ມີການຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ການຕັ້ງຄ່າບັນຊີເລີ່ມຕົ້ນຜິດພາດ"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ບໍ່ມີການຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"ອຸປະກອນເທົ່ານັ້ນ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ເພີ່ມບັນຊີເພື່ອເລີ່ມຕົ້ນ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ແຕ້ມວົງມົນເພື່ອຊອກຫາ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ແຕະປຸ່ມໜ້າທຳອິດ ຫຼື ດ້າມຈັບນຳທາງຄ້າງໄວ້ເພື່ອຊອກຫາໂດຍໃຊ້ເນື້ອຫາຢູ່ໜ້າຈໍຂອງທ່ານ."</string>
</resources>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index e12eb91..6566f11 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Portfelis"</item>
+ <item msgid="184985872234062767">"Klasikinis pastatas"</item>
+ <item msgid="9189550412466785530">"Daugiabutis namas"</item>
+ <item msgid="2142527562511049422">"Kalbos debesėlis"</item>
+ <item msgid="2548100558260478605">"Žmonių grupė"</item>
+ <item msgid="2270003903304578284">"Lemputė"</item>
+ <item msgid="4793496619091161864">"Kalendorius"</item>
+ <item msgid="5673625795644364100">"Netrukdymo režimas"</item>
+ <item msgid="1423820834865831361">"Bėgantis asmuo"</item>
+ <item msgid="2037298830718732608">"Golfas"</item>
+ <item msgid="2197835014443491074">"Sporto hanteliai"</item>
+ <item msgid="2730180105015616518">"Plaukimas"</item>
+ <item msgid="2666922823253345958">"Žygiuojantis asmuo"</item>
+ <item msgid="8234880356472211396">"Kamuolį metantis asmuo"</item>
+ <item msgid="4642980625253001443">"Spiriantis asmuo"</item>
+ <item msgid="4324795269518833500">"Žaidimų valdiklis"</item>
+ <item msgid="7789966425125441125">"Atlikėjo spalvų gama"</item>
+ <item msgid="663512680597461570">"Snaigė"</item>
+ <item msgid="7952183800501346803">"Paplūdimio skėtis"</item>
+ <item msgid="799139025758265891">"Darbo įrankiai"</item>
+ <item msgid="8112685757657659269">"Pianinas"</item>
+ <item msgid="3861584909935022342">"Kino juosta"</item>
+ <item msgid="5827426100157335512">"Knyga"</item>
+ <item msgid="8585828346253128384">"Lotoso žiedas"</item>
+ <item msgid="8788370542815300188">"Asmens mintis"</item>
+ <item msgid="7287354964767553293">"Ausinės"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Traukinys"</item>
+ <item msgid="4903790544026923026">"Automobilis"</item>
+ <item msgid="5010405583912314582">"Šakutė ir peilis"</item>
+ <item msgid="8939998598599064900">"Pirkinių krepšelis"</item>
+ <item msgid="3379605903308731893">"Vaikas"</item>
+ <item msgid="7808668968550293112">"Gyvūno letena"</item>
+ <item msgid="1000692647524056504">"Žvaigždutės ženklelis"</item>
+ <item msgid="8270261073421676502">"Du žmonės"</item>
+ <item msgid="5767782819651505460">"Žvaigždė"</item>
+ <item msgid="4368451291862729334">"Širdis"</item>
+ <item msgid="2613199102208419986">"Namas"</item>
+ <item msgid="3022279986430275040">"Pusmėnulis"</item>
+ <item msgid="5421089790869483206">"Laikrodis"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 7b0e2dd..5f802df 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Susieti naują įrenginį"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatiškai įjungti rytoj"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Jei išjungsite „Bluetooth“, jis vėl bus įjungtas kitą dieną"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Susieti dešinę ausį"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Susieti kairę ausį"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Susiekite kitą ausį"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"„Bluetooth LE Audio“ išjungimas"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Jei įrenginys palaiko „LE Audio“ aparatinės įrangos galimybes, išjungiama funkcija „Bluetooth LE Audio“."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"„Bluetooth LE Audio“ režimas"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"„Bluetooth LE Audio“ transliacijos NS peržiūros įgalinimas"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Įgalinama „LE Audio“ bendrinimo NS peržiūra, įskaitant asmeninių garso įrašų bendrinimą ir privatų transliavimą"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Rodyti „LE Audio“ jungiklį įrenginio informacijoje"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"„Bluetooth LE Audio“ leidžiamųjų sąrašo išskyrimas"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Naudoti „LE Audio“ pagal numatytuosius nustatymus, net jei „LE Audio“ išorinis įrenginys nebuvo patvirtintas kaip atitinkantis leidžiamųjų sąrašo kriterijus."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Nustatykite automatiškai pagal tinklo ir belaidžio ryšio signalus"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatinė laiko juosta"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Nustatykite automatiškai pagal netoliese esančius mobiliojo ryšio tinklus"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Nustatykite automatiškai pagal įrenginio vietovę, jei ji pasiekiama"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Naudoti numatytuosius lokalės nustatymus"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Naudoti 24 val. formatą"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Laikas"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Patraukite pirštą, tada vėl palieskite jutiklį"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Negalima naudoti piršto atspaudo jutiklio"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Apsilankykite pas taisymo paslaugos teikėją."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ekranas išjungtas, atrakinimas piršto atspaudu"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Naudoti atrakinimą piršto atspaudu, net kai ekranas išjungtas"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ekranas išjungtas, atrakinti"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Daugiau saugos nustatymų"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Darbo profilio užraktas, šifruotė ir kt."</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifruotė, prisijungimo duomenys ir kt."</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klaviatūra nepaiso greitai kartojamų to paties klavišo paspaudimų"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Peradresavimo klavišų slenkstis"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Pasirinkite, kiek laiko klaviatūra nepaiso pasikartojančių klavišų paspaudimų"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 sek."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 sek."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 sek."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 sek."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 sek."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 sek."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Tinkinta"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"priskirta vertė"</string>
<string name="slow_keys" msgid="2891452895499690837">"Lėtieji klavišai"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Koreguojamas laikas, per kurį aktyvinamas klavišo paspaudimas"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Atmenieji klavišai"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Norėdami naudoti spartųjį klavišą, vienu metu paspauskite vieną klavišą, užuot laikę nuspaudę kelis klavišus"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Pelės klavišai"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Naudoti pelės klavišus"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Naudodami klaviatūrą valdykite žymeklį"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Atvirkštinis slinkimas pele"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Slinkite aukštyn, kad pereitumėte puslapiu žemyn"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Sukeisti kairįjį ir dešinįjį mygtukus"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Naudokite kairįjį pelės mygtuką kaip dešinįjį"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Pelės klavišai, skirti klaviatūrai „<xliff:g id="KEYBOARD_NAME">%s</xliff:g>“"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Perkelkite pelės žymeklį naudodami šiuos klavišus: <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Spustelėkite pagrindinį pelės mygtuką naudodami klavišą „<xliff:g id="CLICK_LABEL">%s</xliff:g>“"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Paspauskite ir palaikykite pagrindinį pelės mygtuką naudodami klavišą „<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>“"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Atleiskite pagrindinį pelės mygtuką naudodami klavišą „<xliff:g id="RELEASE_LABEL">%s</xliff:g>“"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Perjunkite slinkimo režimą naudodami klavišą „<xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>“. Tai atlikus bus galima slinkti vaizdu aukštyn, žemyn, kairėn arba dešinėn naudojant šiuos klavišus: <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Spustelėkite antrinį pelės mygtuką naudodami klavišą „<xliff:g id="RELEASE_2_LABEL">%s</xliff:g>“"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Spartieji klavišai"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Rodyti sparčiųjų klavišų sąrašą"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Darbo profilio klaviatūros ir įrankiai"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Pasirinkite naują „<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>“ slaptažodį:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Fizinės klaviatūros pritaikomumas"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Atmenieji klavišai, pakartotinių paspaudimų kontrolė, pelės klavišai"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Klavišų kartojimas"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Atidėti iki pakartojimo"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Kartojimo dažnis"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Laikykite paspaudę klavišą, kad kartotumėte jo simbolį, kol klavišas bus atleistas"</string>
<string name="ime_label_title" msgid="8994569521516807168">"„<xliff:g id="IME_LABEL">%s</xliff:g>“ išdėstymas"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Numatytasis"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatinis: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Reguliuoti maitinimo naudojimą"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Įtraukti paketai"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Programos veikia įprastai"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Rekomenduojama pakeisti akumuliatorių"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Sumažinta akumuliatoriaus talpa ir įkrovimo našumas, todėl rekomenduojama pakeisti akumuliatorių."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Žemas akumuliatoriaus lygis"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Įjunkite Akumuliatoriaus tausojimo priemonę, kad akumuliatorius veiktų ilgiau"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Akumuliatoriaus veikimo laiko pailginimas"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Atsijungti nuo šio VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Atsijungti"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versija"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g> vers."</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Pamiršti VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Pakeisti esamą VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Nustatyti visada įjungtą VPN?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„9.00–17.00 darbo dienomis“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalendoriaus įvykiai"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Aktyvus režimas „{mode_1}“}=2{Aktyvūs režimai „{mode_1}“ ir „{mode_2}“}=3{Aktyvūs režimai „{mode_1}“, „{mode_2}“ ir „{mode_3}“}one{Aktyvūs režimai „{mode_1}“ ir „{mode_2}“ ir dar #}few{Aktyvūs režimai „{mode_1}“ ir „{mode_2}“ ir dar #}many{Aktyvūs režimai „{mode_1}“ ir „{mode_2}“ ir dar #}other{Aktyvūs režimai „{mode_1}“ ir „{mode_2}“ ir dar #}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Vieną režimą galima įjungti automatiškai}one{# režimą galima įjungti automatiškai}few{# režimus galima įjungti automatiškai}many{# režimo galima įjungti automatiškai}other{# režimų galima įjungti automatiškai}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Netrukdymo režimas}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}many{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ĮJUNGTA"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nenustatyta"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Išjungta"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kai per trumpą laiką gaunate daug pranešimų, įrenginys sumažina garsumą ir įspėjimų skaičių ekrane ne daugiau nei dviem minutėms. Skambučiai, signalai ir prioritetiniai pokalbiai nepaveikiami. \n\nNeaktyvumo laikotarpiu gautus pranešimus galima rasti perbraukus žemyn iš ekrano viršaus."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Taikyti darbo profiliams"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Taikyti darbo profilio programoms"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Pagalbinės virtualiosios realybės paslaugos"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nėra įdiegtų programų, kurios pateikė užklausą būti vykdomos kaip pagalbinės virtualiosios realybės paslaugos."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Leisti „<xliff:g id="SERVICE">%1$s</xliff:g>“ pasiekti virtualiosios realybės paslaugą?"</string>
@@ -5461,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Klausyti srauto"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Nuskaitykite garso srauto QR kodą, kad galėtumėte klausyti naudodami „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Bendrinant negalima redaguoti slaptažodžio. Jei norite pakeisti slaptažodį, pirmiausia išjunkite garso įrašų bendrinimą."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Slaptažodį turi sudaryti 4–16 simbolių ir tai gali būti tik raidės, skaičiai bei simboliai"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR kodų skaitytuvas"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Reikia pagalbos?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Nustatymų paieška"</string>
@@ -5469,8 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Tik įrenginys"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nauji kontaktai nebus sinchronizuojami su paskyra"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Pagal numatytuosius nustatymus kontaktai bus išsaugomi įrenginyje ir sinchronizuojami su paskyra"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Numatytoji paskyra nenustatyta"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Nustatant numatytąją paskyrą įvyko klaida"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Numatytoji paskyra nenustatyta"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Tik įrenginys"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Jei norite pradėti, pridėkite paskyrą"</string>
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
+ <skip />
<string name="search_gesture_feature_title" msgid="7037117019612710960">"Paieška apibrėžiant"</string>
<string name="search_gesture_feature_summary" msgid="1793056495030564014">"Jei norite ieškoti naudodami turinį ekrane, palieskite ir palaikykite pagrindinio puslapio mygtuką arba naršymo rankenėlę."</string>
</resources>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
index 3736b30..5626332 100644
--- a/res/values-lv/arrays.xml
+++ b/res/values-lv/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Portfelis"</item>
+ <item msgid="184985872234062767">"Klasiska ēka"</item>
+ <item msgid="9189550412466785530">"Daudzdzīvokļu māja"</item>
+ <item msgid="2142527562511049422">"Runas burbulis"</item>
+ <item msgid="2548100558260478605">"Personu grupa"</item>
+ <item msgid="2270003903304578284">"Spuldze"</item>
+ <item msgid="4793496619091161864">"Kalendārs"</item>
+ <item msgid="5673625795644364100">"Netraucēt"</item>
+ <item msgid="1423820834865831361">"Cilvēks skrien"</item>
+ <item msgid="2037298830718732608">"Golfs"</item>
+ <item msgid="2197835014443491074">"Sporta zāles hantele"</item>
+ <item msgid="2730180105015616518">"Peldēšana"</item>
+ <item msgid="2666922823253345958">"Cilvēks pārgājienā"</item>
+ <item msgid="8234880356472211396">"Cilvēks met bumbu"</item>
+ <item msgid="4642980625253001443">"Cilvēks sper"</item>
+ <item msgid="4324795269518833500">"Spēles vadāmierīce"</item>
+ <item msgid="7789966425125441125">"Mākslinieka krāsu palete"</item>
+ <item msgid="663512680597461570">"Sniegpārsliņa"</item>
+ <item msgid="7952183800501346803">"Saulessargs"</item>
+ <item msgid="799139025758265891">"Darbnīcas rīki"</item>
+ <item msgid="8112685757657659269">"Klavieres"</item>
+ <item msgid="3861584909935022342">"Filmas rullītis"</item>
+ <item msgid="5827426100157335512">"Grāmata"</item>
+ <item msgid="8585828346253128384">"Lotosa zieds"</item>
+ <item msgid="8788370542815300188">"Cilvēka prāts"</item>
+ <item msgid="7287354964767553293">"Austiņas"</item>
+ <item msgid="2530059623783800987">"Televizors"</item>
+ <item msgid="5307182323469376758">"Vilciens"</item>
+ <item msgid="4903790544026923026">"Automašīna"</item>
+ <item msgid="5010405583912314582">"Nazis un dakšiņa"</item>
+ <item msgid="8939998598599064900">"Iepirkumu grozs"</item>
+ <item msgid="3379605903308731893">"Bērns"</item>
+ <item msgid="7808668968550293112">"Dzīvnieka ķepa"</item>
+ <item msgid="1000692647524056504">"Zvaigznītes emblēma"</item>
+ <item msgid="8270261073421676502">"Divi cilvēki"</item>
+ <item msgid="5767782819651505460">"Zvaigzne"</item>
+ <item msgid="4368451291862729334">"Sirds"</item>
+ <item msgid="2613199102208419986">"Māja"</item>
+ <item msgid="3022279986430275040">"Pusmēness"</item>
+ <item msgid="5421089790869483206">"Pulkstenis"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 932ed7c..97c26e4 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Savienošana pārī ar jaunu ierīci"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automātiski ieslēgt rīt"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Savienot pārī labo"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Savienot pārī kreiso"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Savienojiet otru aparātu"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Atspējot Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Tiek atspējota Bluetooth LE Audio funkcija, ja ierīcē tiek atbalstītas LE Audio aparatūras iespējas."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio režīms"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Iespējot Bluetooth LE audio apraides lietotāja saskarnes priekšskatījumu"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Tiks iespējots LE Audio kopīgošanas lietotāja saskarnes priekšskatījums, tostarp personīga audio kopīgošana un privāta apraide."</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE Audio slēdzis informācijā par ierīci"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Apiet Bluetooth LE Audio atļaušanas sarakstu"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Pēc noklusējuma izmantot LE Audio, pat ja nav pārbaudīta LE Audio perifērijas ierīces atbilstība atļaušanas saraksta kritērijiem."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Iestatīt automātiski, izmantojot tīklu un bezvadu signālus."</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automātiska laika joslu noteikšana"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Iestatīt automātiski, ņemot vērā mobilos tīklus jūsu tuvumā."</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Iestatīt automātiski, izmantojot ierīces atrašanās vietu (ja pieejama)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Izmantot lokalizācijas noklusējuma vērtību"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Izmantot 24 stundu formātu"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Laiks"</string>
@@ -279,7 +282,7 @@
<string name="lock_after_timeout_summary" msgid="4869265514658147304">"<xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> pēc noildzes"</string>
<string name="lock_immediately_summary_with_exception" msgid="40819611828339044">"Uzreiz pēc noildzes, ja vien bloķēšanu neliedz <xliff:g id="TRUST_AGENT_NAME">%1$s</xliff:g>"</string>
<string name="lock_after_timeout_summary_with_exception" msgid="3441806647509073124">"<xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> pēc noildzes, ja vien bloķēšanu neliedz <xliff:g id="TRUST_AGENT_NAME">%2$s</xliff:g>"</string>
- <string name="owner_info_settings_title" msgid="3555626140700093017">"Pievien. tekstu bloķēš. ekrānā"</string>
+ <string name="owner_info_settings_title" msgid="3555626140700093017">"Pievienot tekstu bloķēšanas ekrānā"</string>
<string name="owner_info_settings_summary" msgid="347238313388083297">"Nav"</string>
<string name="owner_info_settings_edit_text_hint" msgid="841926875876050274">"Piem., Jāņa Android ierīce"</string>
<string name="location_settings_title" msgid="8375074508036087178">"Atrašanās vieta"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Paceliet pirkstu un pēc tam vēlreiz pieskarieties sensoram."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Nevar izmantot pirksta nospieduma sensoru"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Sazinieties ar remonta pakalpojumu sniedzēju."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Autorizācija ar pirksta nospiedumu, kad ekrāns izslēgts"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Izmantot autorizāciju ar pirksta nospiedumu, pat ja ekrāns ir izslēgts"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ekrāna izslēgšana, atbloķēšana"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Vairāk drošības iestatījumu"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Darba profila bloķēšana, šifrēšana u.c."</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifrēšana, akreditācijas dati u.c."</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tastatūra ignorē ātri atkārtotu viena taustiņa nospiešanu."</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Atlēcienu taustiņu slieksnis"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Izvēlieties, cik ilgi tastatūra ignorēs atkārtotu taustiņu nospiešanu."</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Pielāgots"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"pielāgota vērtība"</string>
<string name="slow_keys" msgid="2891452895499690837">"Lēnie taustiņi"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Tiek pielāgots laiks, kas nepieciešams, lai aktivizētu nospiestu taustiņu."</string>
<string name="sticky_keys" msgid="7317317044898161747">"Taustiņu ķēde"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Izmantojot īsinājumtaustiņus, vienlaikus nospiediet tikai vienu taustiņu, nevis turiet nospiestus vairākus taustiņus."</string>
<string name="mouse_keys" msgid="6237254627808525540">"Peles taustiņi"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Izmantot peles taustiņus"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Izmantojiet tastatūru, lai kontrolētu rādītāju."</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Peles ritināšana atpakaļgaitā"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Ritiniet augšup, lai pārvietotu lapu uz leju"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Apmainīt vietām kreiso un labo pogu"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Izmantojiet peles kreiso pogu kā labo"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Peles taustiņi tastatūrai <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Lai pārvietotu peles rādītāju, izmantojiet taustiņus <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>."</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Lai noklikšķinātu uz peles primārās pogas, izmantojiet taustiņu <xliff:g id="CLICK_LABEL">%s</xliff:g>."</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Lai nospiestu un turētu peles primāro pogu, izmantojiet taustiņu <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>."</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Lai atlaistu peles primāro pogu, izmantojiet taustiņu <xliff:g id="RELEASE_LABEL">%s</xliff:g>."</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Lai pārslēgtu ritināšanas režīmu, izmantojiet taustiņu <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>. Šajā režīmā varēsiet ritināt skatu augšup, lejup, pa kreisi un pa labi ar taustiņiem <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Lai noklikšķinātu uz peles sekundārās pogas, izmantojiet taustiņu <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>."</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Īsinājumtaustiņi"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Rādīt īsinājumtaustiņu sarakstu"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastatūras un rīki darba profilā"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Izvēlieties jaunu taustiņu — <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Fiziskās tastatūras pieejamība"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Taustiņu ķēde, atlēcienu taustiņi, peles taustiņi"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Taustiņu atkārtošana"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Aizkave pirms atkārtošanas"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Atkārtošanas intervāls"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Turot taustiņu nospiestu, tiks atkārtoti ievadīta tā rakstzīme, līdz taustiņš tiks atlaists."</string>
<string name="ime_label_title" msgid="8994569521516807168">"Izkārtojums: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Noklusējums"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automātiski: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Noregulēt strāvas patēriņu"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Iekļautās pakotnes"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Lietotnes darbojas normāli"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Ieteicams nomainīt akumulatoru"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Akumulatora ietilpība un uzlādes veiktspēja ir samazinājusies, un ir ieteicams nomainīt akumulatoru."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Zems akumulatora uzlādes līmenis"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Lai paildzinātu akumulatora darbību, ieslēdziet akumulatora enerģijas taupīšanas režīmu"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Akumulatora darbības paildzināšana"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vai pārtraukt šo VPN savienojumu?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Pārtraukt savienojumu"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versija"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versija <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Aizmirst VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Vai aizstāt esošo VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Vai iestatīt vienmēr ieslēgtu VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"“Darbdienās plkst. 9:00–17:00”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalendāra pasākumi"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Režīms {mode_1} ir aktīvs}=2{Režīmi {mode_1} un {mode_2} ir aktīvi}=3{Režīmi {mode_1}, {mode_2} un {mode_3} ir aktīvi}zero{Režīmi {mode_1}, {mode_2} un vēl # ir aktīvi}one{Režīmi {mode_1}, {mode_2} un vēl # ir aktīvi}other{Režīmi {mode_1}, {mode_2} un vēl # ir aktīvi}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 režīmu var ieslēgt automātiski}zero{# režīmus var ieslēgt automātiski}one{# režīmu var ieslēgt automātiski}other{# režīmus var ieslēgt automātiski}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Netraucēt}=1{{mode_1}}=2{{mode_1}, {mode_2}}zero{{mode_1}, {mode_2} un {mode_3}}one{{mode_1}, {mode_2} un {mode_3}}other{{mode_1}, {mode_2} un {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"IESLĒGTS"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nav iestatīts"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Atspējots"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Ja īsā laika posmā saņemsiet daudz paziņojumu, ierīce samazinās skaļumu un brīdinājumu rādīšanu līdz pat divām minūtēm. Tas neattiecas uz zvaniem, signāliem un prioritārām sarunām. \n\nNogaidīšanas perioda laikā saņemtos paziņojumus var atrast, pavelkot lejup no ekrāna augšdaļas."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Lietot darba profiliem"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Lietot darba profila lietotnēm"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR palīga pakalpojumi"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nevienai instalētajai lietotnei nav pieprasīta palaišana kā VR palīga pakalpojumam."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Vai atļaut VR pakalpojumam piekļūt pakalpojumam <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5460,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Klausīties straumi"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skenējiet audio straumes kvadrātkodu, lai to klausītos ierīcē <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Kopīgošanas laikā paroli nevar rediģēt. Lai mainītu paroli, vispirms izslēdziet audio kopīgošanu."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Parolei ir jābūt 4–16 rakstzīmes garai, un tajā drīkst izmantot tikai burtus, ciparus un simbolus."</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Kvadrātkoda skeneris"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Vai nepieciešama palīdzība?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Meklēšanas iestatījumi"</string>
@@ -5468,10 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Tikai ierīcē"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Jaunas kontaktpersonas netiks sinhronizētas ar kontu."</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Pēc noklusējuma kontaktpersonas tiks saglabātas jūsu ierīcē un sinhronizētas ar jūsu kontu."</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nav iestatīts noklusējuma konts"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Iestatot noklusējuma kontu, radās kļūda."</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nav iestatīts noklusējuma konts"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Tikai ierīcē"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Lai sāktu darbu, pievienojiet kontu."</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Apvilkt un meklēt"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Pieskarieties un turiet pogu “Sākums” vai navigācijas turi, lai meklētu, izmantojot ekrāna saturu."</string>
</resources>
diff --git a/res/values-mk/arrays.xml b/res/values-mk/arrays.xml
index 3449e5f..e4b8599 100644
--- a/res/values-mk/arrays.xml
+++ b/res/values-mk/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Актовка"</item>
+ <item msgid="184985872234062767">"Класична зграда"</item>
+ <item msgid="9189550412466785530">"Станбена зграда"</item>
+ <item msgid="2142527562511049422">"Балонче за говор"</item>
+ <item msgid="2548100558260478605">"Група луѓе"</item>
+ <item msgid="2270003903304578284">"Светилка"</item>
+ <item msgid="4793496619091161864">"Календар"</item>
+ <item msgid="5673625795644364100">"Не вознемирувај"</item>
+ <item msgid="1423820834865831361">"Лице кое трча"</item>
+ <item msgid="2037298830718732608">"Голф"</item>
+ <item msgid="2197835014443491074">"Тег за теретана"</item>
+ <item msgid="2730180105015616518">"Пливање"</item>
+ <item msgid="2666922823253345958">"Лице кое планинари"</item>
+ <item msgid="8234880356472211396">"Лице кое фрла топка"</item>
+ <item msgid="4642980625253001443">"Лице кое клоца"</item>
+ <item msgid="4324795269518833500">"Контролер за игри"</item>
+ <item msgid="7789966425125441125">"Палета на бои за изведувачи"</item>
+ <item msgid="663512680597461570">"Снегулка"</item>
+ <item msgid="7952183800501346803">"Чадор за плажа"</item>
+ <item msgid="799139025758265891">"Алати во работилница"</item>
+ <item msgid="8112685757657659269">"Пијано"</item>
+ <item msgid="3861584909935022342">"Филмска лента"</item>
+ <item msgid="5827426100157335512">"Книга"</item>
+ <item msgid="8585828346253128384">"Цвет на лотос"</item>
+ <item msgid="8788370542815300188">"Умот на лицето"</item>
+ <item msgid="7287354964767553293">"Слушалки"</item>
+ <item msgid="2530059623783800987">"ТВ"</item>
+ <item msgid="5307182323469376758">"Воз"</item>
+ <item msgid="4903790544026923026">"Автомобил"</item>
+ <item msgid="5010405583912314582">"Вилушка и нож"</item>
+ <item msgid="8939998598599064900">"Кошничка"</item>
+ <item msgid="3379605903308731893">"Дете"</item>
+ <item msgid="7808668968550293112">"Животинска шепа"</item>
+ <item msgid="1000692647524056504">"Значка со ѕвезда"</item>
+ <item msgid="8270261073421676502">"Две лица"</item>
+ <item msgid="5767782819651505460">"Ѕвезда"</item>
+ <item msgid="4368451291862729334">"Срце"</item>
+ <item msgid="2613199102208419986">"Куќа"</item>
+ <item msgid="3022279986430275040">"Полумесечина"</item>
+ <item msgid="5421089790869483206">"Часовник"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 279561f..66d257f 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Спарете нов уред"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Автоматски вклучи го утре"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Спари го десното уво"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Спари го левото уво"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Спари го другото уво"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Оневозможи Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Ја оневозможува функцијата Bluetooth LE Audio ако уредот поддржува хардверски способности за LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Режим за Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Овозможи преглед на UI за емитување Bluetooth LE Audio."</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Овозможува преглед на UI за LE Audio Sharing што опфаќа и лично споделување аудио и приватно емитување"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Прекинувач за LE Audio во „Детали за уредот“"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Игнорирај го списокот со дозволени за Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Користи LE Audio стандардно дури и ако не е потврдено дека периферното LE Audio ги исполнува критериумите на списокот со дозволени."</string>
@@ -130,7 +134,7 @@
<string name="connected_device_fast_pair_device_title" msgid="543124539265592392">"Поврзано со сметка"</string>
<string name="connected_device_previously_associated_fast_pair_device_title" msgid="8353405823992023457">"Претходно користено со сметката"</string>
<string name="connected_device_add_device_summary" msgid="8671009879957120802">"Bluetooth ќе се вклучи за спарување"</string>
- <string name="connected_device_connections_title" msgid="4164120115341579170">"Поставки за врски"</string>
+ <string name="connected_device_connections_title" msgid="4164120115341579170">"Поставки за поврзување"</string>
<string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"Претходно поврзани"</string>
<string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"Bluetooth е вклучен"</string>
<string name="previous_connected_see_all" msgid="7759413145713251328">"Прикажи ги сите"</string>
@@ -248,10 +252,9 @@
<string name="roaming_warning" msgid="7703647889040229013">"Може да ви се наплати за роаминг."</string>
<string name="date_time_auto" msgid="1759599045100040686">"Автоматски датум и време"</string>
<string name="date_time_auto_summary" msgid="8294938565417729698">"Поставете автоматски со вашата мрежа и безжични сигнали"</string>
- <string name="zone_auto_title" msgid="3520584257065861479">"Автоматска временска зона"</string>
+ <string name="zone_auto_title" msgid="3520584257065861479">"Автоматска часовна зона"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Поставете автоматски според мобилните мрежи во ваша близина"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Постави автоматски со локацијата на уредот, ако е достапна"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Користи локален стандард"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Користи 24-часовен формат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Време"</string>
@@ -279,7 +282,7 @@
<string name="lock_after_timeout_summary" msgid="4869265514658147304">"<xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> после истекувањето на времето"</string>
<string name="lock_immediately_summary_with_exception" msgid="40819611828339044">"Веднаш по исклучувањето, освен кога <xliff:g id="TRUST_AGENT_NAME">%1$s</xliff:g> го држи отклучен"</string>
<string name="lock_after_timeout_summary_with_exception" msgid="3441806647509073124">"<xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> по исклучувањето, освен кога <xliff:g id="TRUST_AGENT_NAME">%2$s</xliff:g> го држи отклучен"</string>
- <string name="owner_info_settings_title" msgid="3555626140700093017">"Додајте текст на заклучен екран"</string>
+ <string name="owner_info_settings_title" msgid="3555626140700093017">"Додавање текст на заклучен екран"</string>
<string name="owner_info_settings_summary" msgid="347238313388083297">"Нема"</string>
<string name="owner_info_settings_edit_text_hint" msgid="841926875876050274">"На пр. Android-от на Миле."</string>
<string name="location_settings_title" msgid="8375074508036087178">"Локација"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Подигнете го прстот, потоа допрете го сензорот повторно"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Не може да се користи сензорот за отпечатоци"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Однесете го уредот на поправка."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"„Отклучување со отпечаток“ при исклучен екран"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Користете „Отклучување со отпечаток“ дури и кога е исклучен екранот"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Исклучен екран, отклучете"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Повеќе поставки за безбедност"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Заклучување работен профил, шифрирање и друго"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифрирање, акредитиви и друго"</string>
@@ -1306,8 +1312,8 @@
<string name="dark_ui_text" msgid="4392646155331126666">"Темната тема користи црна заднина за подолго траење на батеријата на некои екрани. Распоредите за темната тема не се вклучуваат додека не се исклучи екранот."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"„Темната тема“ тековно го следи вашиот распоред за „Режимот за спиење“"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Поставки за „Режимот за спиење“"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{„Режимите“ може да активираат и „Темна тема“}=1{{mode_1} активира и „Темна тема“}=2{{mode_1} и {mode_2} активираат и „Темна тема“}=3{{mode_1}, {mode_2} и {mode_3} активираат и „Темна тема“}one{{mode_1}, {mode_2} и уште # активираат и „Темна тема“}other{{mode_1}, {mode_2} и уште # активираат и „Темна тема“}}"</string>
- <string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Поставки за „Режими“"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Режимите може да активираат и „Темна тема“}=1{{mode_1} активира и „Темна тема“}=2{{mode_1} и {mode_2} активираат и „Темна тема“}=3{{mode_1}, {mode_2} и {mode_3} активираат и „Темна тема“}one{{mode_1}, {mode_2} и уште # активираат и „Темна тема“}other{{mode_1}, {mode_2} и уште # активираат и „Темна тема“}}"</string>
+ <string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Поставки за режими"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Уште потемно"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Дозволете уредот да стане потемен од вообичаено"</string>
<string name="screen_timeout" msgid="7709947617767439410">"Исклучување на екранот"</string>
@@ -1631,7 +1637,7 @@
<string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Дозволете апликациите и услугите да скенираат за уреди во близина во секое време, дури и кога Bluetooth е исклучен. Ова може да се користи, на пример, за да се подобрат функциите и локациските услуги."</string>
<string name="location_services_preference_title" msgid="604317859531782159">"Локациски услуги"</string>
<string name="location_services_screen_title" msgid="5640002489976602476">"Локациски услуги"</string>
- <string name="location_time_zone_detection_toggle_title" msgid="720338048522014712">"Користете локација за временската зона"</string>
+ <string name="location_time_zone_detection_toggle_title" msgid="720338048522014712">"Користи локација за часовната зона"</string>
<string name="location_time_zone_detection_status_title" msgid="8903495354385600423">"Часовната зона не може да се постави автоматски"</string>
<string name="location_time_zone_detection_status_summary_degraded_by_settings" msgid="6198939835335841106"></string>
<string name="location_time_zone_detection_status_summary_blocked_by_settings" msgid="5276280770344278768">"„Локацијата“ или „Локациските услуги“ се исклучени"</string>
@@ -1646,7 +1652,7 @@
<string name="location_time_zone_detection_not_applicable" msgid="6757964612836952714">"Откривање временска зона на локација е оневозможено"</string>
<string name="location_time_zone_detection_not_supported" msgid="3251181656388306501">"Откривањето временска зона на локација не е поддржано"</string>
<string name="location_time_zone_detection_not_allowed" msgid="8264525161514617051">"Промените на откривањето временска зона на локација не се дозволени"</string>
- <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Ако е достапна локацијата на вашиот уред, може да се користи за поставување на временската зона"</string>
+ <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Ако е достапна локацијата на вашиот уред, може да се користи за поставување на часовната зона"</string>
<string name="about_settings_summary" msgid="4831942939227432513">"Прикажи правни информации, статус, верзија на софтвер"</string>
<string name="legal_information" msgid="7509900979811934843">"Правни информации"</string>
<string name="manual" msgid="3651593989906084868">"Упатство"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Тастатурата игнорира брзи притискања на истото копче што се повторуваат"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Праг на игнор. на повт. притискање"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Изберете го времетраењето кога вашата тастатура ги игнорира повторените притискања на копчињата"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 сек."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 сек."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 сек."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 с."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 с."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 с."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Приспособено"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"приспособена вредност"</string>
<string name="slow_keys" msgid="2891452895499690837">"Бавни копчиња"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Го приспособува времето за да се активира притискање копче"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Лепливи копчиња"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Притискајте ги копчињата за кратенки едно по едно наместо да ги држите копчињата притиснати заедно"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Копчиња на глувчето"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Копчиња за глувче"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Користете ги копчињата за глувче"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Користете ја тастатурата за да го контролирате покажувачот"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Обратно лизгање на глувчето"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Лизгајте нагоре за да ја преместите страницата надолу"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Заменете ги местата на левото и десното копче"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Користете го левото копче на глувчето како десно"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Копчиња за глувче за <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Користете ги копчињата <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> за да го движите покажувачот на глувчето"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Користете го копчето <xliff:g id="CLICK_LABEL">%s</xliff:g> за да кликнете на примарното копче на глувчето"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Користете го копчето <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> за да го притиснете и задржите примарното копче на глувчето"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Користете го копчето <xliff:g id="RELEASE_LABEL">%s</xliff:g> за да го отпуштите примарното копче на глувчето"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Користете го копчето <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> за вклучување/исклучување на „Режим на лизгање“. Ова ќе направи копчињата <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> да го лизгаат приказот нагоре, надолу, налево или надесно"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Користете го копчето <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> за да кликнете на секундарното копче на глувчето"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Кратенки на тастатурата"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Прикажи список со кратенки"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Тастатури и алатки за работниот профил"</string>
@@ -2030,15 +2046,11 @@
<string name="modifier_keys_picker_title" msgid="244545904150587851">"Изберете го копчето модификатор"</string>
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Изберете ново копче за <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Пристапност до физичка тастатура"</string>
- <string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"лепливи копчиња, копчиња за игнорирање повторени притискања, копчиња на глувчето"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"лепливи копчиња, копчиња за игнорирање повторени притискања, копчиња за глувче"</string>
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Повторување на копчињата"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Доцнење пред повторување"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Стапка на повторување"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Притиснете и задржете некое копче за да го повторувате неговиот знак додека не го пуштите копчето"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Распоред на <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Стандардно"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автоматски: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2108,7 +2120,7 @@
<string name="general_category_title" msgid="6298579528716834157">"Општи"</string>
<string name="display_category_title" msgid="6638191682294461408">"Приказ"</string>
<string name="accessibility_color_and_motion_title" msgid="2323301706545305874">"Боја и движење"</string>
- <string name="accessibility_pointer_and_touchpad_title" msgid="8719482393177273831">"Пристапност до покажувачот и допирната подлога"</string>
+ <string name="accessibility_pointer_and_touchpad_title" msgid="8719482393177273831">"Пристапност за покажувачот и допирната подлога"</string>
<string name="accessibility_pointer_and_touchpad_summary" msgid="6089872217234956258">"Боја на покажувачот, големина на покажувачот итн."</string>
<string name="accessibility_pointer_color_customization_title" msgid="3376392766113189508">"Приспособување на бојата на покажувачот"</string>
<string name="accessibility_color_contrast_title" msgid="5757724357142452378">"Контраст на бои"</string>
@@ -2268,7 +2280,7 @@
<string name="accessibility_button_summary" msgid="8510939012631455831">"Брзо пристапувајте до функциите за пристапност"</string>
<string name="accessibility_button_gesture_description" msgid="1141723096904904336">"<b>За да започнете</b><br/> {0,number,integer}. Одете во поставките за пристапност<br/> {1,number,integer}. Изберете функција и допрете ја кратенката<br/> {2,number,integer}. Изберете дали сакате да користите копче или движење за пристап до функцијата<br/>"</string>
<string name="accessibility_button_description" msgid="7669538706120092399">"<b>За да започнете</b><br/> {0,number,integer}. Одете во поставките за пристапност<br/> {1,number,integer}. Изберете функција и допрете ја кратенката<br/> {2,number,integer}. Изберете го копчето за пристап до функцијата<br/>"</string>
- <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Користете копче или движење"</string>
+ <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Ќе користите копче или движење"</string>
<string name="accessibility_button_location_title" msgid="7182107846092304942">"Локација"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"Големина"</string>
<string name="accessibility_button_fade_title" msgid="8081993897680588829">"Избледува кога не се користи"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Приспособи употреба на струја"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Вклучени пакети"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Апликациите работат нормално"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Се препорачува замена на батеријата"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Капацитетот на батеријата и изведбата на полнењето се намалени, па се препорачува замена на батеријата."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Нивото на батеријата е слабо"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Вклучете „Штедач на батерија“ за да го продолжи траењето на батеријата"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Подобрете го траењето на батеријата"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Да се исклучи оваа VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Прекини врска"</string>
<string name="vpn_version" msgid="6344167191984400976">"Верзија"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Верзија <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Заборави VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Да се замени постојната VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Да се постави „секогаш вклучена“ VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„работни денови, 9:00 – 17:00“"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Настани во календарот"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Активен е {mode_1}}=2{Активни се {mode_1} и {mode_2}}=3{Активни се {mode_1}, {mode_2} и {mode_3}}one{Активни се {mode_1}, {mode_2} и уште #}other{Активни се {mode_1}, {mode_2} и уште #}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режим може да се вклучи автоматски}one{# режим може да се вклучат автоматски}other{# режими може да се вклучат автоматски}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Не вознемирувај}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ВКЛУЧЕНО"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Не е поставено"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Оневозможено"</string>
@@ -3422,7 +3435,7 @@
<string name="zen_mode_not_found_text" msgid="692090778655810329">"Режимот не е најден"</string>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ограничете ги прекините"</string>
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Блокирајте ги прекините и одвлекувањата на внимание"</string>
- <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Поставете <xliff:g id="MODE">%1$s</xliff:g>"</string>
+ <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Поставете „<xliff:g id="MODE">%1$s</xliff:g>“"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Исклучување на „Не вознемирувај“"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Алармите и звуците од аудиовизуелните содржини може да го прекинуваат"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Распореди"</string>
@@ -3689,9 +3702,9 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"Може да одговара на пораки и да ги користи копчињата во известувањата, вклучително и да одложува или отфрла известувања и да одговара на повици."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Да ги менува поставките"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Може да го вклучува и исклучува „Не вознемирувај“ и да ги менува поврзаните поставки."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Може да ги активира и да управува со „Режимите“, а и да ги променува поврзаните поставки."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Може да ги активира и да управува со режимите, а и да ги променува поврзаните поставки."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Ако го исклучите пристапот на <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> до известувањата, пристапот до „Не вознемирувај“ може исто така да се исклучи."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ако го исклучите пристапот до известувањата за <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, можеби ќе се исклучи и пристапот до „Режими“."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ако го исклучите пристапот до известувањата за <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, може да се исклучи и пристапот до режимите."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Исклучи"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Откажи"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Реално време"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Кога ќе добиете многу известувања во краток временски период, уредот ќе го намали звукот и ќе ги минимизира известувањата до 2 минути. Ова не влијае на повиците, алармите и приоритетните разговори. \n\nИзвестувањата добиени додека била вклучена „Подискретни известувања“ може да се најдат со повлекување надолу од горниот дел на екранот."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Примени на работни профили"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Применете на апликациите во работниот профил"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Помошни услуги за VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ниедна инсталирана апликација не побара извршување како помошна услуга за VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Да се дозволи пристап до VR-услугата за <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3752,8 +3775,8 @@
<string name="manage_zen_access_title" msgid="1562322900340107269">"Пристап до „Не вознемирувај“"</string>
<string name="zen_access_detail_switch" msgid="4183681772666138993">"Дозволи „Не вознемирувај“"</string>
<string name="zen_access_empty_text" msgid="3779921853282293080">"Ниту една од инсталираните апликации не побарала пристап до „Не вознемирувај“"</string>
- <string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Пристап до „Режими“"</string>
- <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Дозволи пристап до „Режими“"</string>
+ <string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Пристап до режими"</string>
+ <string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Дозволи пристап до режимите"</string>
<string name="zen_modes_access_empty_text" msgid="8750927923904377110">"Ниедна од инсталираните апликации не побара пристап до „Режими“"</string>
<string name="app_notifications_off_desc" msgid="2484843759466874201">"Немате дозволено известувања од оваа апликација"</string>
<string name="channel_notifications_off_desc" msgid="6202042207121633488">"На ваше барање, Android го блокира појавувањето на оваа категорија известувања на уредов"</string>
@@ -3761,7 +3784,7 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"Апликацијава не испраќа известувања"</string>
<string name="notification_channels" msgid="1502969522886493799">"Категории"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Друго"</string>
- <string name="no_channels" msgid="4716199078612071915">"Апликацијава не објави ниедно известување"</string>
+ <string name="no_channels" msgid="4716199078612071915">"Апликацијава нема објавено ниедно известување"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"Прикажи ги некористените категории"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Дополнителни поставки во апликацијата"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Прикажи ги некористените категории"</string>
@@ -3929,10 +3952,10 @@
<string name="zen_mode_trigger_title_generic" msgid="1347753445938095789">"Поставки за апликации"</string>
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Податоци и поставки во <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Управувано од <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Да се оневозможи <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
+ <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Да се оневозможи „<xliff:g id="MODE_NAME">%1$s</xliff:g>“?"</string>
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Овој режим никогаш нема да се вклучи кога е оневозможен"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Оневозможи"</string>
- <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Да се овозможи <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
+ <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Да се овозможи „<xliff:g id="MODE_NAME">%1$s</xliff:g>“?"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Овој режим може да се вклучи автоматски според неговите поставки"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Овозможи"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Поставете режим што следи редовен распоред"</string>
@@ -4154,8 +4177,8 @@
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Да се отповика пристапот до „Не вознемирувај“ за <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Сите правила за „Не вознемирувај“ што ги создала апликацијава ќе се отстранат."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Да се дозволи пристап до „Режими“ за <xliff:g id="APP">%1$s</xliff:g>?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Апликацијата ќе може да ја вклучува/исклучува „Не вознемирувај“, да ги активира и да управува со „Режимите“, а и да ги променува поврзаните поставки."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Да се одземе пристапот до „Режими“ за <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Апликацијата ќе може да ја вклучува/исклучува „Не вознемирувај“, да ги активира и да управува со режимите, а и да ги променува поврзаните поставки."</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Да се одземе пристапот до режимите за <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Сите режими што ги создала апликацијава ќе се отстранат."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Не оптимизирај"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Оптимизирај"</string>
@@ -5045,7 +5068,7 @@
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"Дозволете пристап до паричникот од заклучен екран"</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"Прикажувај го скенерот на QR-кодови"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Дозволи пристап до скенерот на QR-кодови од заклучен екран"</string>
- <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Прикажувај контроли за уреди"</string>
+ <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Прикажување контроли за уреди"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Од заклучениот екран"</string>
<string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Користете контроли за уреди"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"За да користите, прво вклучете „Прикажувај контроли за уреди“"</string>
@@ -5149,7 +5172,7 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Користи „Закачување апликации“"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Користи „Програмерски опции“"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Користи ја услугата за печатење"</string>
- <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"Дозволете менување корисници"</string>
+ <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"Дозволи менување корисници"</string>
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"дозволи, повеќекратно, корисник, дозвола, многу"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"повеќе, корисници, профили, лица, сметки, смени, многу"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Користи „Безжично отстранување грешки“"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Слушнете го стримот"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Скенирајте го QR-кодот на аудиостримот за да слушате со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Лозинката не може да се измени додека се споделува. За промена на лозинката, прво исклучете го споделувањето аудио."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Вашата лозинка мора да содржи 4 – 16 знаци и да опфаќа само букви, бројки и симболи"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Скенер на QR-кодови"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Ви треба помош?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Пребарувајте низ поставките"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Само уред"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Новите контакти нема да се синхронизираат со сметка"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Контактите ќе се зачувуваат на вашиот уред и стандардно ќе се синхронизираат со вашата сметка"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Нема поставено стандардна сметка"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Грешка при поставувањето на стандардната сметка"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Нема поставено стандардна сметка"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Само уред"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Додајте сметка за да започнете"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Пребарување со заокружување"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Допрете и задржете го копчето за почетен екран или лентата за навигација за да пребарувате со содржините на екранот."</string>
</resources>
diff --git a/res/values-ml/arrays.xml b/res/values-ml/arrays.xml
index 5fc8e3d..8d30538 100644
--- a/res/values-ml/arrays.xml
+++ b/res/values-ml/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ബ്രീഫ്കെയ്സ്"</item>
+ <item msgid="184985872234062767">"ക്ലാസിക്കൽ ബില്ഡിംഗ്"</item>
+ <item msgid="9189550412466785530">"അപ്പാർട്ട്മെന്റ് ബിൽഡിംഗ്"</item>
+ <item msgid="2142527562511049422">"സ്പീച്ച് ബബിൾ"</item>
+ <item msgid="2548100558260478605">"ആളുകളുടെ കൂട്ടം"</item>
+ <item msgid="2270003903304578284">"ലൈറ്റ്ബൾബ്"</item>
+ <item msgid="4793496619091161864">"കലണ്ടർ"</item>
+ <item msgid="5673625795644364100">"ശല്യപ്പെടുത്തരുത്"</item>
+ <item msgid="1423820834865831361">"ഓടുന്ന വ്യക്തി"</item>
+ <item msgid="2037298830718732608">"ഗോൾഫ്"</item>
+ <item msgid="2197835014443491074">"ജിം ഡംബെൽ"</item>
+ <item msgid="2730180105015616518">"നീന്തൽ"</item>
+ <item msgid="2666922823253345958">"ഹൈക്ക് ചെയ്യുന്ന വ്യക്തി"</item>
+ <item msgid="8234880356472211396">"പന്ത് എറിയുന്ന വ്യക്തി"</item>
+ <item msgid="4642980625253001443">"കിക്ക് ചെയ്യുന്ന വ്യക്തി"</item>
+ <item msgid="4324795269518833500">"ഗെയിം കൺട്രോളർ"</item>
+ <item msgid="7789966425125441125">"ആർട്ടിസ്റ്റിന്റെ വർണ്ണ പാലെറ്റ്"</item>
+ <item msgid="663512680597461570">"മഞ്ഞുകട്ട"</item>
+ <item msgid="7952183800501346803">"ബീച്ച് കുട"</item>
+ <item msgid="799139025758265891">"വർക്ക്ഷോപ്പ് ടൂളുകൾ"</item>
+ <item msgid="8112685757657659269">"പിയാനോ"</item>
+ <item msgid="3861584909935022342">"ഫിലിം റീൽ"</item>
+ <item msgid="5827426100157335512">"പുസ്തകം"</item>
+ <item msgid="8585828346253128384">"താമരപ്പൂവ്"</item>
+ <item msgid="8788370542815300188">"മനസ്സ്"</item>
+ <item msgid="7287354964767553293">"ഹെഡ്ഫോണുകൾ"</item>
+ <item msgid="2530059623783800987">"ടിവി"</item>
+ <item msgid="5307182323469376758">"ട്രെയിൻ"</item>
+ <item msgid="4903790544026923026">"കാർ"</item>
+ <item msgid="5010405583912314582">"ഫോർക്കും കത്തിയും"</item>
+ <item msgid="8939998598599064900">"ഷോപ്പിംഗ് കാർട്ട്"</item>
+ <item msgid="3379605903308731893">"കുട്ടി"</item>
+ <item msgid="7808668968550293112">"മൃഗത്തിന്റെ കാൽപ്പാദം"</item>
+ <item msgid="1000692647524056504">"സ്റ്റാർ ബാഡ്ജ്"</item>
+ <item msgid="8270261073421676502">"രണ്ട് പേർ"</item>
+ <item msgid="5767782819651505460">"നക്ഷത്രം"</item>
+ <item msgid="4368451291862729334">"ഹൃദയം"</item>
+ <item msgid="2613199102208419986">"വീട്"</item>
+ <item msgid="3022279986430275040">"അർദ്ധ ചന്ദ്രൻ"</item>
+ <item msgid="5421089790869483206">"ക്ലോക്ക്"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 904b5be..9600af0 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"പുതിയ ഉപകരണം ജോടിയാക്കുക"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"നാളെ സ്വയമേവ ഓണാക്കുക"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Bluetooth ഓഫാക്കുകയാണെങ്കിൽ, അടുത്ത ദിവസം വീണ്ടും ഓണാകും"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"വലതു ചെവി ജോടിയാക്കൂ"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ഇടത് ചെവി ജോടിയാക്കൂ"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"അടുത്ത ചെവി ജോടിയാക്കുക"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE ഓഡിയോ പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ഉപകരണം LE ഓഡിയോ ഹാർഡ്വെയർ ശേഷികളെ പിന്തുണയ്ക്കുന്നുണ്ടെങ്കിൽ Bluetooth LE ഓഡിയോ ഫീച്ചർ പ്രവർത്തനരഹിതമാക്കുന്നു."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE ഓഡിയോ മോഡ്"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE ഓഡിയോ ബ്രോഡ്കാസ്റ്റ് UI പ്രിവ്യൂ പ്രവർത്തനക്ഷമമാക്കുക"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"വ്യക്തിഗത ഓഡിയോ പങ്കിടലും സ്വകാര്യ ബ്രോഡ്കാസ്റ്റും ഉൾപ്പെടെ LE ഓഡിയോ പങ്കിടൽ UI പ്രിവ്യൂ പ്രവർത്തനക്ഷമമാക്കുന്നു"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ഉപകരണ വിശദാംശങ്ങളിൽ LE ഓഡിയോ ടോഗിൾ കാണിക്കൂ"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE ഓഡിയോ വൈറ്റ്ലിസ്റ്റ് ബൈപാസ് ചെയ്യുക"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE ഓഡിയോ പെരിഫറൽ, വൈറ്റ്ലിസ്റ്റ് മാനദണ്ഡം പാലിക്കുന്നുണ്ടോയെന്ന് പരിശോധിച്ചുറപ്പിച്ചിട്ടില്ലെങ്കിലും ഡിഫോൾട്ടായി LE ഓഡിയോ ഉപയോഗിക്കുക."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"നിങ്ങളുടെ നെറ്റ്വർക്കും വയർലെസ് സിഗ്നലുകളും ഉപയോഗിച്ച് സ്വയമേവ സജ്ജീകരിക്കുക"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"സ്വയമേവ ഉള്ള സമയമേഖല"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"നിങ്ങളുടെ സമീപമുള്ള മൊബൈൽ നെറ്റ്വർക്കുകളുടെ അടിസ്ഥാനത്തിൽ സ്വയമേവ സജ്ജീകരിക്കുക"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ലഭ്യമാണെങ്കിൽ, നിങ്ങളുടെ ഉപകരണ ലൊക്കേഷൻ ഉപയോഗിച്ച് സ്വയമേവ സജ്ജീകരിക്കുക"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ഡിഫോൾട്ട് ഭാഷ ഉപയോഗിക്കുക"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-മണിക്കൂർ ഫോർമാറ്റ് ഉപയോഗിക്കുക"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"സമയം"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"വിരൽ ഉയർത്തുക, തുടർന്ന് സെൻസർ വീണ്ടും തൊടുക"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ഫിംഗർപ്രിന്റ് സെൻസർ ഉപയോഗിക്കാനാകുന്നില്ല"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"റിപ്പയർ കേന്ദ്രം സന്ദർശിക്കുക."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"സ്ക്രീൻ ഓഫാക്കൽ, ഫിംഗർപ്രിന്റ് അൺലോക്ക്"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"സ്ക്രീൻ ഓഫായിരിക്കുമ്പോൾ പോലും ഫിംഗർപ്രിന്റ് അൺലോക്ക് ഉപയോഗിക്കുക"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"സ്ക്രീൻ ഓഫാക്കൽ, അൺലോക്ക്"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"കൂടുതൽ സുരക്ഷാ ക്രമീകരണം"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ഔദ്യോഗിക പ്രൊഫൈൽ ലോക്ക്, എൻക്രിപ്ഷൻ എന്നിവയും മറ്റും"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"എൻക്രിപ്ഷൻ, ക്രെഡൻഷ്യലുകൾ എന്നിവയും മറ്റും"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ഒരേ കീ അതിവേഗം ആവർത്തിച്ച് അമർത്തുന്നത് കീബോർഡ് അവഗണിക്കും"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"ബൗൺസ് കീ ത്രെഷോൾഡ്"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"നിങ്ങളുടെ കീബോർഡ്, ആവർത്തിച്ചുള്ള കീ അമർത്തലുകൾ അവഗണിക്കേണ്ടതിന്റെ സമയദൈർഘ്യം തിരഞ്ഞെടുക്കുക"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 സെക്കൻഡ്"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 സെക്കൻഡ്"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 സെക്കൻഡ്"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 സെക്കൻഡ്"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 സെക്കൻഡ്"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 സെക്കൻഡ്"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"ഇഷ്ടാനുസൃതം"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ഇഷ്ടാനുസൃത മൂല്യം"</string>
<string name="slow_keys" msgid="2891452895499690837">"സ്ലോ കീകൾ"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"കീ അമർത്തൽ സജീവമാകാൻ എടുക്കുന്ന സമയം ക്രമീകരിക്കുന്നു"</string>
<string name="sticky_keys" msgid="7317317044898161747">"സ്റ്റിക്കി കീകൾ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"കുറുക്കുവഴികൾക്കായി, കീകൾ ഒരുമിച്ച് അമർത്തിപ്പിടിക്കുന്നതിന് പകരം ഒരു സമയം ഒരു കീ അമർത്തുക"</string>
<string name="mouse_keys" msgid="6237254627808525540">"മൗസ് കീകൾ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"മൗസ് കീകൾ ഉപയോഗിക്കുക"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"പോയിന്റർ നിയന്ത്രിക്കാൻ നിങ്ങളുടെ കീബോർഡ് ഉപയോഗിക്കുക"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"മൗസ് വിപരീത ദിശയിൽ സ്ക്രോൾ ചെയ്യൽ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"പേജ് താഴേക്ക് നീക്കാൻ മുകളിലേക്ക് സ്ക്രോൾ ചെയ്യുക"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ഇടത്, വലത് ബട്ടണുകൾ സ്വാപ്പ് ചെയ്യുക"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ഇടത് മൗസ് ബട്ടൺ വലത് ബട്ടണായി ഉപയോഗിക്കുക"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> എന്നതിനുള്ള മൗസ് കീകൾ"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"മൗസ് പോയിന്റർ നീക്കാൻ <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> കീകൾ ഉപയോഗിക്കുക"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"പ്രാഥമിക മൗസ് ബട്ടൺ ക്ലിക്ക് ചെയ്യാൻ <xliff:g id="CLICK_LABEL">%s</xliff:g> ഉപയോഗിക്കുക"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"മൗസിന്റെ പ്രൈമറി ബട്ടൺ അമർത്തിപ്പിടിക്കാൻ <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> കീ ഉപയോഗിക്കുക"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"മൗസിന്റെ പ്രൈമറി ബട്ടൺ റിലീസ് ചെയ്യാൻ <xliff:g id="RELEASE_LABEL">%s</xliff:g> കീ ഉപയോഗിക്കുക"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"സ്ക്രോൾ മോഡ് ടോഗിൾ ചെയ്യാൻ <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ഉപയോഗിക്കുക. ഇങ്ങനെ ചെയ്യുമ്പോൾ <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> കീകൾ മുകളിലേക്കോ താഴേക്കോ ഇടത്തോട്ടോ വലത്തോട്ടോ കാഴ്ച സ്ക്രോൾ ചെയ്യുന്നു"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"മൗസിന്റെ സെക്കൻഡറി ബട്ടൺ അമർത്തിപ്പിടിക്കാൻ <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> കീ ഉപയോഗിക്കുക"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"കീബോഡ് കുറുക്കുവഴികൾ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"കുറുക്കുവഴികളുടെ ലിസ്റ്റ് കാണിക്കുക"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"ഔദ്യോഗിക പ്രൊഫൈൽ കീബോർഡുകളും ടൂളുകളും"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> എന്നതിനായി പുതിയ കീ തിരഞ്ഞെടുക്കൂ:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ഫിസിക്കൽ കീബോർഡ് ഉപയോഗസഹായി"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"സ്റ്റിക്കി കീകൾ, ബൗൺസ് കീകൾ, മൗസ് കീകൾ"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"ആവർത്തിക്കുന്ന കീകൾ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ആവർത്തിക്കുന്നതിന് മുമ്പുള്ള കാലതാമസം"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ആവർത്തന നിരക്ക്"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"കീ വിടുന്നത് വരെ അതിന്റെ പ്രതീകം ആവർത്തിക്കാൻ കീ അമർത്തിപ്പിടിക്കുക"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> ലേഔട്ട്"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ഡിഫോൾട്ട്"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"സ്വയമേവ: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2259,7 +2270,7 @@
<string name="accessibility_shortcut_service_on_lock_screen_title" msgid="2301019277262462426">"ലോക്ക് സ്ക്രീനിൽ നിന്നുള്ള വോളിയം കീ കുറുക്കുവഴി"</string>
<string name="accessibility_shortcut_description" msgid="2184693606202133549">"ലോക്ക് സ്ക്രീനിൽ നിന്ന് ഓണാക്കാൻ \'ഫീച്ചർ കുറുക്കുവഴി\'യെ അനുവദിക്കുക. രണ്ട് വോളിയം കീകളും അൽപ്പ നേരത്തേക്ക് അമർത്തിപിടിക്കുക."</string>
<string name="accessibility_button_title" msgid="5251235485581552614">"ഉപയോഗസഹായി ബട്ടൺ"</string>
- <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ഉപയോഗസഹായി ബട്ടണും ജെസ്ച്ചറും"</string>
+ <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ഉപയോഗസഹായി ബട്ടൺ, ജെസ്ച്ചർ"</string>
<string name="accessibility_button_intro_text" msgid="80993874471745687">"ഉപയോഗസഹായി ഫീച്ചറുകൾ ഏത് സ്ക്രീനിൽ നിന്നും അതിവേഗം ആക്സസ് ചെയ്യൂ"</string>
<string name="accessibility_button_about_title" msgid="3581116105084067926">"ഉപയോഗസഹായി ബട്ടണിനെ കുറിച്ച്"</string>
<string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"ഉപയോഗസഹായി ബട്ടൺ, ജെസ്ച്ചർ എന്നിവയെ കുറിച്ച്"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"പവർ ഉപയോഗം ക്രമീകരിക്കുക"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ഉൾപ്പെടുത്തിയ പാക്കേജുകൾ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ആപ്പുകൾ സാധാരണ രീതിയിൽ റൺ ചെയ്യുന്നു"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ബാറ്ററി മാറ്റാൻ നിർദ്ദേശിക്കുന്നു"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ബാറ്ററി കപ്പാസിറ്റിയും ചാർജിംഗ് പെർഫോമൻസും കുറഞ്ഞു, ബാറ്ററി മാറ്റാൻ നിർദ്ദേശിക്കുന്നു."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ബാറ്ററി നില കുറവാണ്"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ബാറ്ററി ലെെഫ് വർദ്ധിപ്പിക്കാൻ ബാറ്ററി സേവർ ഓണാക്കുക"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ബാറ്ററി ലെെഫ് മെച്ചപ്പെടുത്തുക"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ഈ VPN വിച്ഛേദിക്കണോ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"വിച്ഛേദിക്കുക"</string>
<string name="vpn_version" msgid="6344167191984400976">"പതിപ്പ്"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"പതിപ്പ് <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN മറക്കുക"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"നിലവിലുള്ള VPN-ന് പകരം പുതിയതാക്കണോ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"\'എല്ലായ്പ്പോഴും ഓൺ\' VPN സജ്ജമാക്കണോ?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"പ്രവൃത്തിദിവസങ്ങളിൽ 9 AM - 5 PM\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"കലണ്ടർ ഇവന്റുകൾ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} സജീവമാണ്}=2{{mode_1}, {mode_2} എന്നിവ സജീവമാണ്}=3{{mode_1}, {mode_2}, {mode_3} എന്നിവ സജീവമാണ്}other{{mode_1}, {mode_2} എന്നിവയും മറ്റ് # എണ്ണവും സജീവമാണ്}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{ഒരു മോഡിന് സ്വയമേവ ഓണാകാനാകും}other{# മോഡുകൾക്ക് സ്വയമേവ ഓണാകാനാകും}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ശല്യപ്പെടുത്തരുത്}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ഓണാണ്"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"സജ്ജീകരിച്ചിട്ടില്ല"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"പ്രവർത്തനരഹിതമാക്കി"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"ചെറിയൊരു കാലയളവിൽ നിങ്ങൾക്ക് നിരവധി അറിയിപ്പുകൾ ലഭിച്ചാൽ, നിങ്ങളുടെ ഉപകരണം 2 മിനിറ്റ് വരെ അതിന്റെ ശബ്ദം കുറയ്ക്കുകയും മുന്നറിയിപ്പുകൾ ചെറുതാക്കുകയും ചെയ്യും. കോളുകളെയും അലാറങ്ങളെയും മുൻഗണനയുള്ള സംഭാഷണങ്ങളെയും ബാധിക്കില്ല. \n\nകൂൾഡൗൺ സമയത്ത് ലഭിച്ച അറിയിപ്പുകൾ സ്ക്രീനിന്റെ മുകളിൽ നിന്ന് താഴേയ്ക്ക് വലിച്ച് കണ്ടെത്താം."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ഔദ്യോഗിക പ്രൊഫൈലുകളിൽ ബാധകമാക്കുക"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ഔദ്യോഗിക പ്രൊഫൈൽ ആപ്പുകൾക്ക് ബാധകമാക്കുക"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR സഹായി സേവനങ്ങൾ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ഇൻസ്റ്റാൾ ചെയ്ത ആപ്പുകളൊന്നും VR സഹായി സേവനങ്ങളായി റൺ ചെയ്യുന്നതിന് അഭ്യർത്ഥിച്ചിട്ടില്ല."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> എന്ന സേവനത്തിന് VR സേവന ആക്സസ് അനുവദിക്കണോ?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"സ്ട്രീം ചെയ്യുന്നത് കേൾക്കുക"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ഉപയോഗിച്ച് കേൾക്കാൻ ഓഡിയോ സ്ട്രീം QR കോഡ് സ്കാൻ ചെയ്യുക"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"പങ്കിടുമ്പോൾ പാസ്വേഡ് എഡിറ്റ് ചെയ്യാനാകില്ല. പാസ്വേഡ് മാറ്റാൻ, ആദ്യം ഓഡിയോ പങ്കിടൽ ഓഫാക്കുക."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"നിങ്ങളുടെ പാസ്വേഡിൽ 4-16 പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കുകയും അക്ഷരങ്ങളും അക്കങ്ങളും ചിഹ്നങ്ങളും മാത്രം ഉപയോഗിച്ചിരിക്കുകയും വേണം"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR കോഡ് സ്കാനർ"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"സഹായം ആവശ്യമാണോ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"തിരയൽ ക്രമീകരണം"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"ഉപകരണം മാത്രം"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"പുതിയ കോൺടാക്റ്റുകൾ ഒരു അക്കൗണ്ടുമായി സമന്വയിപ്പിക്കില്ല"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"കോൺടാക്റ്റുകൾ നിങ്ങളുടെ ഉപകരണത്തിൽ സംരക്ഷിക്കുകയും ഡിഫോൾട്ടായി നിങ്ങളുടെ അക്കൗണ്ടിലേക്ക് സമന്വയിപ്പിക്കുകയും ചെയ്യും"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ഡിഫോൾട്ട് ഒന്നും സജ്ജമാക്കിയിട്ടില്ല"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ഡിഫോൾട്ട് അക്കൗണ്ട് സജ്ജീകരിക്കുന്നതിൽ പിശക്"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ഡിഫോൾട്ട് ഒന്നും സജ്ജീകരിച്ചിട്ടില്ല"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"ഉപകരണം മാത്രം"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ആരംഭിക്കുന്നതിന് ഒരു അക്കൗണ്ട് ചേർക്കുക"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"തിരയാൻ വട്ടം വരയ്ക്കൽ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"നിങ്ങളുടെ സ്ക്രീനിലുള്ള ഉള്ളടക്കം ഉപയോഗിച്ച് തിരയാൻ ഹോം ബട്ടൺ അല്ലെങ്കിൽ നാവിഗേഷൻ ഹാൻഡിൽ സ്പർശിച്ചുപിടിക്കുക."</string>
</resources>
diff --git a/res/values-mn/arrays.xml b/res/values-mn/arrays.xml
index e3a6807..76bd912 100644
--- a/res/values-mn/arrays.xml
+++ b/res/values-mn/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Чемодан"</item>
+ <item msgid="184985872234062767">"Сонгодог барилга"</item>
+ <item msgid="9189550412466785530">"Орон сууцын барилга"</item>
+ <item msgid="2142527562511049422">"Ярианы тэмдэглэгээ"</item>
+ <item msgid="2548100558260478605">"Бүлэг хүмүүс"</item>
+ <item msgid="2270003903304578284">"Чийдэн"</item>
+ <item msgid="4793496619091161864">"Календарь"</item>
+ <item msgid="5673625795644364100">"Бүү саад бол"</item>
+ <item msgid="1423820834865831361">"Гүйж буй хүн"</item>
+ <item msgid="2037298830718732608">"Гольф"</item>
+ <item msgid="2197835014443491074">"Биеийн тамирын заалны гантель"</item>
+ <item msgid="2730180105015616518">"Усанд сэлэлт"</item>
+ <item msgid="2666922823253345958">"Явган аялж буй хүн"</item>
+ <item msgid="8234880356472211396">"Бөмбөг шидэж буй хүн"</item>
+ <item msgid="4642980625253001443">"Өшиглөж буй хүн"</item>
+ <item msgid="4324795269518833500">"Тоглоомын удирдлага"</item>
+ <item msgid="7789966425125441125">"Уран бүтээлчийн өнгөний нийлүүр"</item>
+ <item msgid="663512680597461570">"Цасан ширхэг"</item>
+ <item msgid="7952183800501346803">"Далайн эргийн шүхэр"</item>
+ <item msgid="799139025758265891">"Урлангийн багаж хэрэгсэл"</item>
+ <item msgid="8112685757657659269">"Төгөлдөр хуур"</item>
+ <item msgid="3861584909935022342">"Зургийн хальс"</item>
+ <item msgid="5827426100157335512">"Ном"</item>
+ <item msgid="8585828346253128384">"Бадамлянхуа цэцэг"</item>
+ <item msgid="8788370542815300188">"Хүний оюун ухаан"</item>
+ <item msgid="7287354964767553293">"Чихэвч"</item>
+ <item msgid="2530059623783800987">"ТВ"</item>
+ <item msgid="5307182323469376758">"Галт тэрэг"</item>
+ <item msgid="4903790544026923026">"Машин"</item>
+ <item msgid="5010405583912314582">"Хутга, сэрээ"</item>
+ <item msgid="8939998598599064900">"Худалдан авалтын сагс"</item>
+ <item msgid="3379605903308731893">"Хүүхэд"</item>
+ <item msgid="7808668968550293112">"Амьтны сарвуу"</item>
+ <item msgid="1000692647524056504">"Одтой тэмдэг"</item>
+ <item msgid="8270261073421676502">"Хоёр хүн"</item>
+ <item msgid="5767782819651505460">"Од"</item>
+ <item msgid="4368451291862729334">"Зүрх"</item>
+ <item msgid="2613199102208419986">"Байшин"</item>
+ <item msgid="3022279986430275040">"Тал сар"</item>
+ <item msgid="5421089790869483206">"Цаг"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index aff1eda..692a03b 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Шинэ төхөөрөмж хослуулах"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Маргааш автоматаар асаах"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Баруун чих хослуулах"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Зүүн чих хослуулах"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Нөгөө чихээ хослуулах"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE аудиог идэвхгүй болгох"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Хэрэв төхөөрөмж LE аудио техник хангамжийн чадамжийг дэмждэг бол Bluetooth LE аудио онцлогийг идэвхгүй болгоно."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Аудио горим"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Аудио аппын нэвтрүүлэх UI-г урьдчилан үзэхийг идэвхжүүлэх"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Хувийн аудио хуваалцах, хувийн байдлаар нэвтрүүлэх зэрэг LE Аудио аппын хуваалцах UI-г урьдчилан үзэхийг идэвхжүүлнэ"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Төхөөрөмжийн дэлгэрэнгүйд LE аудионы асаах/унтраахыг харуул"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Аудиогийн зөвшөөрсөн жагсаалтыг алгасах"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Аудиогийн нэмэлт хэрэгслийг Зөвшөөрсөн жагсаалтын шалгуурт нийцэж байгаа эсэхийг баталгаажуулаагүй байсан ч өгөгдмөлөөр LE Аудиог ашиглана уу."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Таны сүлжээ болон утасгүй дохиог ашиглан автоматаар тохируулна"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Автомат цагийн бүс"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Таны ойролцоох хөдөлгөөнт холбооны сүлжээнд үндэслэн автоматаар тохируулна"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Таны төхөөрөмжийн байршил байгаа тохиолдолд тухайн байршлыг ашиглан автоматаар тохируулна"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Бүс нутгийн өгөгдмөлийг ашиглах"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 цагийн формат ашиглах"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Цаг"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Хуруугаа өргөөд мэдрэгч дээр дахин хүрнэ үү."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Хурууны хээ мэдрэгч ашиглах боломжгүй"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Засварын үйлчилгээ үзүүлэгчид зочилно уу."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Дэлгэц унтраалттай, Хурууны хээгээр түгжээ тайлах"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Дэлгэц унтраалттай байсан ч Хурууны хээгээр түгжээ тайлахыг ашиглана уу"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Дэлгэц унтраалттай, түгжээг тайлах"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Аюулгүй байдлын бусад тохиргоо"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Ажлын профайлын түгжээ, шифрлэлт болон бусад"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифрлэлт, мандат үнэмлэх болон бусад"</string>
@@ -822,7 +828,7 @@
<string name="manage_device_admin" msgid="1044620606203916275">"Төхөөрөмжийн админы апп"</string>
<string name="number_of_device_admins_none" msgid="152926922020437312">"Идэвхтэй апп алга"</string>
<string name="number_of_device_admins" msgid="3402909995362162876">"{count,plural, =1{Идэвхтэй # апп}other{Идэвхтэй # апп}}"</string>
- <string name="manage_trust_agents" msgid="6410149930029992356">"Итгэмжлэгдсэн төлөөлөгч"</string>
+ <string name="manage_trust_agents" msgid="6410149930029992356">"Итгэмжлэгдсэн агент"</string>
<string name="disabled_because_no_backup_security" msgid="4998095356607488854">"Ашиглахын тулд эхлээд дэлгэцийн түгжээг тохируулна уу"</string>
<string name="manage_trust_agents_summary" msgid="6423843123607674286">"Аль нь ч биш"</string>
<string name="manage_trust_agents_summary_on" msgid="3302574418419446146">"{count,plural, =1{Идэвхтэй 1 итгэмжлэгдсэн агент}other{Идэвхтэй # итгэмжлэгдсэн агент}}"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Гар нэг товчийн давтагдсан шуурхай даралтыг үл хэрэгсэнэ"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Ойх товчийн босго"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Таны гар давтагдсан товчийн даралтыг үл хэрэгсэх хугацааг сонгоорой"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 сек"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 сек"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 сек"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 сек"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 сек"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 сек"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Захиалгат"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"захиалгат утга"</string>
<string name="slow_keys" msgid="2891452895499690837">"Удаан товчнууд"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Товчийн даралт идэвхжихэд зарцуулах хугацааг тохируулна"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Бэхэлсэн түлхүүрүүд"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Товчлолд товчлууруудыг хамтад нь удаан дарахын оронд нэг удаад нэг товчлуур дарна уу"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Хулганын товч"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Хулганын товчийг ашиглах"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Заагчийг хянахад гараа ашиглана уу"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Хулганыг урвуу гүйлгэх"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Хуудсыг доош зөөхийн тулд дээш гүйлгэнэ үү"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Зүүн, баруун товчнуудыг солих"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Хулганын зүүн товчийг баруун товчоороо ашиглана уу"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>-н хулганын товч"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Хулганын заагчийг хөдөлгөхийн тулд <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> товчийг ашиглана уу"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Хулганын үндсэн товч дээр товшихын тулд <xliff:g id="CLICK_LABEL">%s</xliff:g> товчийг ашиглана уу"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Хулганын үндсэн товчийг удаан дарахын тулд <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> товчийг ашиглана уу"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Хулганын үндсэн товчийг суллахын тулд <xliff:g id="RELEASE_LABEL">%s</xliff:g> товчийг ашиглана уу"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Гүйлгэх горимыг асаах/унтраахын тулд <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> товчийг ашиглана уу. Энэ нь <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> товчийг харагдах байдлыг дээд, доод, зүүн, баруун тийш гүйлгэдэг болгоно"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Хулганын хоёрдогч товч дээр товшихын тулд <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> товчийг ашиглана уу"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Гарын товчлол"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Товчлолын жагсаалтыг харуулах"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Ажлын профайлын гар & хэрэгсэл"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>-н шинэ товч сонгоно уу:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Биет гарын хандалт"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Бэхэлсэн товч, буцаах товч, хулганын товч"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Товчийг давтах"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Давтахаас өмнөх саатал"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Давтах хурд"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Товчийг суллах хүртэл тэмдгийг нь давтахын тулд тухайн товчин дээр удаан дарна уу"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> бүдүүвч"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Өгөгдмөл"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автомат: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Цэнэг ашиглалтыг тохируулах"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Агуулагдсан багцууд"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Апп хэвийн ажиллаж байна"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Батарейг солихыг зөвлөж байна"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Батарейн багтаамж, цэнэглэх гүйцэтгэл буурсан ба батарейг солихыг зөвлөж байна."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Батарейн түвшин бага байна"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Батарейн ажиллах хугацааг уртасгахын тулд Батарей хэмнэгчийг асаана уу"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Батарейн ажиллах хугацааг сайжруулах"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Энэ VPN-г салгах уу?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Салгах"</string>
<string name="vpn_version" msgid="6344167191984400976">"Хувилбар"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g>-р хувилбар"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN-г мартах"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Энэ VPN-г солих уу?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"VPN-г тогтмол асаалттайгаар тохируулах уу?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Ажлын өдрүүдэд 09:00 - 17:00\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Календарийн үйл явдал"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} идэвхтэй байна}=2{{mode_1} болон {mode_2} идэвхтэй байна}=3{{mode_1}, {mode_2}, {mode_3} идэвхтэй байна}other{{mode_1}, {mode_2} болон өөр # горим идэвхтэй байна}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 горим автоматаар асах боломжтой}other{# горим автоматаар асах боломжтой}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Бүү саад бол}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"АСААЛТТАЙ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Тохируулаагүй"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Идэвхгүй болгосон"</string>
@@ -3437,7 +3450,7 @@
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Хэзээ автоматаар асаах вэ?"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Үйл явдлын хуваарь"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Дараахын үйл явдлын үеэр асаах"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Урилгын хариу байгаа газар"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Урилга дараахаар хариулагдсан үед"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Цагийн хуваарь"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Хуваарь"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> цаг, <xliff:g id="MINUTES">%2$d</xliff:g> мин"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Та богино хугацаанд олон мэдэгдэл хүлээн авсан үед таны төхөөрөмж 2 хүртэлх минутын турш дууны түвшнээ сулруулж, дохиог багасгана. Дуудлага, сэрүүлэг, чухал харилцан ярианд нөлөөлөхгүй. \n\nХөргөлтийн үеэр хүлээн авсан мэдэгдлийг дэлгэцийн дээд талаас доош татаж олох боломжтой."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Ажлын профайлуудад хэрэгжүүлэх"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Ажлын профайлын аппуудад ашиглах"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR туслагч үйлчилгээ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Суулгасан апп-с VR туслагч үйлчилгээгээр ажиллах хүсэлт гаргаагүй байна."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR үйлчилгээг <xliff:g id="SERVICE">%1$s</xliff:g>-д хандахыг зөвшөөрөх үү?"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Дамжуулалтыг сонсох"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-р сонсохын тулд аудио дамжуулалтын QR кодыг скан хийнэ үү"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Хуваалцаж байхад нууц үгийг засах боломжгүй. Нууц үгийг өөрчлөхийн тулд эхлээд аудио хуваалцахыг унтраана уу."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Таны нууц үг 4-16 тэмдэгттэй байх ёстой бөгөөд зөвхөн үсэг, тоо, тэмдэг ашиглана уу"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR код сканнер"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Тусламж хэрэгтэй юү?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Хайлтын тохиргоо"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Зөвхөн төхөөрөмж"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Шинэ харилцагчдыг бүртгэлтэй синк хийхгүй"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Харилцагчдыг өгөгдмөлөөр таны төхөөрөмжид хадгалж, бүртгэлд тань синк хийнэ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Өгөгдмөл бүртгэл тохируулаагүй"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Үндсэн бүртгэлийг тохируулахад алдаа гарлаа"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Үндсэн бүртгэл тохируулаагүй"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Зөвхөн төхөөрөмж"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Эхлүүлэхийн тулд бүртгэл нэмнэ үү"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Тойруулж зураад хай"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Дэлгэц дээрээ байгаа контентыг ашиглан хайхын тулд Нүүр хуудасны товч, навигацын бариулд хүрээд удаан дарна уу."</string>
</resources>
diff --git a/res/values-mr/arrays.xml b/res/values-mr/arrays.xml
index 14ca732..08024ff 100644
--- a/res/values-mr/arrays.xml
+++ b/res/values-mr/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ब्रीफकेस"</item>
+ <item msgid="184985872234062767">"क्लासिकल इमारत"</item>
+ <item msgid="9189550412466785530">"अपार्टमेंट इमारत"</item>
+ <item msgid="2142527562511049422">"स्पीच बबल"</item>
+ <item msgid="2548100558260478605">"लोकांचा गट"</item>
+ <item msgid="2270003903304578284">"लाइटबल्ब"</item>
+ <item msgid="4793496619091161864">"कॅलेंडर"</item>
+ <item msgid="5673625795644364100">"व्यत्यय आणू नका"</item>
+ <item msgid="1423820834865831361">"धावणारी व्यक्ती"</item>
+ <item msgid="2037298830718732608">"गोल्फ"</item>
+ <item msgid="2197835014443491074">"व्यायामशाळेतील डंबेल"</item>
+ <item msgid="2730180105015616518">"पोहणे"</item>
+ <item msgid="2666922823253345958">"हायकिंग करत असलेली व्यक्ती"</item>
+ <item msgid="8234880356472211396">"बॉल फेकत असलेली व्यक्ती"</item>
+ <item msgid="4642980625253001443">"किक मारत असलेली व्यक्ती"</item>
+ <item msgid="4324795269518833500">"गेम कंट्रोलर"</item>
+ <item msgid="7789966425125441125">"कलाकाराकडील कलर पॅलेट"</item>
+ <item msgid="663512680597461570">"स्नोफ्लेक"</item>
+ <item msgid="7952183800501346803">"समुद्रकिनाऱ्यावर वापरली जाणारी छत्री"</item>
+ <item msgid="799139025758265891">"कारखान्यातील अवजारे"</item>
+ <item msgid="8112685757657659269">"पियानो"</item>
+ <item msgid="3861584909935022342">"फिल्म रील"</item>
+ <item msgid="5827426100157335512">"पुस्तक"</item>
+ <item msgid="8585828346253128384">"कमळाचे फूल"</item>
+ <item msgid="8788370542815300188">"व्यक्तीचे मन"</item>
+ <item msgid="7287354964767553293">"हेडफोन"</item>
+ <item msgid="2530059623783800987">"टीव्ही"</item>
+ <item msgid="5307182323469376758">"ट्रेन"</item>
+ <item msgid="4903790544026923026">"कार"</item>
+ <item msgid="5010405583912314582">"काटा आणि सुरी"</item>
+ <item msgid="8939998598599064900">"शॉपिंग कार्ट"</item>
+ <item msgid="3379605903308731893">"लहान मूल"</item>
+ <item msgid="7808668968550293112">"प्राण्याचा पंजा"</item>
+ <item msgid="1000692647524056504">"स्टार बॅज"</item>
+ <item msgid="8270261073421676502">"दोन लोक"</item>
+ <item msgid="5767782819651505460">"तारा"</item>
+ <item msgid="4368451291862729334">"हार्ट"</item>
+ <item msgid="2613199102208419986">"हाउस"</item>
+ <item msgid="3022279986430275040">"अर्धचंद्र"</item>
+ <item msgid="5421089790869483206">"घड्याळ"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 75b31a2..16324cf 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"नवीन डिव्हाइससोबत पेअर करा"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ब्लूटूथ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"उद्या आपोआप सुरू करा"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"तुम्ही ब्लूटूथ बंद केल्यास, ते पुढील दिवशी पुन्हा सुरू होते"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"उजवा कान पेअर करा"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"डावा कान पेअर करा"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"तुमचा दुसरा कान पेअर करा"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ब्लूटूथ LE ऑडिओ बंद करा"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"डिव्हाइसला LE ऑडिओ हार्डवेअरसंबंधित क्षमतांचा सपोर्ट असल्यास, ब्लूटूथ LE ऑडिओ वैशिष्ट्य बंद करते."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ब्लूटूथ LE ऑडिओ मोड"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ब्लूटूथ LE ऑडिओ ब्रॉडकास्ट UI पूर्वावलोकन सुरू करा"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"वैयक्तिक ऑडिओ शेअरिंग आणि खाजगी ब्रॉडकास्ट यांच्या समावेशासह LE ऑडिओ शेअरिंग UI पूर्वावलोकन सुरू करते"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"डिव्हाइस तपशील यांत LE ऑडिओ टॉगल दाखवा"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ब्लूटूथ LE ऑडिओ अनुमती सूची बायपास करा"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"अनुमती सूचीच्या निकषांची पूर्तता करण्यासाठी LE ऑडिओ पेरिफेरलची पडताळणी केली नसली, तरीही बाय डीफॉल्ट LE ऑडिओ वापरा."</string>
@@ -139,7 +142,7 @@
<string name="stylus_default_notes_app" msgid="4165657465911764628">"टेल बटण प्रेस करा"</string>
<string name="stylus_default_notes_summary_work" msgid="4554643411627934223">"<xliff:g id="APP_NAME">%s</xliff:g> (कार्य प्रोफाइल)"</string>
<string name="stylus_textfield_handwriting" msgid="2363579035338976327">"मजकूर फील्डमध्ये लिहा"</string>
- <string name="stylus_ignore_button" msgid="7734540973145241391">"सर्व स्टायलस बटण दाबण्याकडे दुर्लक्ष करा"</string>
+ <string name="stylus_ignore_button" msgid="7734540973145241391">"सर्व स्टायलस बटण प्रेसकडे दुर्लक्ष करा"</string>
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"स्टायलस"</string>
<string name="date_and_time" msgid="1788358029823431692">"तारीख आणि वेळ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"प्रॉक्सी"</string>
@@ -167,7 +170,7 @@
<string name="language_picker_category_title" msgid="1792199453060454565">"प्राधान्य असलेल्या भाषेचा क्रम"</string>
<string name="desc_current_default_language" msgid="1901157141663662859">"सिस्टीमची भाषा"</string>
<string name="locale_remove_menu" msgid="3521546263421387474">"काढा"</string>
- <string name="add_a_language" msgid="2126220398077503271">"एक भाषा जोडा"</string>
+ <string name="add_a_language" msgid="2126220398077503271">"भाषा जोडा"</string>
<string name="app_locale_preference_title" msgid="5513627099300360232">"भाषा"</string>
<string name="locale_picker_category_title" msgid="6212064706962721255">"प्राधान्य दिलेली भाषा"</string>
<string name="app_locales_picker_menu_title" msgid="7617427959223831373">"ॲपच्या भाषा"</string>
@@ -180,7 +183,7 @@
<string name="desc_no_available_supported_locale" msgid="7883271726226947273">"या अॅपसाठीची भाषा निवडणे हे सेटिंग्ज मध्ये उपलब्ध नाही."</string>
<string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"अॅपमध्ये उपलब्ध असलेल्या भाषांपेक्षा भाषा वेगळी असू शकते. काही अॅप्स कदाचित या सेटिंगला सपोर्ट करत नाहीत."</string>
<string name="desc_app_locale_selection_supported" msgid="6744909281573556379">"प्रत्येक ॲपसाठी भाषा सेट करा."</string>
- <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"तुमचे डिव्हाइस, अॅप्स आणि वेबसाइट या तुमच्या प्राधान्य दिलेल्या भाषा सूचीमधील पहिली सपोर्ट असलेली भाषा वापरतात.\n\nअनेक ॲप्स तुमच्या प्राध्यान्य दिलेल्या भाषेतील प्रदेशाचा वापर तारखा, संख्या आणि युनिट फॉरमॅट करण्यासाठी करतील. तुमचा प्रदेश बदलण्यासाठी भाषा जोडा त्यानंतर तुम्ही प्राधान्य दिलेली भाषा निवडा."</string>
+ <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"तुमचे डिव्हाइस, अॅप्स आणि वेबसाइट या तुमच्या प्राधान्य दिलेल्या भाषा सूचीमधील पहिली सपोर्ट असलेली भाषा वापरतात.\n\nअनेक ॲप्स तुमच्या प्राध्यान्य दिलेल्या भाषेतील प्रदेशाचा वापर तारखा, अंक आणि एकके फॉरमॅट करण्यासाठीदेखील करतील. तुमचा प्रदेश बदलण्यासाठी भाषा जोडा त्यानंतर तुम्ही प्राधान्य दिलेली भाषा निवडा."</string>
<string name="desc_notice_of_language_picker" msgid="3449290526457925447">"प्रत्येक अॅपसाठी भाषा निवडण्यासाठी, अॅप भाषा सेटिंग्जवर जा."</string>
<string name="desc_locale_helper_footer_general" msgid="6112153921151780303">"ॲपच्या भाषांविषयी अधिक जाणून घ्या"</string>
<string name="title_change_system_locale" msgid="8589844586256566951">"सिस्टीमची भाषा %s वर बदलायची आहे का ?"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"तुमचे नेटवर्क आणि वायरलेस सिग्नल वापरून आपोआप सेट करा"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ऑटोमॅटिक टाइम झोन"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"तुमच्या जवळपासच्या मोबाइल नेटवर्कच्या आधारे आपोआप सेट करा"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"तुमचे डिव्हाइस स्थान उपलब्ध असल्यास, ते वापरून आपोआप सेट करा"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"लोकॅल डीफॉल्ट वापरा"</string>
<string name="date_time_24hour" msgid="286679379105653406">"२४ तास फॉरमॅट वापरा"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"वेळ"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"बोट उचला, नंतर पुन्हा सेन्सरला स्पर्श करा"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"फिंगरप्रिंट सेन्सर वापरू शकत नाही"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"दुरुस्तीच्या सेवा पुरवठादाराला भेट द्या."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"स्क्रीन बंद असताना फिंगरप्रिंट अनलॉक"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"स्क्रीन बंद असतानादेखील फिंगरप्रिंट अनलॉक वापरा"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"स्क्रीन बंद असताना अनलॉक करा"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"आणखी सुरक्षा सेटिंग्ज"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"कार्य प्रोफाइल लॉक, एंक्रिप्शन आणि आणखी बरेच काही"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"एंक्रिप्शन, क्रेडेंशियल आणि आणखी बरेच काही"</string>
@@ -669,7 +674,7 @@
<string name="fingerprint_delete_title" msgid="5412123164503407098">"\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' हटवा"</string>
<string name="fingerprint_last_delete_message_profile_challenge" msgid="4104208067277655068">"तुम्ही तुमची फिंगरप्रिंट तुमचे कार्य प्रोफाइल अनलॉक करण्यासाठी, खरेदी ऑथोराइझ करण्यासाठी किंवा कार्य ॲप्समध्ये साइन इन करण्यासाठी वापरू शकणार नाही."</string>
<string name="encryption_settings_title" msgid="2848716008695618360">"एंक्रिप्शन"</string>
- <string name="encrypted_summary" msgid="545623487587251207">"एंक्रिप्ट केले"</string>
+ <string name="encrypted_summary" msgid="545623487587251207">"एन्क्रिप्ट केले"</string>
<string name="no_screen_lock_issue_title" msgid="1814109590692792891">"स्क्रीन लॉक सेट करा"</string>
<string name="no_screen_lock_issue_summary" msgid="2383217853510608406">"अतिरिक्त सुरक्षेसाठी, या डिव्हाइसकरिता पिन, पॅटर्न किंवा पासवर्ड सेट करा."</string>
<string name="no_screen_lock_issue_action_label" msgid="2691229130486382863">"स्क्रीन लॉक सेट करा"</string>
@@ -1287,7 +1292,7 @@
<string name="dark_ui_activation_on_auto" msgid="4824339634784765049">"सूर्योदयापर्यंत सुरू करा"</string>
<string name="dark_ui_activation_off_auto" msgid="9136717444658505208">"सूर्यास्तापर्यंत बंद करा"</string>
<string name="dark_ui_title" msgid="3373976268671557416">"गडद मोड"</string>
- <string name="dark_ui_auto_mode_title" msgid="9027528859262295099">"शेड्युल करा"</string>
+ <string name="dark_ui_auto_mode_title" msgid="9027528859262295099">"शेड्यूल करा"</string>
<string name="dark_ui_auto_mode_never" msgid="3980412582267787662">"काहीही नाही"</string>
<string name="dark_ui_auto_mode_auto" msgid="6658909029498623375">"सूर्यास्त ते सूर्योदय सुरू राहते"</string>
<string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"कस्टम वेळी सुरू होते"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"कीबोर्ड एकसारख्या की झटपट वारंवार प्रेस करण्याकडे दुर्लक्ष करतो"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"बाउन्स कीची मर्यादा"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"तुमचा कीबोर्ड वारंवार की प्रेस करण्याकडे दुर्लक्ष करतो तो कालावधी निवडा"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"०.२से"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"०.४से"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"०.६से"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"०.२से"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"०.४से"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"०.६से"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"कस्टम"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"कस्टम मूल्य"</string>
<string name="slow_keys" msgid="2891452895499690837">"स्लो की"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ॲक्टिव्हेट करण्यासाठी की प्रेस करण्याकरिता लागणारा वेळ ॲडजस्ट करतात"</string>
<string name="sticky_keys" msgid="7317317044898161747">"स्टिकी की"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"की एकत्र धरून ठेवण्याऐवजी शॉर्टकटसाठी एकावेळी एक की प्रेस करा"</string>
<string name="mouse_keys" msgid="6237254627808525540">"माउस की"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"माउस की वापरा"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"पॉइंटर नियंत्रित करण्यासाठी तुमचा कीबोर्ड वापरा"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"माउस रिव्हर्स स्क्रोलिंग"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"पेज खाली हलवण्यासाठी वरती स्क्रोल करा"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"डावे व उजवे बटण स्वॅप करा"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"माऊसच्या डाव्या बटणाला तुमचे उजवे बटण म्हणून वापरा"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> साठी माउस की"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"माउस पॉइंटर हलवण्यासाठी <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> की वापरा"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"प्राथमिक माउस बटणावर क्लिक करण्यासाठी <xliff:g id="CLICK_LABEL">%s</xliff:g> की वापरा"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"प्रेस करण्यासाठी <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> की वापरा आणि प्राथमिक माउस बटण धरून ठेवा"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"प्राथमिक माउस बटण रिलीझ करण्यासाठी <xliff:g id="RELEASE_LABEL">%s</xliff:g> की वापरा"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"स्क्रोल मोड टॉगल करण्यासाठी <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> वापरा. हे <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> की ला वरती, खाली, डावीकडील किंवा उजवीकडील दृश्यावर स्क्रोल करू देईल"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"दुय्यम माउस बटणावर क्लिक करण्यासाठी <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> की वापरा"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"कीबोर्ड शॉर्टकट"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"शॉर्टकटची सूची दाखवा"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"कार्य प्रोफाइल कीबोर्ड आणि टूल"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> साठी नवीन की निवडा:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"वास्तविक कीबोर्ड अॅक्सेसिबिलिटी"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"स्टिकी की, बाउन्स की, माउस की"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"की रिपीट करा"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"रिपीट करण्यापूर्वीचा विलंब"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"रिपीट करण्याचा दर"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"एखादी की रिलीझ करेपर्यंत तिचा वर्ण रिपीट करण्यासाठी ती की धरून ठेवा"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> लेआउट"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"डीफॉल्ट"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ऑटोमॅटिक: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2359,9 +2370,9 @@
<string name="accessibility_font_scaling_auto_added_qs_tooltip_content" msgid="7229921960884718332">"क्विक सेटिंग्ज मध्ये फॉंटचा आकार जोडला आहे. फॉंटचा आकार बदलण्यासाठी खाली स्वाइप करा."</string>
<string name="accessibility_quick_settings_tooltip_dismiss" msgid="3269120277643884190">"डिसमिस करा"</string>
<string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"रंग सुधारणा वापरा"</string>
- <string name="accessibility_daltonizer_shortcut_title" msgid="7480360363995502369">"रंग सुधारण्याचा शॉर्टकट"</string>
+ <string name="accessibility_daltonizer_shortcut_title" msgid="7480360363995502369">"रंग सुधारणा शॉर्टकट"</string>
<string name="accessibility_daltonizer_about_title" msgid="6063650804116981287">"रंग सुधारणेबद्दल"</string>
- <string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"रंग सुधारणेबद्दल अधिक जाणून घ्या"</string>
+ <string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"रंग सुधारणा याबद्दल अधिक जाणून घ्या"</string>
<string name="accessibility_color_inversion_about_title" msgid="8275754480247040136">"कलर इन्व्हर्जनबद्दल"</string>
<string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"कलर इन्व्हर्जनबद्दल अधिक जाणून घ्या"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"कॅप्शन दाखवा"</string>
@@ -2421,8 +2432,8 @@
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"ग्रेस्केल"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"तीव्रता"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"ग्रेस्केल मोडसाठी किंवा रंग सुधारणा बंद असताना उपलब्ध नाही"</string>
- <string name="daltonizer_mode_deuteranomaly_summary" msgid="391621040826073327">"आंशिक हरितवर्णांधता"</string>
- <string name="daltonizer_mode_protanomaly_summary" msgid="877971556622350648">"क्षीण रक्तवर्णांधता"</string>
+ <string name="daltonizer_mode_deuteranomaly_summary" msgid="391621040826073327">"द्वितीयवर्ण दृष्टिक्षीणता"</string>
+ <string name="daltonizer_mode_protanomaly_summary" msgid="877971556622350648">"प्रथमवर्ण दृष्टिक्षीणता"</string>
<string name="daltonizer_mode_tritanomaly_summary" msgid="2428218320118180070">"तृतीयवर्ण दृष्टिक्षीणता"</string>
<string name="reduce_bright_colors_preference_title" msgid="2249314004651574997">"आणखी डिम"</string>
<string name="reduce_bright_colors_switch_title" msgid="1751678397884065312">"स्क्रीन आणखी डिम करा"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"पॉवर वापर समायोजित करा"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"समाविष्ट पॅकेज"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"अॅप्स नेहमीप्रमाणे चालत आहेत"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"बॅटरी बदलण्याची शिफारस केली आहे"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"बॅटरी क्षमता आणि चार्जिंग परफॉर्मन्स कमी झाला असून, बॅटरी बदलण्याची शिफारस केली आहे."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"बॅटरीची पातळी कमी आहे"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"बॅटरी लाइफ वाढवण्यासाठी बॅटरी सेव्हर सुरू करा"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"बॅटरी लाइफ सुधारा"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"हे VPN डिस्कनेक्ट करायचे?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"डिस्कनेक्ट करा"</string>
<string name="vpn_version" msgid="6344167191984400976">"आवृत्ती"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"आवृत्ती <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN विसरा"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"विद्यमान VPN पुनर्स्थित करायचे?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"नेहमी-सुरू VPN सेट करायचे?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"आठवड्यातील दिवस सकाळी ९ - संध्याकाळी ५\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"कॅलेंडर इव्हेंट"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} अॅक्टिव्ह आहे}=2{{mode_1} आणि {mode_2} अॅक्टिव्ह आहेत}=3{{mode_1}, {mode_2} आणि{mode_3} अॅक्टिव्ह आहेत}other{{mode_1}, {mode_2} आणि आणखी # अॅक्टिव्ह आहेत}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{१ मोड आपोआप सुरू होऊ शकतो}other{# मोड आपोआप सुरू होऊ शकतात}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Do Not Disturb}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"सुरू आहे"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"सेट केलेला नाही"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"बंद केला आहे"</string>
@@ -3698,7 +3710,7 @@
<string name="notif_type_ongoing_summary" msgid="2348867528527573574">"वापरात असलेल्या ॲप्समधील सुरू असलेले संभाषण, नेव्हिगेशन, फोन कॉल आणि आणखी बरेच काही"</string>
<string name="notif_type_conversation" msgid="4383931408641374979">"संभाषणे"</string>
<string name="notif_type_conversation_summary" msgid="179142405410217101">"एसएमएस आणि इतर संभाषणे"</string>
- <string name="notif_type_alerting" msgid="4713073696855718576">"सूचना"</string>
+ <string name="notif_type_alerting" msgid="4713073696855718576">"नोटिफिकेशन"</string>
<string name="notif_type_alerting_summary" msgid="4681068287836313604">"सेटिंग्जनुसार रिंग किंवा व्हायब्रेट होऊ शकतो"</string>
<string name="notif_type_silent" msgid="6273951794420331010">"सायलंट"</string>
<string name="notif_type_silent_summary" msgid="7820923063105060844">"कधीही आवाज किंवा व्हायब्रेशन न करणाऱ्या सूचना"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"तुम्हाला थोड्या कालावधीमध्ये बरीच नोटिफिकेशन मिळतात, तेव्हा तुमचे डिव्हाइस त्याचा व्हॉल्यूम कमी करेल आणि स्क्रीनवरील सूचनांना २ मिनिटांपर्यंत कमी करेल. कॉल, अलार्म आणि प्राधान्य दिलेल्या संभाषणांवर परिणाम होत नाहीत. \n\nकूलडाउनदरम्यान मिळालेली नोटिफिकेशन स्क्रीनच्या वरून खालपर्यंत स्वाइप करून शोधली जाऊ शकतात."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"कार्य प्रोफाइलला लागू करा"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"कार्य प्रोफाइलच्या अॅप्सना लागू करा"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR मदतनीस सेवा"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"कोणत्याही इंस्टॉल केलेल्या अॅप्सनी VR मदतनीस सेवा म्हणून चालवण्यासाठी विनंती केली नाही."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> साठी VR सेवा प्रवेशाची अनुमती द्यायची?"</string>
@@ -3761,7 +3783,7 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"हे अॅप सूचना पाठवत नाही"</string>
<string name="notification_channels" msgid="1502969522886493799">"वर्गवाऱ्या"</string>
<string name="notification_channels_other" msgid="18159805343647908">"अन्य"</string>
- <string name="no_channels" msgid="4716199078612071915">"या ॲपने कोणत्याही सूचना पोस्ट केल्या नाहीत"</string>
+ <string name="no_channels" msgid="4716199078612071915">"या ॲपने कोणत्याही नोटिफिकेशन पोस्ट केल्या नाहीत"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"न वापरलेल्या वर्गवाऱ्या दाखवा"</string>
<string name="app_settings_link" msgid="6725453466705333311">"अॅपमधील अतिरिक्त सेटिंग्ज"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"न वापरलेल्या वर्गवाऱ्या दाखवा"</string>
@@ -4460,8 +4482,8 @@
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"एकहाती मोड कसा वापरायचा"</b>\n" • सिस्टीमच्या नेव्हिगेशन सेटिंग्जमध्ये जेश्चर नेव्हिगेशन निवडले असल्याची खात्री करा\n • स्क्रीनच्या तळाशी कडेजवळ खाली स्वाइप करा"</string>
<string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"पोहोचता येईल अशा अंतरावर स्क्रीन खेचा"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"स्क्रीनचा सर्वात वरचा भाग तुमच्या अंगठ्याने पोहोचण्याच्या अंतरावर येईल."</string>
- <string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"सूचना दाखवा"</string>
- <string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"सूचना आणि सेटिंग्ज दिसतील."</string>
+ <string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"नोटिफिकेशन दाखवा"</string>
+ <string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"नोटिफिकेशन आणि सेटिंग्ज दिसतील."</string>
<string name="ambient_display_summary" msgid="2650326740502690434">"वेळ, सूचना आणि इतर माहिती तपासण्यासाठी, तुमच्या स्क्रीनवर दोनदा टॅप करा."</string>
<string name="ambient_display_wake_screen_title" msgid="7637678749035378085">"वेक अप डिस्प्ले"</string>
<string name="ambient_display_tap_screen_summary" msgid="4480489179996521405">"वेळ, सूचना आणि इतर माहिती तपासण्यासाठी तुमच्या स्क्रीनवर टॅप करा."</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"स्ट्रीम ऐका"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> वापरून ऐकण्यासाठी ऑडिओ स्ट्रीमचा QR कोड स्कॅन करा"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"शेअर करताना पासवर्ड संपादित करू शकत नाही. पासवर्ड बदलण्यासाठी सर्वप्रथम ऑडिओ शेअरिंग बंद करा."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"तुमच्या पासवर्डमध्ये ४ ते १६ वर्णांचा समावेश असणे आवश्यक आहे आणि फक्त अक्षरे, नंबर व चिन्हे वापरा"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR कोड स्कॅनर"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"मदत हवी आहे का?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"शोध सेटिंग्ज"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"केवळ डिव्हाइस"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"खात्यासह नवीन संपर्क सिंक केले जाणार नाहीत"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"संपर्क हे तुमच्या डिव्हाइसमध्ये सेव्ह केले जातील आणि बाय डीफॉल्ट तुमच्या खात्यामध्ये सिंक केले जातील"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"कोणतेही डीफॉल्ट अकाउंट सेट केलेले नाही"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"डीफॉल्ट खाते सेट करताना एरर आली"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"कोणतेही डीफॉल्ट अकाउंट सेट केलेले नाही"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"केवळ डिव्हाइस"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"सुरू करण्यासाठी एखादे खाते जोडा"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"शोधण्यासाठी वर्तुळ करा"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"तुमच्या स्क्रीनवरील आशय वापरून शोधण्यासाठी होम बटण किंवा नेव्हिगेशन हँडल स्पर्श करून धरून ठेवा."</string>
</resources>
diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml
index 5d03f09..9065ddb 100644
--- a/res/values-ms/arrays.xml
+++ b/res/values-ms/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Beg bimbit"</item>
+ <item msgid="184985872234062767">"Bangunan klasik"</item>
+ <item msgid="9189550412466785530">"Bangunan pangsapuri"</item>
+ <item msgid="2142527562511049422">"Gelembung pertuturan"</item>
+ <item msgid="2548100558260478605">"Kumpulan orang"</item>
+ <item msgid="2270003903304578284">"Mentol lampu"</item>
+ <item msgid="4793496619091161864">"Kalendar"</item>
+ <item msgid="5673625795644364100">"Jangan Ganggu"</item>
+ <item msgid="1423820834865831361">"Orang sedang berlari"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Dumbel gim"</item>
+ <item msgid="2730180105015616518">"Berenang"</item>
+ <item msgid="2666922823253345958">"Orang mengembara berjalan kaki"</item>
+ <item msgid="8234880356472211396">"Orang membaling bola"</item>
+ <item msgid="4642980625253001443">"Orang menendang"</item>
+ <item msgid="4324795269518833500">"Pengawal permainan"</item>
+ <item msgid="7789966425125441125">"Palet warna pelukis"</item>
+ <item msgid="663512680597461570">"Emping salji"</item>
+ <item msgid="7952183800501346803">"Payung pantai"</item>
+ <item msgid="799139025758265891">"Alatan bengkel"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Gelendong filem"</item>
+ <item msgid="5827426100157335512">"Buku"</item>
+ <item msgid="8585828346253128384">"Bunga teratai"</item>
+ <item msgid="8788370542815300188">"Minda seseorang"</item>
+ <item msgid="7287354964767553293">"Fon kepala"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Kereta api"</item>
+ <item msgid="4903790544026923026">"Kereta"</item>
+ <item msgid="5010405583912314582">"Garpu dan pisau"</item>
+ <item msgid="8939998598599064900">"Troli beli-belah"</item>
+ <item msgid="3379605903308731893">"Anak"</item>
+ <item msgid="7808668968550293112">"Tapak kaki haiwan"</item>
+ <item msgid="1000692647524056504">"Lencana bintang"</item>
+ <item msgid="8270261073421676502">"Dua orang"</item>
+ <item msgid="5767782819651505460">"Bintang"</item>
+ <item msgid="4368451291862729334">"Hati"</item>
+ <item msgid="2613199102208419986">"Rumah"</item>
+ <item msgid="3022279986430275040">"Bulan separa"</item>
+ <item msgid="5421089790869483206">"Jam"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index e57fa19..14f7ca3 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Gandingkan peranti baharu"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Hidupkan secara automatik pada hari esok"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Bluetooth yang dimatikan akan dihidupkan semula hari esoknya"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Gandingkan telinga kanan"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Gandingkan telinga kiri"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Gandingkan telinga lagi satu"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Lumpuhkan Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Melumpuhkan ciri Bluetooth LE Audio jika peranti menyokong keupayaan perkakasan LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Mod Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Dayakan pratonton UI Siaran Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Dayakan pratonton UI Perkongsian LE Audio termasuk perkongsian audio peribadi dan siaran peribadi"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Tunjukkan togol LE Audio pada Butiran Peranti"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Abaikan Senarai Dibenarkan Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Gunakan LE Audio secara lalai walaupun persisian LE Audio belum disahkan sebagai memenuhi kriteria Senarai Dibenarkan."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Tetapkan secara automatik menggunakan isyarat rangkaian dan wayarles anda"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Zon waktu automatik"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Tetapkan secara automatik berdasarkan rangkaian mudah alih berdekatan anda"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Tetapkan secara automatik menggunakan lokasi peranti anda, jika tersedia"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Gunakan tetapan lalai tempat peristiwa"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Gunakan format 24 jam"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Masa"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Angkat jari, kemudian sentuh penderia sekali lagi"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Tidak dapat menggunakan penderia cap jari"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Lawati penyedia pembaikan."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Buka Kunci Cap Jari Semasa Skrin Mati"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Gunakan Buka Kunci Cap Jari walaupun semasa skrin dimatikan"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Skrin dimatikan, Buka kunci"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Lagi tetapan keselamatan"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Kunci profil kerja, penyulitan dan banyak lagi"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Penyulitan, bukti kelayakan dan banyak lagi"</string>
@@ -608,8 +613,8 @@
<string name="private_space_hide_dialog_button" msgid="4157191429310035457">"OK"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_delete_title" msgid="636873505724100006">"Padamkan ruang persendirian"</string>
- <string name="private_space_delete_header" msgid="4594429153176776184">"Padamkan ruang privasi?"</string>
- <string name="private_space_delete_summary" msgid="7507302208399543921">"Ruang privasi anda akan dipadamkan secara kekal daripada peranti anda. \n\nSemua apl dalam ruang anda dan data apl juga akan dipadamkan secara kekal daripada "<b>"storan dalaman"</b>" telefon anda."</string>
+ <string name="private_space_delete_header" msgid="4594429153176776184">"Padamkan ruang persendirian?"</string>
+ <string name="private_space_delete_summary" msgid="7507302208399543921">"Ruang persendirian anda akan dipadamkan secara kekal daripada peranti anda. \n\nSemua apl dan data dalam ruang anda juga akan dipadamkan secara kekal daripada "<b>"storan dalaman"</b>" telefon anda."</string>
<string name="private_space_accounts" msgid="1078277762792056395">"Akaun yang berikut akan dialih keluar daripada ruang persendirian anda:"</string>
<string name="private_space_delete_button_label" msgid="1256981385318225002">"Padam"</string>
<string name="private_space_confirm_deletion_header" msgid="3468651585498942977">"Memadamkan ruang privasi…"</string>
@@ -631,8 +636,8 @@
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Sentiasa ingat"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apl dihentikan apabila anda mengunci ruang anda"</b>\n"Apabila anda mengunci ruang anda, apl dalam ruang anda akan dihentikan dan anda tidak akan menerima pemberitahuan daripada apl itu"</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"Ruang privasi tidak sesuai untuk apl yang perlu dijalankan pada latar atau menghantar pemberitahuan genting seperti apl perubatan. Hal ini kerana pemberitahuan dan aktiviti latar dihentikan semasa ruang anda dikunci.\n\nApl dalam ruang privasi tidak akan dipaparkan dalam pengurus kebenaran, papan pemuka privasi dan tetapan lain apabila ruang privasi dikunci.\n\nRuang privasi anda tidak boleh dialihkan kepada peranti baharu. Anda perlu menyediakan ruang privasi lain jika anda mahu menggunakan ruang privasi itu pada peranti lain.\n\nSesiapa sahaja yang menyambungkan peranti anda kepada komputer atau memasang apl berbahaya pada peranti anda mungkin dapat mengakses ruang privasi anda."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Ruang privasi tidak sesuai untuk apl yang perlu dijalankan pada latar atau menghantar pemberitahuan genting seperti apl perubatan. Hal ini kerana pemberitahuan dan aktiviti latar dihentikan semasa ruang anda dikunci.\n\nApl dalam ruang privasi tidak akan dipaparkan dalam pengurus kebenaran, papan pemuka privasi dan tetapan lain apabila ruang privasi dikunci.\n\nRuang privasi anda tidak boleh dipulihkan pada peranti baharu. Anda perlu menyediakan ruang privasi lain jika anda mahu menggunakan ruang privasi pada peranti lain.\n\nSesiapa sahaja yang menyambungkan peranti anda kepada komputer atau memasang apl berbahaya pada peranti anda mungkin dapat mengakses ruang privasi anda."</string>
- <string name="private_space_learn_more_text" msgid="5314198983263277586">"Ketahui lebih lanjut tentang ruang privasi"</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Ruang persendirian tidak sesuai untuk apl yang perlu dijalankan pada latar atau menghantar pemberitahuan genting seperti apl perubatan. Hal ini kerana pemberitahuan dan aktiviti latar dihentikan semasa ruang anda dikunci.\n\nApl dalam ruang persendirian tidak akan dipaparkan dalam pengurus kebenaran, papan pemuka privasi dan tetapan lain apabila ruang persendirian dikunci.\n\nRuang persendirian anda tidak boleh dipulihkan pada peranti baharu. Anda perlu menyediakan ruang persendirian lain jika anda mahu menggunakan ruang persendirian pada peranti lain.\n\nSesiapa sahaja yang menyambungkan peranti anda kepada komputer atau memasang apl berbahaya pada peranti anda mungkin dapat mengakses ruang persendirian anda."</string>
+ <string name="private_space_learn_more_text" msgid="5314198983263277586">"Ketahui lebih lanjut tentang ruang persendirian"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Proses ini akan mengambil sedikit masa"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Menyediakan ruang privasi…"</string>
<string name="private_space_error_screen_title" msgid="739381738044418346">"Tidak dapat menyediakan ruang peribadi"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Papan kekunci mengabaikan tekanan kekunci yang sama secara berulang"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Ambang kekunci lantun"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Pilih tempoh masa papan kekunci anda mengabaikan tekanan kekunci yang berulang"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Tersuai"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"nilai tersuai"</string>
<string name="slow_keys" msgid="2891452895499690837">"Kekunci perlahan"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Laraskan masa yang diambil untuk mengaktifkan tekanan kekunci"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Kekunci Lekit"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Tekan satu kekunci pada satu-satu masa untuk pintasan, bukan menahan beberapa kekunci secara serentak"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Kekunci tetikus"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Gunakan kekunci tetikus"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Gunakan papan kekunci anda untuk mengawal penuding"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Penatalan terbalik tetikus"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Tatal ke atas untuk menggerakkan halaman ke bawah"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Tukar butang kiri ke kanan dan kanan ke kiri"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Gunakan butang tetikus kiri sebagai klik kanan anda"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Kekunci tetikus untuk <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Gunakan kekunci <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> untuk menggerakkan penuding tetikus"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Gunakan kekunci <xliff:g id="CLICK_LABEL">%s</xliff:g> untuk mengklik butang tetikus utama"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Gunakan kekunci <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> untuk menekan & menahan butang tetikus utama"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Gunakan kekunci <xliff:g id="RELEASE_LABEL">%s</xliff:g> untuk melepaskan butang tetikus utama"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Gunakan kekunci <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> untuk menogol mod tatal. Fungsi ini akan membolehkan kekunci <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> menatal paparan ke atas, bawah, kiri atau kanan"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Gunakan kekunci <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> untuk mengklik butang tetikus kedua"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Pintasan papan kekunci"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Tunjukkan senarai pintasan"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Papan kekunci & alatan profil kerja"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Pilih kunci baharu untuk <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Kebolehaksesan papan kekunci fizikal"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Kekunci lekit, Kekunci lantun, Kekunci tetikus"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Kekunci Berulang"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Lengah sebelum ulang"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Kadar Pengulangan"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Tahan kekunci ke bawah untuk mengulangi aksara tersebut sehingga kekunci tersebut dilepaskan"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Reka letak <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Lalai"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2218,7 +2229,7 @@
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"Untuk memulakan dan menghentikan pembesaran, ketik skrin dua kali dengan pantas menggunakan %1$d jari"</string>
<string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{Untuk menggunakan ciri ini, leret ke bawah daripada bahagian atas skrin anda. Kemudian, cari jubin {featureName}.}other{Untuk menggunakan ciri ini, leret ke bawah daripada bahagian atas skrin anda menggunakan # jari. Kemudian, cari jubin {featureName}.}}"</string>
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"Pintasan ini akan tersedia selepas anda menyelesaikan persediaan peranti."</string>
- <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Untuk menggunakan ciri ini, leret ke atas dari bahagian bawah skrin dengan menggunakan 2 jari.\n\nUntuk menukar antara ciri, leret ke atas dengan menggunakan 2 jari dan tahan."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Untuk menggunakan ciri ini, leret ke atas dari bawah skrin dengan 2 jari.\n\nUntuk beralih antara ciri, leret ke atas dengan 2 jari dan tahan."</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{Untuk menggunakan ciri ini, leret ke atas daripada bahagian bawah skrin anda}other{Untuk menggunakan ciri ini, leret ke atas menggunakan # jari daripada bahagian bawah skrin anda}}"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Untuk menggunakan ciri ini, leret ke atas dari bahagian bawah skrin dengan menggunakan 3 jari.\n\nUntuk menukar antara ciri, leret ke atas dengan menggunakan 3 jari dan tahan."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Untuk menggunakan ciri kebolehcapaian, leret ke atas dari bahagian bawah skrin dengan menggunakan 2 jari.\n\nUntuk menukar antara ciri, leret ke atas dengan menggunakan 2 hari dan tahan."</string>
@@ -2235,7 +2246,7 @@
<string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"Ketik butang terapung"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"Gerak isyarat kebolehaksesan"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"Ketik butang kebolehaksesan <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> pada bahagian bawah skrin. Untuk beralih antara ciri, sentuh & tahan butang kebolehaksesan."</string>
- <string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Leret ke atas daripada bahagian bawah skrin. Untuk beralih antara ciri, leret ke atas dan tahan.}other{Leret ke atas menggunakan # jari daripada bahagian bawah skrin. Untuk beralih antara ciri, leret ke atas menggunakan # jari dan tahan.}}"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Leret ke atas dari bawah skrin. Untuk beralih antara ciri, leret ke atas dan tahan.}other{Leret ke atas menggunakan # jari dari bawah skrin. Untuk beralih antara ciri, leret ke atas menggunakan # jari dan tahan.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"Lagi pilihan"</annotation></string>
<string name="footer_learn_more_content_description" msgid="8843798273152131341">"Ketahui lebih lanjut tentang <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"Tetapan Pantas"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Laraskan penggunaan kuasa"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pakej yang disertakan"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apl berjalan seperti biasa"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Penggantian bateri disyorkan"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Kapasiti bateri dan prestasi pengecasan dikurangkan. Penggantian bateri disyorkan."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Aras bateri rendah"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Hidupkan Penjimat Bateri bagi melanjutkan hayat bateri"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Tingkatkan hayat bateri"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Putuskan sambungan VPN ini?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Putuskan sambungan"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versi"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versi <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Lupakan VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Gantikan VPN yang sedia ada?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Tetapkan VPN sentiasa hidup?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 PG - 5 PTG hari biasa\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Acara kalendar"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} aktif}=2{{mode_1} dan {mode_2} aktif}=3{{mode_1}, {mode_2} dan {mode_3} aktif}other{{mode_1}, {mode_2} dan # lagi aktif}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mod boleh dihidupkan secara automatik}other{# mod boleh dihidupkan secara automatik}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Jangan Ganggu}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"HIDUP"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Tidak ditetapkan"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Dilumpuhkan"</string>
@@ -3618,7 +3630,7 @@
<string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"Pemberitahuan profil kerja sensitif"</string>
<string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"Tunjukkan kandungan profil kerja sensitif apabila berkunci"</string>
<string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Tunjukkan semua kandungan pemberitahuan"</string>
- <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Tunjukkan kandungan sensitif ketika tidak berkunci"</string>
+ <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Papar kandungan sensitif hanya jika tidak berkunci"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Jangan tunjukkan pemberitahuan sama sekali"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="6326229471276829730">"Apakah yang mahu dipaparkan pada skrin kunci anda?"</string>
<string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Skrin kunci"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Apabila anda menerima banyak pemberitahuan dalam tempoh masa yang singkat, peranti anda akan mengurangkan kelantangan dan meminimumkan makluman hingga 2 minit. Panggilan, penggera dan perbualan keutamaan tidak terjejas. \n\nPemberitahuan yang diterima semasa tempoh bertenang boleh ditemukan dengan menarik ke bawah daripada bahagian atas skrin."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Gunakan pada profil kerja"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Gunakan pada apl profil kerja"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Perkhidmatan pembantu VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Tiada apl terpasang yang telah meminta untuk dijalankan sebagai perkhidmatan pembantu VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Benarkan akses perkhidmatan VR untuk <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3995,11 +4017,11 @@
<string name="app_launch_open_in_app" msgid="2208182888681699512">"Pada apl"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"Pada penyemak imbas"</string>
<string name="app_launch_top_intro_message" msgid="9037324384325518290">"Pilih cara membuka pautan web untuk apl ini"</string>
- <string name="app_launch_links_category" msgid="2380467163878760037">"Pautan untuk membuka apl ini"</string>
+ <string name="app_launch_links_category" msgid="2380467163878760037">"Pautan yang dapat dibuka pada apl ini"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"Pautan yang disokong"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"Pilihan lalai lain"</string>
<string name="app_launch_add_link" msgid="8622558044530305811">"Tambahkan pautan"</string>
- <string name="app_launch_footer" msgid="4521865035105622557">"Apl boleh mengesahkan pautan untuk membuka pautan secara automatik dalam apl."</string>
+ <string name="app_launch_footer" msgid="4521865035105622557">"Apl dapat mengesahkan pautan agar terbuka secara automatik dalam apl."</string>
<string name="app_launch_verified_links_title" msgid="621908751569155356">"{count,plural, =1{# pautan disahkan}other{# pautan disahkan}}"</string>
<string name="app_launch_verified_links_message" msgid="190871133877476176">"{count,plural, =1{Pautan ini telah disahkan dan dibuka secara automatik dalam apl ini.}other{Pautan ini telah disahkan dan dibuka secara automatik dalam apl ini.}}"</string>
<string name="app_launch_dialog_ok" msgid="1446157681861409861">"OK"</string>
@@ -4452,7 +4474,7 @@
<string name="keywords_button_navigation_settings" msgid="7888812253110553920">"navigasi, butang skrin utama"</string>
<string name="one_handed_title" msgid="2584414010282746195">"Mod sebelah tangan"</string>
<string name="one_handed_mode_enabled" msgid="3396864848786359651">"Gunakan mod sebelah tangan"</string>
- <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Pintasan mod satu tangan"</string>
+ <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Pintasan mod sebelah tangan"</string>
<string name="keywords_one_handed" msgid="969440592493034101">"kebolehjangkauan"</string>
<string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Leret ke bawah untuk"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"Gunakan pintasan untuk"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Dengar strim"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Imbas kod QR strim audio untuk mendengar dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Tidak dapat mengedit kata laluan semasa perkongsian. Untuk mengubah kata laluan, matikan perkongsian audio dahulu."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Kata laluan anda mestilah mengandungi 4-16 aksara dan hanya menggunakan huruf, nombor dan simbol"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Pengimbas kod QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Perlukan bantuan?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Carian Tetapan"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Peranti sahaja"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Kenalan baharu tidak akan disegerakkan dengan akaun"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kenalan akan disimpan pada peranti anda dan disegerakkan kepada akaun anda secara lalai"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Tiada akaun lalai ditetapkan"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Ralat semasa menetapkan akaun lalai"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Tiada akaun lalai ditetapkan"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Peranti sahaja"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Tambahkan akaun untuk bermula"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Bulatkan untuk Membuat Carian"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Sentuh dan tahan butang Skrin Utama atau pemegang navigasi untuk membuat carian menggunakan kandungan pada skrin anda."</string>
</resources>
diff --git a/res/values-my/arrays.xml b/res/values-my/arrays.xml
index fc7a275..d1ba32b 100644
--- a/res/values-my/arrays.xml
+++ b/res/values-my/arrays.xml
@@ -330,7 +330,7 @@
<item msgid="923916134548435468">"အလွန်သေး"</item>
<item msgid="5738147437573674872">"သေး"</item>
<item msgid="4691660235626027304">"အလယ်အလတ်"</item>
- <item msgid="824386705928670045">"အကြီးစား"</item>
+ <item msgid="824386705928670045">"ကြီး"</item>
<item msgid="2790561781512874585">"အလွန်ကြီး"</item>
</string-array>
<string-array name="captioning_edge_type_selector_titles">
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ရုံးသုံးလက်ဆွဲအိတ်"</item>
+ <item msgid="184985872234062767">"ရှေးဟောင်း အဆောက်အအုံ"</item>
+ <item msgid="9189550412466785530">"တိုက်ခန်း"</item>
+ <item msgid="2142527562511049422">"စကားပြော ပူဖောင်းကွက်"</item>
+ <item msgid="2548100558260478605">"လူအုပ်စု"</item>
+ <item msgid="2270003903304578284">"မီးလုံး"</item>
+ <item msgid="4793496619091161864">"ပြက္ခဒိန်"</item>
+ <item msgid="5673625795644364100">"မနှောင့်ယှက်ရ"</item>
+ <item msgid="1423820834865831361">"ပြေးနေသူ"</item>
+ <item msgid="2037298830718732608">"ဂေါက်ရိုက်ခြင်း"</item>
+ <item msgid="2197835014443491074">"အားကစားရုံ ဝိတ်တုံး"</item>
+ <item msgid="2730180105015616518">"ရေကူးခြင်း"</item>
+ <item msgid="2666922823253345958">"တောင်တက်နေသူ"</item>
+ <item msgid="8234880356472211396">"ဘောလုံးပစ်နေသူ"</item>
+ <item msgid="4642980625253001443">"ကန်နေသူ"</item>
+ <item msgid="4324795269518833500">"ဂိမ်းထိန်းချုပ်ကိရိယာ"</item>
+ <item msgid="7789966425125441125">"ပန်းချီပညာရှင် အရောင်အစုအဖွဲ့"</item>
+ <item msgid="663512680597461570">"နှင်းပွင့်"</item>
+ <item msgid="7952183800501346803">"ကမ်းခြေထီး"</item>
+ <item msgid="799139025758265891">"အလုပ်ရုံတူးလ်များ"</item>
+ <item msgid="8112685757657659269">"စန္ဒရား"</item>
+ <item msgid="3861584909935022342">"ဖလင်လိပ်"</item>
+ <item msgid="5827426100157335512">"စာအုပ်"</item>
+ <item msgid="8585828346253128384">"ကြာပန်း"</item>
+ <item msgid="8788370542815300188">"လူ့စိတ်"</item>
+ <item msgid="7287354964767553293">"နားကြပ်"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"ရထား"</item>
+ <item msgid="4903790544026923026">"ကား"</item>
+ <item msgid="5010405583912314582">"ဓား၊ ခက်ရင်း"</item>
+ <item msgid="8939998598599064900">"ဈေးခြင်းတောင်း"</item>
+ <item msgid="3379605903308731893">"ကလေး"</item>
+ <item msgid="7808668968550293112">"တိရစ္ဆာန်ဖဝါး"</item>
+ <item msgid="1000692647524056504">"ကြယ်ပွင့်တံဆိပ်"</item>
+ <item msgid="8270261073421676502">"လူနှစ်ဦး"</item>
+ <item msgid="5767782819651505460">"ကြယ်"</item>
+ <item msgid="4368451291862729334">"အသည်းပုံ"</item>
+ <item msgid="2613199102208419986">"အိမ်"</item>
+ <item msgid="3022279986430275040">"လခြမ်းတစ်ဝက်"</item>
+ <item msgid="5421089790869483206">"နာရီ"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index b0301a1..c57412b 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"စက်အသစ် တွဲချိတ်ရန်"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ဘလူးတုသ်"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"မနက်ဖြန် အလိုအလျောက်ဖွင့်ရန်"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"ဘလူးတုသ် ပိတ်ပါက ၎င်းကို နောက်နေ့တွင် ပြန်ဖွင့်ပါမည်"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ညာဘက်ကိုတွဲချိတ်ရန်"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ဘယ်ဘက်ကိုတွဲချိတ်ရန်"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"အခြားတစ်ဖက်တွဲချိတ်ခြင်း"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"‘ဘလူးတုသ် LE Audio’ ပိတ်ရန်"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"စက်က LE Audio ဟာ့ဒ်ဝဲစွမ်းရည်များကို ပံ့ပိုးလျှင် ဘလူးတုသ် LE Audio အင်္ဂါရပ်ကို ပိတ်သည်။"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ဘလူးတုသ် LE Audio မုဒ်"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"‘ဘလူးတုသ် LE Audio ထုတ်လွှင့်ခြင်း UI အစမ်းကြည့်ရှုမှု’ ကို ဖွင့်ရန်"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"ကိုယ်ပိုင်အော်ဒီယိုမျှဝေခြင်းနှင့် သီးသန့်ထုတ်လွှင့်ခြင်းတို့ အပါအဝင် ‘LE Audio မျှဝေခြင်း UI အစမ်းကြည့်ရှုမှု’ ကို ဖွင့်သည်"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"‘စက်အသေးစိတ်’ တွင် LE audio ခလုတ်ပြရန်"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"‘ဘလူးတုသ် LE Audio ခွင့်ပြုစာရင်း’ ကို ရှောင်ကွင်းရန်"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio အရန်ပစ္စည်းကို ‘ခွင့်ပြုစာရင်း’ သတ်မှတ်ချက်နှင့် ကိုက်ညီသည်ဟု အတည်ပြုမထားစေကာမူ LE Audio ကို မူရင်းသတ်မှတ်ချက်အတိုင်း သုံးနိုင်သည်။"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"သင့်ကွန်ရက်နှင့် ကြိုးမဲ့အချက်ပြမှုများသုံး၍ အလိုအလျောက်သတ်မှတ်သည်"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"အလိုအလျောက် ဒေသစံတော်ချိန်"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"သင့်အနီးရှိ မိုဘိုင်းကွန်ရက်များပေါ် အခြေခံ၍ အလိုအလျောက်သတ်မှတ်သည်"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ရနိုင်ပါက သင့်စက်တည်နေရာသုံး၍ အလိုအလျောက်သတ်မှတ်သည်"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ဒေသ၏ ဘာသာစကားစနစ်ကို သုံးရန်"</string>
<string name="date_time_24hour" msgid="286679379105653406">"၂၄-နာရီပုံစံကို အသုံးပြုရန်"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"အချိန်"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"လက်ချောင်းကို မ ပြီး၊ အာရုံခံနေရာကို ထပ်မံထိပါ"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"လက်ဗွေ အာရုံခံကိရိယာကို အသုံးပြု၍ မရပါ"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ပြုပြင်ရေး ဝန်ဆောင်မှုပေးသူထံသို့ သွားပါ။"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"စခရင်ပိတ်ထားစဉ် လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"စခရင်ပိတ်ထားလျှင်ပင် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို သုံးနိုင်သည်"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"စခရင်ပိတ်ထားသည်၊ ဖွင့်ရန်"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"နောက်ထပ် လုံခြုံရေးဆက်တင်များ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"အလုပ်ပရိုဖိုင်လော့ခ်၊ အသွင်ဝှက်ခြင်း စသည်"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"အသွင်ဝှက်ခြင်း၊ အထောက်အထားများ စသည်"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ကီးဘုတ်သည် ကီးတစ်ခုတည်း အကြိမ်ကြိမ် အမြန်နှိပ်ခြင်းကို လျစ်လျူရှုသည်"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"ကြိမ်ထပ်နှိပ်ခြင်းများ သတ်မှတ်ချက်"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ကီးအကြိမ်ကြိမ်နှိပ်ခြင်းကို ကီးဘုတ်က လျစ်လျူရှုမည့်ကြာချိန် ရွေးပါ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"၀.၂ စက္ကန့်"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"၀.၄ စက္ကန့်"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"၀.၆ စက္ကန့်"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"၀.၂ စက္ကန့်"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"၀.၄ စက္ကန့်"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"၀.၆ စက္ကန့်"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"စိတ်ကြိုက်"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"စိတ်ကြိုက်တန်ဖိုး"</string>
<string name="slow_keys" msgid="2891452895499690837">"အနှေးကီးများ"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ဖွင့်ရန် ကီးနှိပ်ခြင်းအတွက် ကြာချိန်ကို ပြင်ပေးသည်"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ကပ်ခွာကီးများ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ဖြတ်လမ်းလင့်ခ်များအတွက် ခလုတ်များကို တစ်ပြိုင်တည်းဖိထားမည့်အစား တစ်ကြိမ်လျှင် ခလုတ်တစ်ခု နှိပ်နိုင်သည်"</string>
<string name="mouse_keys" msgid="6237254627808525540">"မောက်စ်ကီးများ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"မောက်စ်ကီးများ သုံးရန်"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ညွှန်မှတ် ထိန်းချုပ်ရန် သင့်ကီးဘုတ်ကို သုံးပါ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"မောက်စ်ပြောင်းပြန်လှိမ့်ခြင်း"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"စာမျက်နှာအောက်သို့ ရွှေ့ရန်အတွက် အပေါ်သို့လှိမ့်ပါ"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ဘယ်နှင့်ညာခလုတ်များ ပြောင်းရန်"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ဘယ်ဘက်မောက်စ်ခလုတ်ကို ညာဘက်ခလုတ်အဖြစ် သုံးနိုင်သည်"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> အတွက် မောက်စ်ကီးများ"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"မောက်စ်ညွှန်မြားရွှေ့ရန် <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ကီးများကို သုံးပါ"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ပင်မမောက်စ်ခလုတ်ကို နှိပ်ရန် <xliff:g id="CLICK_LABEL">%s</xliff:g> ကီးကို သုံးပါ"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ပင်မမောက်စ်ခလုတ်ကို နှိပ်ထားရန် <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ကီးကို သုံးပါ"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ပင်မမောက်စ်ခလုတ်ကို လွှတ်လိုက်ရန် <xliff:g id="RELEASE_LABEL">%s</xliff:g> ကီးကို သုံးပါ"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"လှိမ့်ခြင်းမုဒ်သို့ ပြောင်းရန် <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ကီးကို သုံးပါ။ ၎င်းက <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ကီးများအား မြင်ကွင်းကို အပေါ်၊ အောက်၊ ဘယ် (သို့) ညာဘက်သို့ ရွှေ့စေမည်"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"အရန်မောက်စ်ခလုတ်ကို နှိပ်ရန် <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ကီးကို သုံးပါ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"လက်ကွက်ဖြတ်လမ်းများ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ဖြတ်လမ်းလင့်ခ်များစာရင်း ပြပါ"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"အလုပ်ပရိုဖိုင် လက်ကွက်နှင့် တူးလ်များ"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> အတွက် ကီးအသစ်ရွေးပါ-"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ပကတိကီးဘုတ် အများသုံးနိုင်မှု"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ကပ်ခွာကီး၊ တစ်ကြိမ်နှိပ်ကီး၊ မောက်စ်ကီး"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"ပြန်ကျော့ကီးများ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ပြန်မကျော့မီ ကြန့်ကြာချိန်"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ပြန်ကျော့နှုန်း"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ကီး၏အက္ခရာကို ပြန်ကျော့ရန် ဖိထားပြီးမှ လွှတ်လိုက်ပါ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> အပြင်အဆင်"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"မူရင်း"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"အလိုအလျောက်- <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2120,7 +2131,7 @@
<string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"ဆက်လုပ်မလား။"</string>
<string name="color_contrast_preview_email_title" msgid="198712116139754823">"အလုပ်ခရီးစဉ် အစီရင်ခံစာ"</string>
<string name="color_contrast_preview_email_body" msgid="2714343154965937945">"နောက်ထပ်အကူအညီအတွက် ကျွန်ုပ် (သို့) Helen ထံ ဆက်သွယ်ပေးပါ။ ဤအစီရင်ခံစာသည်"</string>
- <string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"ကလိုင်းယင့် ကုန်ကျစရိတ်များ"</string>
+ <string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"ဝယ်ယူသူ ကုန်ကျစရိတ်များ"</string>
<string name="color_contrast_about_title" msgid="5939566801408667867">"အရောင် အလင်းအမှောင်အကြောင်း"</string>
<string name="accessibility_turn_screen_darker_title" msgid="5986223133285858349">"ဖန်သားပြင်ကို ပိုမှောင်အောင်လုပ်ခြင်း"</string>
<string name="interaction_control_category_title" msgid="2696474616743882372">"အပြန်အလှန်ဆက်သွယ်ချက် ထိန်းချုပ်မှုများ"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ပါဝါအသုံးပြုမှုအား ချိန်တွယ်ခြင်း"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ပါဝင်သော ဆော့ဝဲလ်များ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"အက်ပ်များ ပုံမှန်လုပ်ဆောင်နေပါသည်"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ဘက်ထရီလဲရန် အကြံပြုထားသည်"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ဘက်ထရီသိုလှောင်နိုင်မှု ပမာဏနှင့် အားသွင်းမှုစွမ်းဆောင်ရည်တို့ လျော့ကျသွားပြီဖြစ်၍ ဘက်ထရီလဲရန် အကြံပြုပါသည်။"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ဘက်ထရီ အားနည်းနေသည်"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ဘက်ထရီသက်တမ်းရှည်စေရန် ‘ဘက်ထရီအားထိန်း’ ကို ဖွင့်ပါ"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ဘက်ထရီသက်တမ်း ပိုကောင်းအောင်လုပ်ပါ"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ဤ VPN အား ချိတ်ဆက်မှု ဖြုတ်လိုပါသလား။"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ဆက်သွယ်မှု ဖြတ်ရန်"</string>
<string name="vpn_version" msgid="6344167191984400976">"ဗားရှင်း"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ဗားရှင်း <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN ကိုမေ့လိုက်ပါ"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ရှိပြီးသား VPN ကိုအစားထိုးမလား။"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"VPN ကို အမြဲတမ်းဖွင့်ထားရန် သတ်မှတ်မလား။"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"“ကြားရက်များ နံနက် ၉ နာရီ - ညနေ ၅ နာရီ”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"ပြက္ခဒိန်အစီအစဉ်များ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ကို အသုံးပြုနေသည်}=2{{mode_1} နှင့် {mode_2} တို့ကို အသုံးပြုနေသည်}=3{{mode_1}၊ {mode_2} နှင့် {mode_3} တို့ကို အသုံးပြုနေသည်}other{{mode_1}၊ {mode_2} နှင့် နောက်ထပ် # ခုတို့ကို အသုံးပြုနေသည်}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{မုဒ် ၁ ခု အလိုအလျောက်ပွင့်နိုင်သည်}other{မုဒ် # ခု အလိုအလျောက်ပွင့်နိုင်သည်}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{မနှောင့်ယှက်ရ}=1{{mode_1}}=2{{mode_1}၊ {mode_2}}other{{mode_1}၊ {mode_2}၊ {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ဖွင့်"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"သတ်မှတ်မထားပါ"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ပိတ်ထားသည်"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"အချိန်တိုအတွင်း အကြောင်းကြားချက်များစွာ ရပါက သင့်စက်သည် ၂ မိနစ်ကြာသည်အထိ အသံတိုးပြီး သတိပေးချက်များကို လျှော့ချပါမည်။ ခေါ်ဆိုမှု၊ နှိုးစက်နှင့် ဦးစားပေးစကားဝိုင်းများကို မသက်ရောက်ပါ။ \n\nသတိပေးမှု လျှော့ချစဉ်အချိန်အတွင်း ရရှိသော အကြောင်းကြားချက်များကို ဖန်သားပြင်ထိပ်ပိုင်းမှ အောက်သို့ဆွဲချခြင်းဖြင့် တွေ့နိုင်သည်။"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"အလုပ်ပရိုဖိုင်များတွင် သုံးရန်"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"အလုပ်ပရိုဖိုင်အက်ပ်များတွင် သုံးရန်"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR အထောက်အကူပြု ဝန်ဆောင်မှုများ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ထည့်သွင်းထားသည့် မည်သည့်အက်ပ်ကိုမျှ VR အထောက်အကူပြု ဝန်ဆောင်မှုများအဖြစ် ဖွင့်ရန် တောင်းဆိုမထားပါ။"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> အတွက် VR ဝန်ဆောင်မှု အသုံးပြုခွင့်ပြုမလား။"</string>
@@ -3761,7 +3783,7 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"ဤအက်ပ်က အကြောင်းကြားချက် မပို့ပါ"</string>
<string name="notification_channels" msgid="1502969522886493799">"အမျိုးအစားများ"</string>
<string name="notification_channels_other" msgid="18159805343647908">"အခြား"</string>
- <string name="no_channels" msgid="4716199078612071915">"ဤအက်ပ်က မည်သည့် အကြောင်းကြားချက်ကိုမျှ ပို့စ်တင်မထားပါ"</string>
+ <string name="no_channels" msgid="4716199078612071915">"ဤအက်ပ်က မည်သည့် အကြောင်းကြားချက်ကိုမျှ တင်မထားပါ"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"မသုံးသော အမျိုးအစားများကို ပြပါ"</string>
<string name="app_settings_link" msgid="6725453466705333311">"အက်ပ်အတွင်း နောက်ထပ်ဆက်တင်များ"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"မသုံးသော အမျိုးအစားများကို ပြရန်"</string>
@@ -3800,9 +3822,9 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"ပြက္ခဒိန်အစီအစဉ်များ အတွင်း"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"မည်သည့်ပြက္ခဒိန်မဆို"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"ပြန်ကြားချက်က ဤသို့ဆိုလျှင်"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Yes၊ ဖြစ်နိုင်ပါသည်၊ သို့မဟုတ် မပြန်ကြားပါ"</string>
- <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Yes သို့မဟုတ် ဖြစ်နိုင်ပါသည်"</string>
- <string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"Yes"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"ပါဝင်မည်၊ ဖြစ်နိုင်၊ (သို့) မပြန်ကြားပါ"</string>
+ <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"ပါဝင်မည် (သို့) ဖြစ်နိုင်သည်"</string>
+ <string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"ပါဝင်မည်"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"စည်းမျဉ်းမတွေ့ပါ။"</string>
<string name="zen_mode_rule_summary_enabled_combination" msgid="1183604368083885789">"ဖွင့် <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_rule_summary_provider_combination" msgid="785343032708491365">"<xliff:g id="PACKAGE">%1$s</xliff:g>\n<xliff:g id="SUMMARY">%2$s</xliff:g>"</string>
@@ -4437,7 +4459,7 @@
<string name="keywords_system_navigation" msgid="3131782378486554934">"စနစ် လမ်းညွှန်ခြင်း၊ ခလုတ် ၂ ခု ဖြင့် လမ်းညွှန်ခြင်း၊ ခလုတ် ၃ ခု ဖြင့် လမ်းညွှန်ခြင်း၊ လက်ဟန်ဖြင့် လမ်းညွှန်ခြင်း၊ ပွတ်ဆွဲခြင်း"</string>
<string name="assistant_gesture_category_title" msgid="2478251256585807920">"ဒစ်ဂျစ်တယ်အထောက်အကူ"</string>
<string name="assistant_corner_gesture_title" msgid="1895061522687002106">"Assistant ကို ညွှန်ကြားရန် ပွတ်ဆွဲခြင်း"</string>
- <string name="assistant_corner_gesture_summary" msgid="5012534700233017955">"ဒစ်ဂျစ်တယ် Assistant အက်ပ်ကို ညွှန်ကြားရန် အောက်ခြေထောင့်မှ အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
+ <string name="assistant_corner_gesture_summary" msgid="5012534700233017955">"ဒစ်ဂျစ်တယ် အထောက်အကူ အက်ပ်ကို ညွှန်ကြားရန် အောက်ခြေထောင့်မှ အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
<string name="assistant_long_press_home_gesture_title" msgid="4865972278738178753">"Assistant အတွက် ပင်မခလုတ် နှိပ်ထားခြင်း"</string>
<string name="assistant_long_press_home_gesture_summary" msgid="592882226105081447">"ဒစ်ဂျစ်တယ်အထောက်အကူ အက်ပ်ကို ညွှန်ကြားရန် ပင်မခလုတ် နှိပ်ထားပါ။"</string>
<string name="low_label" msgid="6525629096999711220">"နိမ့်"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ထုတ်လွှင့်မှုကို နားထောင်ရန်"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ဖြင့် နားထောင်ရန် အသံ ထုတ်လွှင့်ခြင်း QR ကုဒ်ကို စကင်ဖတ်နိုင်သည်"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"မျှဝေစဉ် စကားဝှက်ကို ပြင်၍မရပါ။ စကားဝှက် ပြောင်းရန် အော်ဒီယို မျှဝေခြင်းကို ဦးစွာပိတ်ပါ။"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"သင်၏စကားဝှက်တွင် စာလုံး ၄-၁၆ လုံး ပါဝင်ရမည်ဖြစ်ပြီး အက္ခရာ၊ နံပါတ်နှင့် သင်္ကေတများကိုသာ သုံးပါ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR ကုဒ် စကင်ဖတ်စနစ်"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"အကူအညီလိုသလား။"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ဆက်တင်များတွင် ရှာရန်"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"စက်ပစ္စည်းသီးသန့်"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"အဆက်အသွယ်အသစ်များကို အကောင့်နှင့် စင့်ခ်လုပ်မည်မဟုတ်ပါ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"မူရင်းသတ်မှတ်ချက်အရ အဆက်အသွယ်များကို သင့်စက်တွင်သိမ်းပြီး အကောင့်နှင့် စင့်ခ်လုပ်ပါမည်"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ပုံသေ သတ်မှတ်မထားပါ"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"မူလအကောင့်ကို သတ်မှတ်ရာတွင် အမှားရှိသည်"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"မူလအကောင့် သတ်မှတ်မထားပါ"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"စက်ပစ္စည်းသီးသန့်"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"စတင်ရန် အကောင့်ထည့်ပါ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ရှာရန် ကွက်၍ဝိုင်းလိုက်ပါ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"သင့်စခရင်ပေါ်ရှိ အကြောင်းအရာသုံး၍ ရှာရန်အတွက် ပင်မခလုတ် (သို့) လမ်းညွှန်ဘားကို တို့ထိ၍ ဖိထားပါ။"</string>
</resources>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index cc9ee79..d217ad1 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Koffert"</item>
+ <item msgid="184985872234062767">"Klassisk bygning"</item>
+ <item msgid="9189550412466785530">"Boligblokk"</item>
+ <item msgid="2142527562511049422">"Snakkeboble"</item>
+ <item msgid="2548100558260478605">"Gruppe mennesker"</item>
+ <item msgid="2270003903304578284">"Lyspære"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Ikke forstyrr"</item>
+ <item msgid="1423820834865831361">"Person som løper"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Håndvekt"</item>
+ <item msgid="2730180105015616518">"Svømming"</item>
+ <item msgid="2666922823253345958">"Person som går tur"</item>
+ <item msgid="8234880356472211396">"Person som kaster en ball"</item>
+ <item msgid="4642980625253001443">"Person som sparker"</item>
+ <item msgid="4324795269518833500">"Spillkontroller"</item>
+ <item msgid="7789966425125441125">"Kunstnerfargepalett"</item>
+ <item msgid="663512680597461570">"Snøflak"</item>
+ <item msgid="7952183800501346803">"Strandparasoll"</item>
+ <item msgid="799139025758265891">"Verktøy på verksted"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Filmspole"</item>
+ <item msgid="5827426100157335512">"Bok"</item>
+ <item msgid="8585828346253128384">"Lotusblomst"</item>
+ <item msgid="8788370542815300188">"Sinnet til en person"</item>
+ <item msgid="7287354964767553293">"Hodetelefoner"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Tog"</item>
+ <item msgid="4903790544026923026">"Bil"</item>
+ <item msgid="5010405583912314582">"Kniv og gaffel"</item>
+ <item msgid="8939998598599064900">"Handlekurv"</item>
+ <item msgid="3379605903308731893">"Barn"</item>
+ <item msgid="7808668968550293112">"Dyrepote"</item>
+ <item msgid="1000692647524056504">"Stjernemerke"</item>
+ <item msgid="8270261073421676502">"To personer"</item>
+ <item msgid="5767782819651505460">"Stjerne"</item>
+ <item msgid="4368451291862729334">"Hjerte"</item>
+ <item msgid="2613199102208419986">"Hus"</item>
+ <item msgid="3022279986430275040">"Halvmåne"</item>
+ <item msgid="5421089790869483206">"Klokke"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 77c2884..af45c20 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Koble til en ny enhet"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Slå på automatisk i morgen"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Tilkoble høyre øre"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Tilkoble venstre øre"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Tilkoble det andre øret"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Slå av Bluetooth LE-lyd"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Slår av Bluetooth LE-lydfunksjonen hvis enheten støtter maskinvarefunksjoner for LE-lyd."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE-lydmodus"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Slå på forhåndsvisningen av brukergrensesnittet for kringkasting av Bluetooth LE-lyd"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Slår på forhåndsvisningen av brukergrensesnittet for kringkasting av Bluetooth LE-lyd, inkludert personlig lyddeling og privat kringkasting"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Vis LE-lyd-av/på-bryter i Enhetsdetaljer"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omgå godkjenningsliste for Bluetooth LE-lyd"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Bruk LE-lyd som standard, selv om det ikke er bekreftet at den eksterne LE-lydenheten overholder kriteriene for godkjenningslisten."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Angi automatisk med nettverket og trådløse signaler"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatisk tidssone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Angi automatisk basert på mobilnettverk i nærheten"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Angi automatisk med enhetsposisjonen, hvis tilgjengelig"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Bruk lokal standard"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Bruk 24-timers format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Tid"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Løft fingeren og legg den på sensoren igjen"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Kan ikke bruke fingeravtrykkssensoren"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Gå til en reparasjonsleverandør."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Opplåsing med fingeravtrykk når skjermen er av"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Bruk opplåsing med fingeravtrykk selv når skjermen er av"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Skjerm av, opplåsing"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Flere sikkerhetsinnstillinger"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Lås for jobbprofil, kryptering med mer"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Kryptering, legitimasjon med mer"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tastaturet ignorerer raskt gjentatte trykk på samme tast"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Grense for filtertaster"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Velg hvor lenge tastaturet skal ignorere gjentatte tastetrykk"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Egendefinert"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"egendefinert verdi"</string>
<string name="slow_keys" msgid="2891452895499690837">"Hengende taster"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Justerer tiden det tar før tastetrykk aktiveres"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Trege taster"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Aktiver hurtigtaster ved å trykke på én tast av gangen i stedet for å holde flere taster inne samtidig"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Museknapper"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Musetaster"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Bruk musetaster"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Bruk tastaturet til å kontrollere pekeren"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Omvendt rulling med musen"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Rull opp for å flytte siden ned"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Bytt om på venstre og høyre knapp"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Bruk venstre museknapp som høyre"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Musetaster for <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Bruk <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>-tastene for å flytte musepekeren"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Bruk <xliff:g id="CLICK_LABEL">%s</xliff:g>-tasten for å klikke på den primære museknappen"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Bruk <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>-tasten for å trykke og holde på den primære museknappen"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Bruk <xliff:g id="RELEASE_LABEL">%s</xliff:g>-tasten for å frigjøre den primære museknappen"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Bruk <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>-tasten for å slå rullemodus av og på. Da ruller <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g>-tastene visningen opp, ned, til venstre eller til høyre"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Bruk <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>-tasten for å klikke på den sekundære museknappen"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Hurtigtaster"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Vis listen over hurtigtaster"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastatur og verktøy i jobbprofilen"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Velg en ny tast for <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Tilgjengelighet med fysisk tastatur"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Trege taster, filtertaster, musetaster"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Gjenta taster"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Forsinkelse før gjentakelse"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Gjentakelseshastighet"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Hold en tast inne for å gjenta tegnet til du slipper opp tasten"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g>-oppsett"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Standard"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatisk: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Juster strømforbruk"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pakker"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Appene kjører som normalt"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Du bør bytte batteriet"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Batterikapasiteten og ladeeffekten er redusert, og det anbefales at du bytter batteriet."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Batterinivået er lavt"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Slå på batterisparing for å forlenge batterilevetiden"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Forbedre batterilevetiden"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vil du koble fra dette VPN-et?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Koble fra"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versjon"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versjon <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Glem VPN-profilen"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Vil du erstatte det nåværende VPN-et?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Vil du angi alltid på-VPN?"</string>
@@ -3402,7 +3415,7 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ingen}=1{1 tidsplan er angitt}other{# tidsplaner er angitt}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ikke forstyrr"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"Moduser"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"Reduser distraksjoner til et minimum, og ta kontroll på oppmerksomheten med moduser for søvn, jobb, kjøring og alt mulig annet."</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"Reduser distraksjoner til et minimum, og ta kontroll over oppmerksomheten med moduser for søvn, jobb, kjøring og alt mulig annet."</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Lag din egen modus"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Bli bare varslet av viktige personer og apper"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Angi en tidsplan"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"«9:00–17:00 på hverdager»"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalenderaktiviteter"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} er aktiv}=2{{mode_1} og {mode_2} er aktive}=3{{mode_1}, {mode_2} og {mode_3} er aktive}other{{mode_1}, {mode_2} og # til er aktive}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modus kan slås på automatisk}other{# moduser kan slås på automatisk}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ikke forstyrr}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"PÅ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ikke angitt"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Deaktivert"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Når du får mange varsler på kort tid, reduserer enheten volumet og minimerer varsler i opptil 2 minutter. Anrop, alarmer og prioriterte samtaler berøres ikke. \n\nDu kan se varsler du får mens dempingen er aktiv, ved å dra ned fra toppen av skjermen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Bruk for jobbprofiler"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Bruk for apper i jobbprofilen"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Hjelpetjenester for VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ingen av de installerte appene har bedt om å bli kjørt som hjelpetjeneste for VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Vil du tillate tjenestetilgang for VR for <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3929,12 +3952,12 @@
<string name="zen_mode_trigger_title_generic" msgid="1347753445938095789">"Appinnstillinger"</string>
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Informasjon og innstillinger i <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Administreres av <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Vil du slå av <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Denne modusen slås aldri på når den er slått av"</string>
- <string name="zen_mode_action_disable" msgid="3552921561331044881">"Slå av"</string>
- <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Vil du slå på <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
+ <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Vil du deaktivere <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Denne modusen blir aldri slått på når den er deaktivert"</string>
+ <string name="zen_mode_action_disable" msgid="3552921561331044881">"Deaktiver"</string>
+ <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Vil du aktivere <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Denne modusen kan slås på automatisk basert på innstillingene"</string>
- <string name="zen_mode_action_enable" msgid="1161480633223176531">"Slå på"</string>
+ <string name="zen_mode_action_enable" msgid="1161480633223176531">"Aktivér"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Angi en modus som følger en regelmessig tidsplan"</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Angi en modus for å synkronisere med kalenderaktiviteter og svare på invitasjoner"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"Lag en avslappende søvnrutine. Angi alarmer, demp skjermen og blokker varsler."</string>
@@ -4153,9 +4176,9 @@
<string name="zen_access_disabled_package_warning" msgid="6565908224294537889">"Må være slått på fordi varseltilgang er på"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Vil du trekke tilbake tilgangen til Ikke forstyrr for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Alle Ikke forstyrr-regler opprettet av denne appen blir fjernet."</string>
- <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Vil du gi <xliff:g id="APP">%1$s</xliff:g> modustilgang?"</string>
+ <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Vil du gi <xliff:g id="APP">%1$s</xliff:g> tilgang til moduser?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Appen får muligheten til å slå Ikke forstyrr av og på, administrere og aktivere moduser og endre relaterte innstillinger."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Vil du oppheve tilgangen til Moduser for <xliff:g id="APP">%1$s</xliff:g>?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Vil du oppheve tilgangen til moduser for <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Alle modusene som er opprettet av denne appen, blir fjernet."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Ikke optimaliser"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Optimaliser"</string>
@@ -5030,7 +5053,7 @@
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"Dette valget er ikke gyldig lenger. Prøv på nytt."</string>
<string name="power_menu_setting_name" msgid="2394440932633137229">"Trykk og hold på/av-knappen"</string>
<string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Trykk og hold på av/på-knappen for å åpne"</string>
- <string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"På/av-meny"</string>
+ <string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Av/på-meny"</string>
<string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Digital assistent"</string>
<string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Åpne den digitale assistenten"</string>
<string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"Åpne av/på-menyen"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Lytt til strømmen"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skann en QR-kode for en lydstrøm for å lytte med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Kan ikke redigere passordet under deling. For å bytte passord, slå først av lyddelingen."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Passordet må inneholde 4–16 tegn og bare bokstaver, tall og symboler"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-kodeskanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Trenger du hjelp?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Søk i innstillingene"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Bare enheten"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nye kontakter synkroniseres ikke med kontoer"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakter lagres på enheten og synkroniseres med kontoen din som standard"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ingen standard er valgt"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Feil ved innstilling av standardkonto"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ingen standard er valgt"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Bare enheten"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Legg til en konto for å komme i gang"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Trykk og hold på hjemknappen eller navigasjonshåndtaket for å søke med innholdet på skjermen."</string>
</resources>
diff --git a/res/values-ne/arrays.xml b/res/values-ne/arrays.xml
index 1895366..2f88846 100644
--- a/res/values-ne/arrays.xml
+++ b/res/values-ne/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ब्रिफकेस"</item>
+ <item msgid="184985872234062767">"पुरानो शैलीको भवन"</item>
+ <item msgid="9189550412466785530">"अपार्टमेन्ट भवन"</item>
+ <item msgid="2142527562511049422">"स्पिच बबल"</item>
+ <item msgid="2548100558260478605">"मान्छेहरूको समूह"</item>
+ <item msgid="2270003903304578284">"लाइटबल्ब"</item>
+ <item msgid="4793496619091161864">"पात्रो"</item>
+ <item msgid="5673625795644364100">"Do Not Disturb"</item>
+ <item msgid="1423820834865831361">"दौडिरहेको व्यक्ति"</item>
+ <item msgid="2037298830718732608">"गल्फ"</item>
+ <item msgid="2197835014443491074">"व्यायामशालामा प्रयोग गरिने डम्बेल"</item>
+ <item msgid="2730180105015616518">"पौडी"</item>
+ <item msgid="2666922823253345958">"पदयात्रा गरिरहेको व्यक्ति"</item>
+ <item msgid="8234880356472211396">"बल फ्याँकिरहेको व्यक्ति"</item>
+ <item msgid="4642980625253001443">"किक हानिरहेको व्यक्ति"</item>
+ <item msgid="4324795269518833500">"गेम कन्ट्रोलर"</item>
+ <item msgid="7789966425125441125">"आर्टिस्ट कलर प्यालेट"</item>
+ <item msgid="663512680597461570">"हिमकण"</item>
+ <item msgid="7952183800501346803">"समुद्री तटमा प्रयोग गरिने छाता"</item>
+ <item msgid="799139025758265891">"वर्कसप प्रयोग गरिने औजारहरू"</item>
+ <item msgid="8112685757657659269">"पियानो"</item>
+ <item msgid="3861584909935022342">"फिल्म रिल"</item>
+ <item msgid="5827426100157335512">"पुस्तक"</item>
+ <item msgid="8585828346253128384">"कमल फूल"</item>
+ <item msgid="8788370542815300188">"व्यक्तिको दिमाग"</item>
+ <item msgid="7287354964767553293">"हेडफोन"</item>
+ <item msgid="2530059623783800987">"टिभी"</item>
+ <item msgid="5307182323469376758">"रेल"</item>
+ <item msgid="4903790544026923026">"कार"</item>
+ <item msgid="5010405583912314582">"काँटा र चक्कु"</item>
+ <item msgid="8939998598599064900">"सपिङ कार्ट"</item>
+ <item msgid="3379605903308731893">"बच्चा"</item>
+ <item msgid="7808668968550293112">"जनावरको पन्जा"</item>
+ <item msgid="1000692647524056504">"स्टार ब्याज"</item>
+ <item msgid="8270261073421676502">"दुई जना मान्छे"</item>
+ <item msgid="5767782819651505460">"तारा"</item>
+ <item msgid="4368451291862729334">"मुटु"</item>
+ <item msgid="2613199102208419986">"घर"</item>
+ <item msgid="3022279986430275040">"अर्धचन्द्र"</item>
+ <item msgid="5421089790869483206">"घडी"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 790807d..4b52e36 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"नयाँ डिभाइस कनेक्ट गर्नुहोस्"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ब्लुटुथ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"भोलि स्वतः अन गर्नुहोस्"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"तपाईंले ब्लुटुथ अफ गर्नुभयो भने यो अर्को दिन फेरि अन हुने छ"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"दायाँ भाग कनेक्ट गर्नुहोस्"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"बायाँ भाग कनेक्ट गर्नुहोस्"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"अर्को भाग कनेक्ट गर्नुहोस्"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"\"ब्लुटुथ लो इनर्जी अडियो\" अफ गर्नुहोस्"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"डिभाइसमा LE अडियो हार्डवेयर चलाउन मिल्छ भने \"ब्लुटुथ लो इनर्जी अडियो\" सुविधा अफ हुन्छ।"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ब्लुटुथ लो इनर्जी अडियो मोड"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ब्लुटुथ लो इनर्जी अडियो ब्रोडकास्ट UI को प्रिभ्यू अन गर्नुहोस्"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"यसले व्यक्तिगत अडियो सेयर गर्ने सुविधा र निजी रूपमा ब्रोडकास्ट गर्ने सुविधा समावेश गरिएको लो इनर्जी अडियो सेयर गर्ने सुविधाको UI प्रिभ्यू अन गर्छ"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"डिभाइसको विवरणमा LE अडियोको टगल देखाउनुहोस्"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ब्लुटुथ लो इनर्जी अडियोको श्वेतसूची बाइपास गर्नुहोस्"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE अडियो पेरिफरलले श्वेतसूचीको मापदण्ड पूरा गर्छ भन्ने कुरा पुष्टि नगरिए तापनि LE अडियो डिफल्ट रूपमा प्रयोग गर्नुहोस्।"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"तपाईंको नेटवर्क र वायरलेस सिग्नल प्रयोग गरेर मिति र समय स्वतः सेट गर्नुहोस्"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"स्वचालित प्रामाणिक समय"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"तपाईंको नजिकै भएका मोबाइल नेटवर्कका आधारमा मिति र समय स्वतः सेट गर्नुहोस्"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"उपलब्ध भएमा आफ्नो डिभाइसको लोकेसन प्रयोग गरेर मिति र समय स्वतः सेट गर्नुहोस्"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"लोकेलको डिफल्ट सेटिङ प्रयोग गर्नुहोस्"</string>
<string name="date_time_24hour" msgid="286679379105653406">"२४-घण्टे ढाँचा प्रयोग गर्नुहोस्"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"समय"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"औँला उठाएर फेरि सेंसर छुनुहोस्"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"फिंगरप्रिन्ट सेन्सर प्रयोग गर्न मिल्दैन"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"फिंगरप्रिन्ट सेन्सर मर्मत गर्ने सेवा प्रदायक कम्पनीमा सम्पर्क गर्नुहोस्।"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"स्क्रिन अफ हुँदा फिंगरप्रिन्टमार्फत अनलक गर्ने सुविधा"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"स्क्रिन अफ भएका बेलामा पनि फिंगरप्रिन्ट अनलक प्रयोग गर्नुहोस्"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"स्क्रिन अफ हुँदा अनलक गर्ने सुविधा"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"सुरक्षासम्बन्धी थप सेटिङ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"कार्य प्रोफाइलको लक, इन्क्रिप्सन र अन्य कुराहरू"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"इन्क्रिप्सन, युजरनेम, पासवर्ड र अन्य कुराहरू"</string>
@@ -625,7 +630,7 @@
<string name="private_space_setup_title" msgid="2272968244329821450">"निजी स्पेस"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"निजी एपहरू छुट्टै स्पेसमा लुकाउनुहोस् वा लक गर्नुहोस्। थप सुरक्षाका लागि विशेष Google खाता प्रयोग गर्नुहोस्।"</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"यसले काम गर्ने तरिका"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"आफ्नो स्पेसमा प्रयोग गर्नका निम्ति Google खाता बनाउनुहोस्"</b>\n"तपाईं स्पेसमा मात्र प्रयोग गर्ने प्रयोजनका लागि एउटा छुट्टै खाता बनाउनुभयो भने सिंक गरिएका फाइल, फोटो र इमेलहरू तपाईंको स्पेसभन्दा बाहिर देखिँदैन"</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"आफ्नो स्पेसमा प्रयोग गर्नका निम्ति Google खाता बनाउनुहोस्"</b>\n"तपाईं स्पेसमा मात्र प्रयोग गर्ने प्रयोजनका लागि एउटा छुट्टै खाता बनाउनुभयो भने सिंक गरिएका फाइल, फोटो र इमेलहरू तपाईंको स्पेसबाहिर देखिँदैनन्"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"लक सेटअप गर्नुहोस्"</b>\n"अरू मान्छेले तपाईंको स्पेस खोल्न नसकून् भन्नाका लागि उक्त स्पेस लक गर्नुहोस्"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"एपहरू इन्स्टल गर्नुहोस्"</b>\n"तपाईंले आफ्नो स्पेसमा गोप्य राख्न चाहेका एपहरू इन्स्टल गर्नुहोस्"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"ख्याल गर्नुहोस्"</string>
@@ -822,10 +827,10 @@
<string name="manage_device_admin" msgid="1044620606203916275">"डिभाइसका एड्मिन एपहरू"</string>
<string name="number_of_device_admins_none" msgid="152926922020437312">"कुनै सक्रिय एपहरू छैनन्"</string>
<string name="number_of_device_admins" msgid="3402909995362162876">"{count,plural, =1{# सक्रिय एप}other{# वटा सक्रिय एप}}"</string>
- <string name="manage_trust_agents" msgid="6410149930029992356">"ट्रस्ट एजेन्टहरू"</string>
+ <string name="manage_trust_agents" msgid="6410149930029992356">"विश्वसनीय सुविधाहरू"</string>
<string name="disabled_because_no_backup_security" msgid="4998095356607488854">"यो सेवा प्रयोग गर्न, पहिले स्क्रिन लक सेट गर्नुहोस्"</string>
<string name="manage_trust_agents_summary" msgid="6423843123607674286">"कुनै पनि होइन"</string>
- <string name="manage_trust_agents_summary_on" msgid="3302574418419446146">"{count,plural, =1{१ सक्रिय ट्रस्ट एजेन्ट}other{# वटा सक्रिय ट्रस्ट एजेन्टहरू}}"</string>
+ <string name="manage_trust_agents_summary_on" msgid="3302574418419446146">"{count,plural, =1{१ सक्रिय ट्रस्ट एजेन्ट}other{# वटा सक्रिय विश्वसनीय सुविधाहरू}}"</string>
<string name="bluetooth_settings" msgid="2967239493428695171">"ब्लुटुथ"</string>
<string name="bluetooth_settings_title" msgid="2642029095769509647">"ब्लुटुथ"</string>
<string name="bluetooth_pairing_request" msgid="7762990650683525640">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग कनेक्ट गर्ने हो?"</string>
@@ -1372,7 +1377,7 @@
<string name="wrong_pin_code" msgid="8124222991071607958">"{count,plural, =1{तपाईंले SIM को गलत PIN कोड हाल्नुभएको छ, तपाईं अब थप # पटक प्रयास गर्न सक्नुहुन्छ। त्यसपछि तपाईंले आफ्नो डिभाइस अनलक गर्न आफ्नो सेवा प्रदायकलाई सम्पर्क गर्नु पर्ने हुन्छ।}other{तपाईंले SIM को गलत PIN कोड हाल्नुभएको छ, तपाईं अब थप # पटक प्रयास गर्न सक्नुहुन्छ।}}"</string>
<string name="wrong_pin_code_one" msgid="6924852214263071441">"तपाईंले प्रविष्टि गर्नुभएको SIM को PIN कोड गलत छ, तपाईं अझै १ पटक प्रयास गर्न सक्नुहुन्छ। त्यसपछि भने आफ्नो डिभाइस अनलक गर्न तपाईंले अनिवार्य रूपमा आफ्नो सेवा प्रदायकमा सम्पर्क गर्नु पर्ने हुन्छ।"</string>
<string name="pin_failed" msgid="3726505565797352255">"SIM PIN कार्य बिफल भयो!"</string>
- <string name="system_update_settings_list_item_title" msgid="3398346836439366350">"प्रणाली अद्यावधिकहरू"</string>
+ <string name="system_update_settings_list_item_title" msgid="3398346836439366350">"प्रणाली अपडेटहरू"</string>
<string name="system_update_settings_list_item_summary" msgid="6703752298349642101"></string>
<string name="firmware_version" msgid="1606901586501447275">"Android संस्करण"</string>
<string name="security_patch" msgid="4071756145347865382">"Android को सुरक्षासम्बन्धी अपडेट"</string>
@@ -1811,7 +1816,7 @@
<string name="disable_text" msgid="5146002260857428005">"अफ गर्नुहोस्"</string>
<string name="enable_text" msgid="8570798764647110430">"अन गर्नुहोस्"</string>
<string name="clear_user_data_text" msgid="6773186434260397947">"भण्डारण खाली गर्नुहोस्"</string>
- <string name="app_factory_reset" msgid="8974044931667015201">"अद्यावधिकहरू अनइन्स्टल गर्नुहोस्"</string>
+ <string name="app_factory_reset" msgid="8974044931667015201">"अपडेटहरू अनइन्स्टल गर्नुहोस्"</string>
<string name="app_restricted_settings_lockscreen_title" msgid="5993061278264872648">"प्रतिबन्ध लगाइएका सेटिङ अनलक गर्नुहोस्"</string>
<string name="auto_launch_enable_text" msgid="8912714475823807798">"तपाईंले चयन गर्नुभएका केही क्रियाकलापहरू यो एपमा डिफल्ट रूपमा खुल्छन्।"</string>
<string name="always_allow_bind_appwidgets_text" msgid="2069415023986858324">"तपाईंले यो एपलाई विजेटहरू सिर्जना गर्न र तिनीहरूको डेटा पहुँच गर्न अनुमतिको लागि छान्नुभयो।"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"एउटै की बारम्बार थिच्दा किबोर्डले तुरुन्तै बेवास्ता गर्छ"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"बाउन्स कीको सीमा"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"कति समयसम्म बारम्बार की थिच्दा किबोर्डले बेवास्ता गर्छ भन्ने कुरा छनौट गर्नुहोस्"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"०.२ सेकेन्ड"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"०.४ सेकेन्ड"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"०.६ सेकेन्ड"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"०.२ सेकेन्ड"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"०.४ सेकेन्ड"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"०.६ सेकेन्ड"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"कस्टम"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"कस्टम मान"</string>
<string name="slow_keys" msgid="2891452895499690837">"स्लो की"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"कुनै की कति समयसम्म थिच्दा एक्टिभेट हुन्छ भन्ने कुरा मिलाउँछ"</string>
<string name="sticky_keys" msgid="7317317044898161747">"स्टिकी की"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"सर्टकट प्राप्त गर्नका लागि कीहरू सँगै थिचिराख्नुको साटो एक पटकमा एउटा की थिच्नुहोस्"</string>
<string name="mouse_keys" msgid="6237254627808525540">"माउस की"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"माउसका कीहरू प्रयोग गर्नुहोस्"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"पोइन्टर नियन्त्रण गर्न किबोर्ड प्रयोग गर्नुहोस्"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"माउसको विपरीत दिशामा स्क्रोल गर्ने विकल्प"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"पेज सारेर तल लैजान माथितिर स्क्रोल गर्नुहोस्"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"दायाँ र बायाँ बटन अदलबदल गर्नुहोस्"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"माउसको बायाँपट्टिको बटनलाई दायाँ बटनका रूपमा प्रयोग गर्नुहोस्"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> का लागि माउस कीहरू"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"माउसको पोइन्टर सार्न <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> कीहरू प्रयोग गर्नुहोस्"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"माउसको मुख्य बटन क्लिक गर्न <xliff:g id="CLICK_LABEL">%s</xliff:g> की प्रयोग गर्नुहोस्"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"माउसको मुख्य बटन थिचिराख्न <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> की प्रयोग गर्नुहोस्"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"माउसको मुख्य बटन क्लिक गर्न छाड्न <xliff:g id="RELEASE_LABEL">%s</xliff:g> की प्रयोग गर्नुहोस्"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"स्क्रोल मोड टगल गर्न <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> की प्रयोग गर्नुहोस्। यसो गर्नुभयो भने <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> कीहरूमार्फत माथि, तल, बायाँ वा दायाँ स्क्रोल गर्न सकिन्छ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"माउसको अर्को बटन क्लिक गर्न <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> की प्रयोग गर्नुहोस्"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"किबोर्डका सर्टकटहरू"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"सर्टकटहरूको सूची देखाउनुहोस्"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"कार्य प्रोफाइल किबोर्ड र उपकरणहरू"</string>
@@ -1992,7 +2007,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"सेतो"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"कालो"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"कुनै पनि होइन"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"टचप्याड इसाराहरूका बारेमा जानकारी"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"टचप्याड जेस्चरका बारेमा जानकारी"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"ट्र्याकप्याड, ट्र्याक प्याड, माउस, कर्सर, स्क्रोल, स्वाइप, राइट क्लिक, क्लिक, पोइन्टर"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"राइट क्लिक, ट्याप"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"होमपेजमा जाने तरिका"</string>
@@ -2010,13 +2025,13 @@
<string name="gesture_button_restart" msgid="1895850891992530133">"रिस्टार्ट गर्नुहोस्"</string>
<string name="gesture_button_done" msgid="6387900351203032188">"सम्पन्न भयो"</string>
<string name="trackpad_go_back_title" msgid="5312164160947491440">"पछाडि जानुहोस्"</string>
- <string name="trackpad_go_back_summary" msgid="4201901101085902768">"तिन वटा औँलाले बायाँ वा दायाँतिर स्वाइप गर्नुहोस्"</string>
+ <string name="trackpad_go_back_summary" msgid="4201901101085902768">"तीन वटा औँलाले बायाँ वा दायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="trackpad_go_home_title" msgid="2146525662148291552">"होमपेजमा जाने तरिका"</string>
- <string name="trackpad_go_home_summary" msgid="2222744701528360887">"तिन वटा औँलाले माथितिर स्वाइप गर्नुहोस्"</string>
+ <string name="trackpad_go_home_summary" msgid="2222744701528360887">"तीन वटा औँलाले माथितिर स्वाइप गर्नुहोस्"</string>
<string name="trackpad_recent_apps_title" msgid="8195970908411585445">"हालसालै चलाइएका एपहरू"</string>
- <string name="trackpad_recent_apps_summary" msgid="2685092851677573794">"तिन वटा औँलाले माथितिर स्वाइप गर्नुहोस्, अनि होल्ड गर्नुहोस्"</string>
+ <string name="trackpad_recent_apps_summary" msgid="2685092851677573794">"तीन वटा औँलाले माथितिर स्वाइप गर्नुहोस्, अनि होल्ड गर्नुहोस्"</string>
<string name="trackpad_notifications_title" msgid="3521663305043747880">"सूचनाहरू"</string>
- <string name="trackpad_notifications_summary" msgid="7663647367648690040">"तिन वटा औँलाले तलतिर स्वाइप गर्नुहोस्"</string>
+ <string name="trackpad_notifications_summary" msgid="7663647367648690040">"तीन वटा औँलाले तलतिर स्वाइप गर्नुहोस्"</string>
<string name="trackpad_switch_apps_title" msgid="7342032935377284039">"एउटा एपबाट अर्को एपमा जाने तरिका"</string>
<string name="trackpad_switch_apps_summary" msgid="9193942041912927440">"चार वटा औँलाले बायाँ वा दायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="modifier_keys_settings" msgid="2537108435032034683">"मोडिफायर कीहरू"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> को नयाँ की छनौट गर्नुहोस्:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"भौतिक किबोर्डको सर्वसुलभता"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"स्टिकी कीहरू, बाउन्स कीहरू, माउस कीहरू"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"कीहरू दोहोर्याउनुहोस्"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"वर्ण दोहोरिनुअघि सम्बन्धित कि कति बेरसम्म थिच्न सकिन्छ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"दोहोरिने दर"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"की नछाड्नुन्जेल कीको वर्ण दोहोर्याउन की थिचिराख्नुहोस्"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> लेआउट"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"डिफल्ट"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"स्वचालित: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2515,7 +2526,7 @@
<string name="print_feature_state_on" msgid="7132063461008624685">"अन छ"</string>
<string name="print_feature_state_off" msgid="1466195699995209446">"बन्द"</string>
<string name="print_menu_item_add_service" msgid="1549091062463044676">"सेवा हाल्नुहोस्"</string>
- <string name="print_menu_item_add_printer" msgid="8711630848324870892">"प्रिन्टर थप्नुहोस्"</string>
+ <string name="print_menu_item_add_printer" msgid="8711630848324870892">"प्रिन्टर कनेक्ट गर्नुहोस्"</string>
<string name="print_menu_item_search" msgid="5989979785203603169">"खोज्नुहोस्"</string>
<string name="print_searching_for_printers" msgid="5401413178028348800">"प्रिन्टरहरू खोजिँदै छ"</string>
<string name="print_service_disabled" msgid="9185935228930987786">"प्रिन्ट सेवा अफ गरिएको छ"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"उर्जा प्रयोग मिलाउनुहोस्"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"सम्मिलित प्याकेजहरू"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"एपहरू सामान्य रूपमा चलिरहेका छन्"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ब्याट्री बदल्न सिफारिस गरिएको छ"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ब्याट्रीको क्षमता र चार्जिङ पर्फर्मेन्स घटेको छ र ब्याट्री बदल्न सिफारिस गरिएको छ।"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ब्याट्री कम छ"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ब्याट्रीको आयु बढाउन ब्याट्री सेभर अन गर्नुहोस्"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ब्याट्रीको आयु सुधार्नुहोस्"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"यो VPN को जडान विच्छेद गर्ने हो?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"डिस्कनेक्ट गर्नुहोस्"</string>
<string name="vpn_version" msgid="6344167191984400976">"संस्करण"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"संस्करण <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN लाई बिर्सनुहोस्"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"विद्यमान VPN लाई बदल्ने हो?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"सधैँ-सक्रिय VPN लाई सेट गर्ने हो?"</string>
@@ -3402,7 +3414,7 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{कुनै पनि समयतालिका बनाइएको छैन}=1{एउटा समयतालिका बनाइएको छ}other{# वटा समयतालिका बनाइएको छ}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"बाधा नपुऱ्याउनुहोस्"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"मोडहरू"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"सुत्दा, काम गर्दा, सवारी साधन चलाउँदा तथा अन्य कार्यहरू गर्दा सोही अनुसारका मोडहरू सेट गरेर अवरोधहरू कम गर्नुहोस् र आफ्नो ध्यान काबुमा राख्नुहोस्।"</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"सुत्दा, काम गर्दा, सवारी साधन चलाउँदा तथा अन्य कार्यहरू गर्दा सोही अनुसारका मोडहरू सेट गरेर अवरोधहरू कम गर्नुहोस् र गरिरहेको काममा केन्द्रित हुनुहोस्।"</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"आफ्नै मोड बनाउनुहोस्"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"महत्त्वपूर्ण मान्छे र एपका सूचना मात्र प्राप्त गर्नुहोस्"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"समयतालिका सेट गर्नुहोस्"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"सप्ताहान्तबाहेकका दिन बिहान ९ देखि साँझ ५ बजेसम्म\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"पात्रोमा सेट गरिएका कार्यक्रमहरू"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} सक्रिय छ}=2{{mode_1} र {mode_2} सक्रिय छन्}=3{{mode_1}, {mode_2} र {mode_3} सक्रिय छन्}other{{mode_1}, {mode_2} र अरू # वटा मोड सक्रिय छन्}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{एउटा मोड स्वतः अन हुन सक्छ}other{# वटा मोड स्वतः अन हुन सक्छन्}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Do Not Disturb}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"अन छ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"सेट गरिएको छैन"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"अफ गरिएको छ"</string>
@@ -3491,7 +3503,7 @@
<string name="zen_mode_block_effect_intent" msgid="7621578645742903531">"स्क्रिन अन नगर्नुहोस्"</string>
<string name="zen_mode_block_effect_light" msgid="1997222991427784993">"बत्तीलाई धिपधिपाउन नदिनुहोस्"</string>
<string name="zen_mode_block_effect_peek" msgid="2525844009475266022">"स्क्रिनमा सूचना नदेखाउनुहोस्"</string>
- <string name="zen_mode_block_effect_status" msgid="5765965061064691918">"स्क्रीनको शीर्षमा रहेको स्ट्याटस बारका आइकनहरू लुकाउनुहोस्"</string>
+ <string name="zen_mode_block_effect_status" msgid="5765965061064691918">"स्क्रिनको शीर्षमा रहेको स्ट्याटस बारका आइकनहरू लुकाउनुहोस्"</string>
<string name="zen_mode_block_effect_badge" msgid="332151258515152429">"एप आइकनमा नोटिफिकेसन डट लुकाउनुहोस्"</string>
<string name="zen_mode_block_effect_ambient" msgid="1247740599476031543">"सूचना आउँदा अन नगर्नुहोस्"</string>
<string name="zen_mode_block_effect_list" msgid="7549367848660137118">"पुल डाउन सेडबाट लुकाउनुहोस्"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"तपाईंले छोटो समयमा धेरै नोटिफिकेसन प्राप्त गर्दा तपाईंको डिभाइसले बढीमा २ मिनेटसम्म ती नोटिफिकेसनको साउन्डको भोल्युम घटाउँछ र अलर्टहरू कम देखाउँछ। कल, अलार्म र महत्त्वपूर्ण वार्तालापहरू भने प्रभावित हुँदैनन्। \n\nडिभाइसको स्क्रिनको सिरानबाट तलतिर स्वाइप गरेर कुलडाउनका बेला प्राप्त भएका नोटिफिकेसनहरू हेर्न सकिन्छ।"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"कार्य प्रोफाइलहरूमा लागू गर्नुहोस्"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"कार्य प्रोफाइलका एपहरूमा लागू गर्नुहोस्"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR का सहायक सेवाहरू"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"इन्स्टल गरिएका कुनै पनि एपहरूले VR का सहायक सेवाहरूको रूपमा चल्ने अनुरोध गरेका छैनन्।"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई VR सेवा चलाउने अनुमति दिने हो?"</string>
@@ -3800,7 +3822,7 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"निम्न एपको कार्यक्रम होइरहँदा"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"पात्रो"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"निम्न जवाफ हुँदा"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"अँ, शायद, वा जवाफ नदिएको"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"अँ, शायद हुँदा वा जवाफ आएको अवस्थामा"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"अँ वा शायद"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"अँ"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"नियम फेला परेन।"</string>
@@ -4054,8 +4076,8 @@
<string name="app_link_open_always_summary" msgid="4524005594295855117">"{count,plural, =1{यो एपले # वटा लिंक ह्यान्डल गर्ने दाबी गर्छ}other{यो एपले # वटा लिंक ह्यान्डल गर्ने दाबी गर्छ}}"</string>
<string name="open_supported_links_footer" msgid="3188808142432787933">"निम्न लिंकहरू सम्हाल्न प्रयोग गरिने एपका दाबीहरू"</string>
<string name="assist_and_voice_input_title" msgid="6317935163145135914">"सहायक तथा आवाजको इनपुट"</string>
- <string name="default_assist_title" msgid="1182435129627493758">"डिजिटल सहायक एप"</string>
- <string name="default_digital_assistant_title" msgid="5654663086385490838">"डिफल्ट डिजिटल सहायक एप"</string>
+ <string name="default_assist_title" msgid="1182435129627493758">"डिजिटल एसिस्टेन्ट एप"</string>
+ <string name="default_digital_assistant_title" msgid="5654663086385490838">"डिफल्ट डिजिटल एसिस्टेन्ट एप"</string>
<string name="assistant_security_warning_agree" msgid="9013334158753473359">"सहमत छु"</string>
<string name="default_browser_title" msgid="8342074390782390458">"ब्राउजर एप"</string>
<string name="default_phone_title" msgid="7616730756650803827">"फोन एप"</string>
@@ -4420,9 +4442,9 @@
<string name="automatic_storage_manager_preference_title" msgid="3483357910142595444">"भण्डारण प्रबन्धक"</string>
<string name="automatic_storage_manager_primary_switch_title" msgid="9131959126462101994">"स्टोरेज म्यानेजर प्रयोग गर्नुहोस्"</string>
<string name="gesture_preference_title" msgid="8291899281322647187">"जेस्चरहरू"</string>
- <string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"तुरुन्तै क्यामेरा खोल्नुहोस्"</string>
+ <string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"तुरुन्तै क्यामेरा खोल्ने"</string>
<string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"पावर बटनलाई दुई पटक थिच्दा क्यामेरा द्रुत रूपमा खुलोस्। जुनसुकै स्क्रिन मार्फत यो सुविधाको प्रयोग गर्न सकिन्छ।"</string>
- <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"क्यामेरा फ्लिप गर्दा सेल्फी खिचियोस्"</string>
+ <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"सेल्फी खिच्न क्यामेरा फ्लिप गर्ने"</string>
<string name="double_twist_for_camera_mode_summary" msgid="592503740044744951"></string>
<string name="system_navigation_title" msgid="4890381153527184636">"नेभिगेसन मोड"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"२ बटन नेभिगेसन"</string>
@@ -4435,11 +4457,11 @@
<string name="legacy_navigation_summary" msgid="5905301067778326433">"आफ्नो स्क्रिनको फेदमा रहेका बटनहरू प्रयोग गरेर पछाडि जानुहोस्, होम पेजमा जानुहोस्, एउटा एपबाट अर्को एपमा जानुहोस्।"</string>
<string name="nav_tutorial_button_description" msgid="6880450051535137024">"जेस्चर नेभिगेसन ट्युटोरियल सुरु गर्नुहोस् नामक बटन। एक्टिभेट गर्न डबल ट्याप गर्नुहोस्।"</string>
<string name="keywords_system_navigation" msgid="3131782378486554934">"सिस्टम नेभिगेसन, २ बटन नेभिगेसन, ३ बटन नेभिगेसन, जेस्चरले गरिने नेभिगेसन, स्वाइप"</string>
- <string name="assistant_gesture_category_title" msgid="2478251256585807920">"डिजिटल सहायक"</string>
+ <string name="assistant_gesture_category_title" msgid="2478251256585807920">"डिजिटल एसिस्टेन्ट"</string>
<string name="assistant_corner_gesture_title" msgid="1895061522687002106">"स्वाइप गर्दा सहायक सुरु गर्नुहोस्"</string>
- <string name="assistant_corner_gesture_summary" msgid="5012534700233017955">"डिजिटल सहायक एप सुरु गर्न स्क्रिनको फेदको कुनाबाट माथितिर स्वाइप गर्नुहोस्"</string>
+ <string name="assistant_corner_gesture_summary" msgid="5012534700233017955">"डिजिटल एसिस्टेन्ट एप सुरु गर्न स्क्रिनको फेदको कुनाबाट माथितिर स्वाइप गर्नुहोस्"</string>
<string name="assistant_long_press_home_gesture_title" msgid="4865972278738178753">"सहायक खोल्न होम बटन थिचिराख्नुहोस्"</string>
- <string name="assistant_long_press_home_gesture_summary" msgid="592882226105081447">"डिजिटल सहायक एप खोल्न होम बटन थिचिराख्नुहोस्।"</string>
+ <string name="assistant_long_press_home_gesture_summary" msgid="592882226105081447">"डिजिटल एसिस्टेन्ट एप खोल्न होम बटन थिचिराख्नुहोस्।"</string>
<string name="low_label" msgid="6525629096999711220">"न्यून"</string>
<string name="high_label" msgid="357503396626018487">"उच्च"</string>
<string name="left_edge" msgid="1513576842959071849">"बायाँ किनारा"</string>
@@ -4458,7 +4480,7 @@
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"निम्न कार्यका लागि सर्टकट प्रयोग गर्नुहोस्"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"तपाईं एक हाते मोड प्रयोग गर्न चाहनुहुन्छ भने स्क्रिनको माथिल्लो आधा भागबाट तलतिर स्वाइप गर्नुहोस्"</string>
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"एक हाते मोड प्रयोग गर्ने तरिका"</b>\n" • सिस्टमको नेभिगेसनसम्बन्धी सेटिङमा जेस्चर नेभिगेसन चयन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्\n • स्क्रिनको पुछारको किनारा नजिकैबाट तलतिर स्वाइप गर्नुहोस्"</string>
- <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"स्क्रिन स्लाइड गर्दा बुढी औँलाले भेट्ने ठाउँमा आओस्"</string>
+ <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"स्क्रिन स्लाइड गरेर बुढी औँलाले भेट्ने ठाउँमा ल्याउनुहोस्"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"तपाईंले यो सुविधा अन गर्नुभयो भने तपाईं आफ्नो बुढी औँलाले स्क्रिनको सिरानको भाग छुन सक्नु हुने छ।"</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"सूचनाहरू देखाउनुहोस्"</string>
<string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"सूचना तथा सेटिङ देखिने छन्।"</string>
@@ -5028,11 +5050,11 @@
<string name="system_default_app_subtext" msgid="5212055189703164839">"सिस्टम डिफल्ट"</string>
<string name="default_app_none" msgid="5420632042222036264">"डिफल्ट एप तोकिएको छैन"</string>
<string name="select_invalid_bug_report_handler_toast_text" msgid="8857326334015386692">"यो छनोट अब उप्रान्त मान्य छैन। फेरि प्रयास गर्नुहोस्।"</string>
- <string name="power_menu_setting_name" msgid="2394440932633137229">"पावर बटन थिचिराख्नुहोस्"</string>
+ <string name="power_menu_setting_name" msgid="2394440932633137229">"पावर बटन थिचिराख्ने"</string>
<string name="power_menu_long_press_category_title" msgid="1051146091093775002">"पावर मेनु प्रयोग गर्न पावर बटन थिचिराख्नुहोस्"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"पावर मेनु"</string>
- <string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"डिजिटल सहायक"</string>
- <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"डिजिटल सहायक प्रयोग गर्नुहोस्"</string>
+ <string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"डिजिटल एसिस्टेन्ट"</string>
+ <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"डिजिटल एसिस्टेन्ट प्रयोग गर्नुहोस्"</string>
<string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"पावर मेनु प्रयोग गर्नुहोस्"</string>
<string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"यो सुविधा प्रयोग गर्न सर्वप्रथम स्क्रिन लक हाल्नुहोस्"</string>
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"पावर मेनु:\nपावर बटन र भोल्युम बढाउने बटन एकै चोटि थिच्नुहोस्"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"स्ट्रिम सुन्नुहोस्"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग अडियो स्ट्रिम सुन्न उक्त स्ट्रिमको QR कोड स्क्यान गर्नुहोस्"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"अडियो सेयर गरिरहेका बेला पासवर्ड बदल्न मिल्दैन। पासवर्ड बदल्न सर्वप्रथम अडियो सेयरिङ अफ गर्नुहोस्।"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"तपाईंको पासवर्डमा अनिवार्य रूपमा ४ देखि १६ वर्ण हुनु पर्छ र त्यसमा अक्षर, अङ्क र सङ्केतहरू मात्र प्रयोग गरिनु पर्छ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR कोड स्क्यानर"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"मद्दत चाहिन्छ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"सेटिङ खोज्नुहोस्"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"डिभाइस मात्र"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"नयाँ कन्ट्याक्टहरू खातासँग सिंक गरिने छैनन्"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"डिफल्ट सेटिङअनुसार कन्ट्याक्टहरू तपाईंको डिभाइसमा सेभ गरिने छन् र तपाईंको खातामा सिंक गरिने छन्"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"कुनै डिफल्ट खाता सेट गरिएको छैन"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"मुख्य खाता सेट गर्ने क्रममा त्रुटि भयो"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"मुख्य खाता सेट गरिएको छैन"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"डिभाइस मात्र"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"सुरु गर्न खाता हाल्नुहोस्"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"खोज्न सर्कल बनाउनुहोस्"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"आफ्नो स्क्रिनमा सामग्री प्रयोग गरेर खोज्न होम बटन वा नेभिगेसन ह्यान्डल टच एण्ड होल्ड गर्नुहोस्।"</string>
</resources>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index ee8fae9..3f280ff 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Koffertje"</item>
+ <item msgid="184985872234062767">"Klassiek gebouw"</item>
+ <item msgid="9189550412466785530">"Flat"</item>
+ <item msgid="2142527562511049422">"Tekstballon"</item>
+ <item msgid="2548100558260478605">"Groep mensen"</item>
+ <item msgid="2270003903304578284">"Gloeilamp"</item>
+ <item msgid="4793496619091161864">"Agenda"</item>
+ <item msgid="5673625795644364100">"Niet storen"</item>
+ <item msgid="1423820834865831361">"Persoon die rent"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Dumbbell"</item>
+ <item msgid="2730180105015616518">"Zwemmen"</item>
+ <item msgid="2666922823253345958">"Persoon die wandelt"</item>
+ <item msgid="8234880356472211396">"Persoon die een bal gooit"</item>
+ <item msgid="4642980625253001443">"Persoon die schopt"</item>
+ <item msgid="4324795269518833500">"Gamecontroller"</item>
+ <item msgid="7789966425125441125">"Kleurenpalet van kunstenaar"</item>
+ <item msgid="663512680597461570">"Sneeuwvlok"</item>
+ <item msgid="7952183800501346803">"Parasol"</item>
+ <item msgid="799139025758265891">"Werkplaatsgereedschap"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Filmrol"</item>
+ <item msgid="5827426100157335512">"Boek"</item>
+ <item msgid="8585828346253128384">"Lotusbloem"</item>
+ <item msgid="8788370542815300188">"Iemands gedachten"</item>
+ <item msgid="7287354964767553293">"Koptelefoon"</item>
+ <item msgid="2530059623783800987">"Tv"</item>
+ <item msgid="5307182323469376758">"Trein"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Vork en mes"</item>
+ <item msgid="8939998598599064900">"Winkelwagentje"</item>
+ <item msgid="3379605903308731893">"Kind"</item>
+ <item msgid="7808668968550293112">"Dierenpoot"</item>
+ <item msgid="1000692647524056504">"Sterbadge"</item>
+ <item msgid="8270261073421676502">"2 mensen"</item>
+ <item msgid="5767782819651505460">"Ster"</item>
+ <item msgid="4368451291862729334">"Hartje"</item>
+ <item msgid="2613199102208419986">"Huis"</item>
+ <item msgid="3022279986430275040">"Halvemaan"</item>
+ <item msgid="5421089790869483206">"Klok"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index ba71fc5..50e2827 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Nieuw apparaat koppelen"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Morgen automatisch aanzetten"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Als je bluetooth uitzet, gaat het de volgende dag weer aan"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Rechteroor koppelen"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Linkeroor koppelen"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Je andere oor koppelen"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audio uitzetten"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Zet de functie voor Bluetooth LE Audio uit als het apparaat hardwaremogelijkheden voor LE Audio ondersteunt"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio-modus"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"UI-voorbeeld voor Bluetooth LE Audio-uitzending aanzetten"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Hiermee wordt het UI-voorbeeld voor LE Audio delen aangezet, waaronder persoonlijke audio delen en privéuitzendingen"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Schakelaar voor LE Audio tonen in Apparaatgegevens"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Toelatingslijst voor Bluetooth LE Audio negeren"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Maak standaard gebruik van LE Audio, ook als niet is geverifieerd of LE Audio-randapparatuur voldoet aan de criteria van de toelatingslijst"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Automatisch instellen met je netwerk- en draadloze signalen"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatische tijdzone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Automatisch instellen op basis van mobiele netwerken bij jou in de buurt"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Automatisch instellen met apparaatlocatie, indien beschikbaar"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Standaardinstelling voor land gebruiken"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-uurs klok gebruiken"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Tijd"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Til je vinger op en raak de sensor opnieuw aan"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Kan vingerafdruksensor niet gebruiken"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Ga naar een reparateur."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ontgrendelen met vingerafdruk als het scherm uit is"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Gebruik Ontgrendelen met vingerafdruk als het scherm uitstaat"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Scherm uit, ontgrendelen"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Meer beveiligingsinstellingen"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Werkprofielvergrendeling, versleuteling en meer"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Versleuteling, inloggegevens en meer"</string>
@@ -1304,8 +1309,8 @@
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"Gaat na bedtijd automatisch uit"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"Wordt uitgezet als <xliff:g id="ID_1">%1$s</xliff:g> is afgelopen"</string>
<string name="dark_ui_text" msgid="4392646155331126666">"Het donkere thema gebruikt een zwarte achtergrond zodat je batterij langer meegaat op sommige schermen. Schema\'s voor het donkere thema worden pas aangezet als je scherm uitstaat."</string>
- <string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Het donkere thema volgt op dit moment je schema voor de Bedtijdstand"</string>
- <string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Instellingen voor bedtijdstand"</string>
+ <string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Het donkere thema volgt op dit moment je schema voor de Bedtijdmodus"</string>
+ <string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Instellingen voor Bedtijdmodus"</string>
<string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Modi kunnen ook het donkere thema activeren}=1{{mode_1} activeert ook het donkere thema}=2{{mode_1} en {mode_2} activeren ook het donkere thema}=3{{mode_1}, {mode_2} en {mode_3} activeren ook het donkere thema}other{{mode_1}, {mode_2} en nog # activeren ook het donkere thema}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Instellingen voor modi"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Nog meer dimmen"</string>
@@ -1323,7 +1328,7 @@
<string name="style_suggestion_summary" msgid="4271131877800968159">"Probeer verschillende stijlen, achtergronden en meer"</string>
<string name="screensaver_settings_title" msgid="3588535639672365395">"Screensaver"</string>
<string name="keywords_screensaver" msgid="7249337959432229172">"screensaver"</string>
- <string name="screensaver_settings_when_to_dream_bedtime" msgid="3279310576803094771">"Niet beschikbaar omdat de bedtijdstand aanstaat"</string>
+ <string name="screensaver_settings_when_to_dream_bedtime" msgid="3279310576803094771">"Niet beschikbaar omdat de Bedtijdmodus aanstaat"</string>
<string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Screensaver gebruiken"</string>
<string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Tijdens opladen of docken"</string>
<string name="screensaver_settings_summary_dock_and_charging" msgid="8485905100159376156">"Tijdens gedockt opladen"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Het toetsenbord negeert snel herhaald indrukken van dezelfde toets"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Drempelwaarde voor stuitertoetsen"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Kies hoelang je toetsenbord herhaald indrukken van toetsen negeert"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Aangepast"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"aangepaste waarde"</string>
<string name="slow_keys" msgid="2891452895499690837">"Langzame toetsen"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Past de tijd voordat een toetsaanslag wordt geactiveerd aan"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Plaktoetsen"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Druk toetsen één voor één in voor snelkoppelingen in plaats van meerdere toetsen tegelijkertijd"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Muisknoppen"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Muistoetsen gebruiken"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Gebruik je toetsenbord om de cursor te bedienen"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Omgekeerd scrollen met muis"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scroll omhoog om de pagina omlaag te verplaatsen"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Knoppen links en rechts omwisselen"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Gebruik de linkermuisknop als je rechtermuisknop"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Muistoetsen voor <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Gebruik de toetsen <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> om de cursor te verplaatsen"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Gebruik de toets <xliff:g id="CLICK_LABEL">%s</xliff:g> om op de primaire muisknop te klikken"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Gebruik de toets <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> om de primaire muisknop ingedrukt te houden"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Gebruik de toets <xliff:g id="RELEASE_LABEL">%s</xliff:g> om de primaire muisknop los te laten"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Gebruik de toets <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> om de scrollmodus aan of uit te zetten. Hiermee kun je met de toetsen <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> omhoog, omlaag, naar links of naar rechts scrollen."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Gebruik de toets <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> om op de secundaire muisknop te klikken"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Sneltoetsen"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Toon lijst met sneltoetsen"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Toetsenborden en tools van werkprofiel"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Kies een nieuwe toets voor <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Toegankelijkheid met fysiek toetsenbord"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Plaktoetsen, bouncetoetsen, muisknoppen"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Toetsen herhalen"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Vertraging vóór herhaling"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Herhalingssnelheid"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Houd een toets ingedrukt om het bijbehorende teken te herhalen totdat de toets wordt losgelaten"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Indeling: <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Standaard"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatisch: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2207,7 +2218,7 @@
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"Snelkoppeling met volumeknoppen"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="5529704884360240365">"Snelkoppeling met 3 keer tikken"</string>
<string name="accessibility_tutorial_dialog_title_two_finger_double" msgid="5749704453829390283">"Snelkoppeling met dubbeltikken met %1$d vingers"</string>
- <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"snelkoppeling Snelle instellingen"</string>
+ <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"Snelkoppeling Snelle instellingen"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"Snelkoppeling met toegankelijkheidsgebaar"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Toegankelijkheidsgebaar gebruiken"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Als je deze functie wilt gebruiken, tik je onderaan het scherm op de knop Toegankelijkheid <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nHoud je vinger op de knop om tussen functies te wisselen."</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Energieverbruik aanpassen"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Bijgeleverde pakketten"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Apps worden normaal uitgevoerd"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Batterijvervanging aanbevolen"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"De batterijcapaciteit en oplaadprestaties zijn verminderd en batterijvervanging wordt aanbevolen."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Laag batterijniveau"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Zet Batterijbesparing aan om de batterijduur te verlengen"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"De batterijduur verbeteren"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Verbinding met dit VPN verbreken?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Verbinding verbreken"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versie"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versie <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN vergeten"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Bestaande VPN vervangen?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Always-on VPN instellen?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\'9:00 - 17:00 uur werkdagen\'"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Agenda-afspraken"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} is actief}=2{{mode_1} en {mode_2} zijn actief}=3{{mode_1}, {mode_2} en {mode_3} zijn actief}other{{mode_1}, {mode_2} en nog # zijn actief}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modus kan automatisch worden aangezet}other{# modi kunnen automatisch worden aangezet}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Niet storen}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AAN"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Niet ingesteld"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Uitgezet"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Als je in korte tijd veel meldingen krijgt, wordt het volume op je apparaat verlaagd en worden meldingen geminimaliseerd gedurende maximaal 2 minuten. Dit is niet van invloed op gesprekken, wekkers en prioriteitsgesprekken. \n\nDe meldingen die je tijdens de afkoelperiode krijgt, vind je door omlaag te swipen vanaf de bovenkant van het scherm."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Toepassen op werkprofielen"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Pas deze instelling toe op apps in werkprofielen"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR-helperservices"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Er zijn geen geïnstalleerde apps die hebben gevraagd om te worden uitgevoerd als VR-helperservices."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR-servicetoegang toestaan voor <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -4459,7 +4481,7 @@
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"Swipe de bovenste helft van je scherm omlaag zodat je er makkelijker aan kunt met 1 hand"</string>
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"Bediening met 1 hand gebruiken"</b>\n" • Check of navigatie met gebaren is geselecteerd in de navigatie-instellingen van het systeem \n • Swipe omlaag bij de onderrand van het scherm"</string>
<string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"Scherm binnen bereik brengen"</string>
- <string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"Je kunt met je duim aan de bovenkant van het scherm"</string>
+ <string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"Je kunt met je duim de bovenkant van het scherm bereiken"</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"Meldingen tonen"</string>
<string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"Er worden meldingen en instellingen getoond"</string>
<string name="ambient_display_summary" msgid="2650326740502690434">"Dubbeltik op je scherm om de tijd, meldingen en andere informatie te bekijken."</string>
@@ -4794,7 +4816,7 @@
<string name="mobile_network_sim_name_label" msgid="1452440641628369625">"Naam"</string>
<string name="mobile_network_sim_color_label" msgid="5293944087609632340">"Kleur (gebruikt door geschikte apps)"</string>
<string name="mobile_network_sim_name_rename" msgid="5967588549571582924">"Opslaan"</string>
- <string name="mobile_network_use_sim_on" msgid="5333182776279917886">"Deze sim gebruiken"</string>
+ <string name="mobile_network_use_sim_on" msgid="5333182776279917886">"Deze simkaart gebruiken"</string>
<string name="mobile_network_use_sim_off" msgid="6303281166199670639">"Uit"</string>
<string name="mobile_network_disable_sim_explanation" msgid="7182341033728911879">"Als je deze sim wilt uitzetten, verwijder je de simkaart"</string>
<string name="mobile_network_tap_to_activate" msgid="5280456487243915465">"Tik om je sim van <xliff:g id="CARRIER">%1$s</xliff:g> te activeren"</string>
@@ -5127,7 +5149,7 @@
<string name="mobile_data_disable_message" msgid="7829414836454769970">"Je hebt dan geen toegang meer tot data of internet via <xliff:g id="CARRIER">%s</xliff:g>. Internet is alleen nog beschikbaar via wifi."</string>
<string name="mobile_data_disable_message_default_carrier" msgid="4449469407705838612">"je provider"</string>
<string name="not_allowed_by_ent" msgid="1958611623122304411">"Niet toegestaan door je organisatie"</string>
- <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Niet beschikbaar omdat de bedtijdstand aanstaat"</string>
+ <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Niet beschikbaar omdat de Bedtijdmodus aanstaat"</string>
<string name="reset_importance_completed" msgid="3595536767426097205">"Belang van meldingen is gereset."</string>
<string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
<string name="bluetooth_message_access_notification_content" msgid="5111712860712823893">"Een apparaat wil toegang tot je berichten. Tik voor details."</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Luisteren naar stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scan de QR-code van een audiostream om mee te luisteren met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Kan wachtwoord niet bewerken tijdens het delen. Als je het wachtwoord wilt wijzigen, zet je audio delen eerst uit."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Je wachtwoord moet 4-16 tekens bevatten en mag alleen letters, cijfers en symbolen bevatten"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-codescanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Hulp nodig?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Zoeken in Instellingen"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Alleen apparaat"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nieuwe contacten worden niet gesynchroniseerd met een account"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Contacten worden standaard opgeslagen op je apparaat en gesynchroniseerd met je account"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Geen standaard ingesteld"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Fout bij instellen van het standaardaccount"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Geen standaard ingesteld"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Alleen apparaat"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Voeg een account toe om aan de slag te gaan"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Houd je vinger op de startknop of de navigatiehandgreep om te zoeken op basis van de content op je scherm."</string>
</resources>
diff --git a/res/values-or/arrays.xml b/res/values-or/arrays.xml
index 5266c7a..c003c2d 100644
--- a/res/values-or/arrays.xml
+++ b/res/values-or/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ବ୍ରିଫକେସ"</item>
+ <item msgid="184985872234062767">"କ୍ଲାସିକାଲ ବିଲ୍ଡିଂ"</item>
+ <item msgid="9189550412466785530">"ଆପାର୍ଟମେଣ୍ଟ ବିଲ୍ଡିଂ"</item>
+ <item msgid="2142527562511049422">"ସ୍ପିଚ ବବଲ"</item>
+ <item msgid="2548100558260478605">"ଲୋକଙ୍କ ଗୋଷ୍ଠୀ"</item>
+ <item msgid="2270003903304578284">"ଲାଇଟବଲ୍ବ"</item>
+ <item msgid="4793496619091161864">"କେଲେଣ୍ଡର"</item>
+ <item msgid="5673625795644364100">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</item>
+ <item msgid="1423820834865831361">"ଦୌଡ଼ୁଥିବା ବ୍ୟକ୍ତି"</item>
+ <item msgid="2037298830718732608">"ଗଲ୍ଫ"</item>
+ <item msgid="2197835014443491074">"ଜିମ ଡମ୍ବେଲ"</item>
+ <item msgid="2730180105015616518">"ସୁଇମିଂ"</item>
+ <item msgid="2666922823253345958">"ହାଇକିଂ କରୁଥିବା ବ୍ୟକ୍ତି"</item>
+ <item msgid="8234880356472211396">"ବଲ ଫିଙ୍ଗୁଥିବା ବ୍ୟକ୍ତି"</item>
+ <item msgid="4642980625253001443">"କିକ ମାରୁଥିବା ବ୍ୟକ୍ତି"</item>
+ <item msgid="4324795269518833500">"ଗେମ କଣ୍ଟ୍ରୋଲର"</item>
+ <item msgid="7789966425125441125">"କଳାକାରଙ୍କ ରଙ୍ଗ ପେଲେଟ"</item>
+ <item msgid="663512680597461570">"ସ୍ନୋଫ୍ଲେକ"</item>
+ <item msgid="7952183800501346803">"ବେଳାଭୂମିରେ ଛତା"</item>
+ <item msgid="799139025758265891">"ୱାର୍କସପ ଟୁଲ"</item>
+ <item msgid="8112685757657659269">"ପିଆନୋ"</item>
+ <item msgid="3861584909935022342">"ଫିଲ୍ମ ରିଲ"</item>
+ <item msgid="5827426100157335512">"ବହି"</item>
+ <item msgid="8585828346253128384">"ପଦ୍ମ ଫୁଲ"</item>
+ <item msgid="8788370542815300188">"ବ୍ୟକ୍ତିଙ୍କ ମନ"</item>
+ <item msgid="7287354964767553293">"ହେଡଫୋନଗୁଡ଼ିକ"</item>
+ <item msgid="2530059623783800987">"ଟିଭି"</item>
+ <item msgid="5307182323469376758">"ଟ୍ରେନ"</item>
+ <item msgid="4903790544026923026">"କାର"</item>
+ <item msgid="5010405583912314582">"କଣ୍ଟା ଓ ଛୁରୀ"</item>
+ <item msgid="8939998598599064900">"ସପିଂ କାର୍ଟ"</item>
+ <item msgid="3379605903308731893">"ପିଲା"</item>
+ <item msgid="7808668968550293112">"ପଶୁର ପଞ୍ଜା"</item>
+ <item msgid="1000692647524056504">"ଷ୍ଟାର ବେଜ"</item>
+ <item msgid="8270261073421676502">"ଦୁଇ ଜଣ ଲୋକ"</item>
+ <item msgid="5767782819651505460">"ଷ୍ଟାର"</item>
+ <item msgid="4368451291862729334">"ହାର୍ଟ"</item>
+ <item msgid="2613199102208419986">"ଘର"</item>
+ <item msgid="3022279986430275040">"ଅର୍ଦ୍ଧ-ଚନ୍ଦ୍ର"</item>
+ <item msgid="5421089790869483206">"ଘଣ୍ଟା"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index a1e0346..7670d4d 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -20,7 +20,7 @@
<string name="no" msgid="5541738710521607130">"ନାହିଁ"</string>
<string name="create" msgid="986997212165228751">"ତିଆରି କରନ୍ତୁ"</string>
<string name="allow" msgid="3763244945363657722">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
- <string name="deny" msgid="7326117222944479942">"ଅଗ୍ରାହ୍ୟ"</string>
+ <string name="deny" msgid="7326117222944479942">"ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ"</string>
<string name="confirmation_turn_on" msgid="2979094011928347665">"ଚାଲୁ କରନ୍ତୁ"</string>
<string name="device_info_default" msgid="1406619232867343310">"ଅଜଣା"</string>
<string name="device_info_protected_single_press" msgid="3810785480060743677">"ସୂଚନା ଦେଖାଇବା ପାଇଁ ଟାପ କରନ୍ତୁ"</string>
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"ନୂଆ ଡିଭାଇସକୁ ପେୟାର କରନ୍ତୁ"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ବ୍ଲୁଟୁଥ୍"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ଆସନ୍ତାକାଲି ସ୍ୱତଃ ଚାଲୁ ହେବ"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ଡାହାଣ କାନକୁ ପେୟାର କର"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ବାମ କାନକୁ ପେୟାର କର"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ଅନ୍ୟ କାନକୁ ପେୟାର କରନ୍ତୁ"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ବ୍ଲୁଟୁଥ LE ଅଡିଓକୁ ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ଯଦି ଡିଭାଇସ LE ଅଡିଓ ହାର୍ଡୱେର କ୍ଷମତାକୁ ସମର୍ଥନ କରେ ତେବେ ଏହା ବ୍ଲୁଟୁଥ LE ଅଡିଓ ଫିଚରକୁ ଅକ୍ଷମ କରେ।"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"ବ୍ଲୁଟୁଥ LE ଅଡିଓ ମୋଡ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"ବ୍ଲୁଟୁଥ LE ଅଡିଓ ବ୍ରଡକାଷ୍ଟ UI ପ୍ରିଭ୍ୟୁକୁ ସକ୍ଷମ କରନ୍ତୁ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"ବ୍ୟକ୍ତିଗତ ଅଡିଓ ସେୟାରିଂ ଏବଂ ପ୍ରାଇଭେଟ ବ୍ରଡକାଷ୍ଟ ସମେତ LE ଅଡିଓ ସେୟାରିଂ UI ପ୍ରିଭ୍ୟୁକୁ ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ଡିଭାଇସ ବିବରଣୀରେ LE ଅଡିଓ ଟୋଗଲ ଦେଖାନ୍ତୁ"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ବାଇପାସ ବ୍ଲୁଟୁଥ LE ଅଡିଓ ଆଲାଉଲିଷ୍ଟ"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ଆଲାଉଲିଷ୍ଟ ମାନଦଣ୍ଡ ପୂରଣ କରିବାକୁ LE ଅଡିଓ ପେରିଫେରାଲକୁ ଯାଞ୍ଚ କରାଯାଇନଥିଲେ ମଧ୍ୟ ଡିଫଲ୍ଟ ଭାବେ LE ଅଡିଓ ବ୍ୟବହାର କରନ୍ତୁ।"</string>
@@ -130,7 +134,7 @@
<string name="connected_device_fast_pair_device_title" msgid="543124539265592392">"ଆକାଉଣ୍ଟ ସହ ସମ୍ବନ୍ଧିତ"</string>
<string name="connected_device_previously_associated_fast_pair_device_title" msgid="8353405823992023457">"ଆକାଉଣ୍ଟ ସହ ପୂର୍ବରୁ ବ୍ୟବହୃତ"</string>
<string name="connected_device_add_device_summary" msgid="8671009879957120802">"ପେୟାର କରିବା ପାଇଁ ବ୍ଲୁଟୁଥ ଚାଲୁ ହେବ"</string>
- <string name="connected_device_connections_title" msgid="4164120115341579170">"କନେକ୍ସନ ପସନ୍ଦଗୁଡ଼ିକ"</string>
+ <string name="connected_device_connections_title" msgid="4164120115341579170">"କନେକ୍ସନ ପସନ୍ଦ"</string>
<string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"ପୂର୍ବରୁ ସଂଯୋଗ ହୋଇଛି"</string>
<string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"ବ୍ଲୁ-ଟୁଥ୍ ଅନ୍ କରାଗଲା"</string>
<string name="previous_connected_see_all" msgid="7759413145713251328">"ସବୁ ଦେଖନ୍ତୁ"</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ଆପଣଙ୍କ ନେଟୱାର୍କ ଏବଂ ୱାୟାରଲେସ ସିଗନାଲକୁ ବ୍ୟବହାର କରି ସ୍ୱତଃ ସେଟ କରନ୍ତୁ"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ସ୍ୱତଃ ଟାଇମ ଜୋନ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ଆପଣଙ୍କ ନିକଟରେ ଥିବା ମୋବାଇଲ ନେଟୱାର୍କ ଆଧାରରେ ସ୍ୱତଃ ସେଟ କରନ୍ତୁ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ଯଦି ଉପଲବ୍ଧ ଥାଏ, ତେବେ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନକୁ ବ୍ୟବହାର କରି ସ୍ୱତଃ ସେଟ ହୋଇଥାଏ"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ଡିଫଲ୍ଟ ସ୍ଥାନର ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-ଘଣ୍ଟିଆ ଫର୍ମାଟ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"ସମୟ"</string>
@@ -300,7 +303,7 @@
<string name="security_status_title" msgid="6958004275337618656">"ସୁରକ୍ଷା ସ୍ଥିତି"</string>
<string name="security_dashboard_summary" msgid="7571035662779425918">"ସ୍କ୍ରିନ୍ ଲକ୍, Find My Device, ଆପ୍ ସୁରକ୍ଷା"</string>
<string name="safety_center_title" msgid="7732397372178774777">"ସୁରକ୍ଷା ଏବଂ ଗୋପନୀୟତା"</string>
- <string name="safety_center_summary" msgid="3554867379951053869">"ଆପ ସୁରକ୍ଷା, ଡିଭାଇସ ଲକ, ଅନୁମତିଗୁଡ଼ିକ"</string>
+ <string name="safety_center_summary" msgid="3554867379951053869">"ଆପ ସୁରକ୍ଷା, ଡିଭାଇସ ଲକ, ଅନୁମତି"</string>
<string name="security_settings_face_preference_summary" msgid="6675126437396914838">"ଫେସ ଯୋଗ କରାଯାଇଛି"</string>
<string name="security_settings_face_preference_summary_none" msgid="523320857738436024">"ସେଟଅପ ଆବଶ୍ୟକ"</string>
<string name="security_settings_face_preference_title" msgid="2126625155005348417">"ଫେସ ଅନଲକ"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ଆଙ୍ଗୁଠିକୁ ଉଠାନ୍ତୁ ଓ ତା’ପରେ ସେନ୍ସରକୁ ପୁଣିଥରେ ଛୁଅଁନ୍ତୁ"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ଏକ ମରାମତି କେନ୍ଦ୍ରକୁ ଭିଜିଟ କରନ୍ତୁ।"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"ସ୍କ୍ରିନ-ବନ୍ଦ ଥିବା ବେଳେ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ସ୍କ୍ରିନ ବନ୍ଦ ଥିବା ବେଳେ ମଧ୍ୟ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"ସ୍କ୍ରିନ-ବନ୍ଦ ଅଛି, ଅନଲକ କରନ୍ତୁ"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"ଅଧିକ ସୁରକ୍ଷା ସେଟିଂସ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ୱାର୍କ ପ୍ରୋଫାଇଲ ଲକ, ଏନକ୍ରିପସନ ଏବଂ ଆହୁରି ଅନେକ କିଛି"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ଏନକ୍ରିପ୍ସନ, କ୍ରେଡେନ୍ସିଆଲ ଏବଂ ଆହୁରି ଅନେକ କିଛି"</string>
@@ -712,7 +718,7 @@
<string name="face_unlock_set_unlock_pin" msgid="9034912683791069602">"PIN • ଫେସ"</string>
<string name="face_unlock_set_unlock_password" msgid="5874950853246424756">"ପାସୱାର୍ଡ • ଫେସ"</string>
<string name="face_unlock_skip_face" msgid="189695556498300008">"ଫେସ୍ ଅନଲକ୍ ବିନା ଜାରି ରଖନ୍ତୁ"</string>
- <string name="biometrics_unlock_skip_biometrics" msgid="7399882488272450182">"ଟିପଚିହ୍ନ କିମ୍ବା ଫେସ ବିନା ଜାରି ରଖନ୍ତୁ"</string>
+ <string name="biometrics_unlock_skip_biometrics" msgid="7399882488272450182">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ କିମ୍ବା ଫେସ ବିନା ଜାରି ରଖନ୍ତୁ"</string>
<string name="unlock_set_unlock_mode_off" msgid="4632139864722236359">"କିଛି ନାହିଁ"</string>
<string name="unlock_set_unlock_mode_none" msgid="5596049938457028214">"ସ୍ୱାଇପ"</string>
<string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"ପାଟର୍ନ"</string>
@@ -820,12 +826,12 @@
<string name="lockpattern_tutorial_cancel_label" msgid="775215267818384016">"ବାତିଲ କରନ୍ତୁ"</string>
<string name="lockpattern_tutorial_continue_label" msgid="1329049481210689408">"ଆଗକୁ"</string>
<string name="manage_device_admin" msgid="1044620606203916275">"ଡିଭାଇସ ଆଡମିନ ଆପ"</string>
- <string name="number_of_device_admins_none" msgid="152926922020437312">"କୌଣସି ସକ୍ରିୟ ଆପ୍ ନାହିଁ"</string>
+ <string name="number_of_device_admins_none" msgid="152926922020437312">"କୌଣସି ସକ୍ରିୟ ଆପ ନାହିଁ"</string>
<string name="number_of_device_admins" msgid="3402909995362162876">"{count,plural, =1{#ଟି ସକ୍ରିୟ ଆପ}other{#ଟି ସକ୍ରିୟ ଆପ୍ସ}}"</string>
<string name="manage_trust_agents" msgid="6410149930029992356">"ବିଶ୍ୱସ୍ତ ଏଜେଣ୍ଟ"</string>
<string name="disabled_because_no_backup_security" msgid="4998095356607488854">"ବ୍ୟବହାର କରିବା ପାଇଁ, ପ୍ରଥମେ ଏକ ସ୍କ୍ରିନ୍ ଲକ୍ ସେଟ୍ କରନ୍ତୁ"</string>
<string name="manage_trust_agents_summary" msgid="6423843123607674286">"କିଛି ନୁହେଁ"</string>
- <string name="manage_trust_agents_summary_on" msgid="3302574418419446146">"{count,plural, =1{1ଟି ସକ୍ରିୟ ବିଶ୍ୱସ୍ତ ଏଜେଣ୍ଟ}other{#ଟି ସକ୍ରିୟ ବିଶ୍ୱସ୍ତ ଏଜେଣ୍ଟ}}"</string>
+ <string name="manage_trust_agents_summary_on" msgid="3302574418419446146">"{count,plural, =1{1 ସକ୍ରିୟ ବିଶ୍ୱସ୍ତ ଏଜେଣ୍ଟ}other{# ସକ୍ରିୟ ବିଶ୍ୱସ୍ତ ଏଜେଣ୍ଟ}}"</string>
<string name="bluetooth_settings" msgid="2967239493428695171">"ବ୍ଲୁଟୁଥ୍"</string>
<string name="bluetooth_settings_title" msgid="2642029095769509647">"ବ୍ଲୁଟୁଥ"</string>
<string name="bluetooth_pairing_request" msgid="7762990650683525640">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ପେୟାର କରିବେ?"</string>
@@ -925,7 +931,7 @@
<string name="show_hdr_sdr_ratio" msgid="4188007289024955585">"HDR/SDR ଅନୁପାତ ଦେଖାନ୍ତୁ"</string>
<string name="show_hdr_sdr_ratio_summary" msgid="986292785096013733">"ବର୍ତ୍ତମାନର HDR/SDR ଅନୁପାତ ଦେଖାନ୍ତୁ"</string>
<string name="nfc_quick_toggle_title" msgid="3607620705230351666">"NFC"</string>
- <string name="nfc_secure_settings_title" msgid="4906958426927741485">"NFC ପାଇଁ ଡିଭାଇସ୍ ଅନଲକ୍ ଆବଶ୍ୟକ"</string>
+ <string name="nfc_secure_settings_title" msgid="4906958426927741485">"NFC ପାଇଁ ଡିଭାଇସ ଅନଲକ ଆବଶ୍ୟକ"</string>
<string name="android_beam_settings_title" msgid="2797963824490671295">"Android ବିମ୍"</string>
<string name="android_beam_on_summary" msgid="6067720758437490896">"NFC ମାଧ୍ୟମରେ ଆପ୍ର କଣ୍ଟେଣ୍ଟ ପଠାଇବାକୁ ପ୍ରସ୍ତୁତ"</string>
<string name="android_beam_off_summary" msgid="5693961375631325042">"ବନ୍ଦ"</string>
@@ -1290,7 +1296,7 @@
<string name="dark_ui_auto_mode_title" msgid="9027528859262295099">"ସିଡୁଲ"</string>
<string name="dark_ui_auto_mode_never" msgid="3980412582267787662">"କିଛି ନାହିଁ"</string>
<string name="dark_ui_auto_mode_auto" msgid="6658909029498623375">"ସନ୍ଧ୍ୟାରୁ ସକାଳ ଯାଏଁ ଚାଲୁ ରହେ"</string>
- <string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"କଷ୍ଟମ୍ ସମୟରେ ଚାଲୁ ହୁଏ"</string>
+ <string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"କଷ୍ଟମ ସମୟରେ ଚାଲୁ ହୁଏ"</string>
<string name="dark_ui_auto_mode_custom_bedtime" msgid="8465023741946439266">"ଶୋଇବା ସମୟରେ ଚାଲୁ ହୁଏ"</string>
<string name="dark_ui_status_title" msgid="3505119141437774329">"ସ୍ଥିତି"</string>
<string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"କେବେ ବି ସ୍ୱତଃ ଚାଲୁ ହେବ ନାହିଁ"</string>
@@ -1303,7 +1309,7 @@
<string name="dark_ui_summary_on_auto_mode_custom" msgid="2526935680241734784">"<xliff:g id="ID_1">%1$s</xliff:g>ରେ ସ୍ୱଚାଳିତ ଭାବେ ବନ୍ଦ ହେବ"</string>
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"ଶୋଇବା ସମୟ ପରେ ସ୍ୱଚାଳିତ ଭାବେ ବନ୍ଦ ହେବ"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"<xliff:g id="ID_1">%1$s</xliff:g> ଶେଷ ହେଲେ ବନ୍ଦ ହେବ"</string>
- <string name="dark_ui_text" msgid="4392646155331126666">"ଆପଣଙ୍କ ଫୋନର ବ୍ୟାଟେରୀକୁ ଅଧିକ ସମୟ ଚାର୍ଜ ରଖିବାରେ ସାହାଯ୍ୟ କରିବା ପାଇଁ ଗାଢ଼ ଥିମ୍ ଏକ କଳା ପୃଷ୍ଠପଟ ବ୍ୟବହାର କରିଥାଏ। ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ ବନ୍ଦ ହେବା ପରେ ଗାଢ଼ା ଥିମ୍ ଚାଲୁ ହେବା ପାଇଁ ସିଡୁଲ୍ ହୋଇଥାଏ।"</string>
+ <string name="dark_ui_text" msgid="4392646155331126666">"ଆପଣଙ୍କ ଫୋନର ବେଟେରୀକୁ ଅଧିକ ସମୟ ଚାର୍ଜ ରଖିବାରେ ସାହାଯ୍ୟ କରିବା ପାଇଁ ଡାର୍କ ଥିମ ଏକ କଳା ପୃଷ୍ଠପଟ ବ୍ୟବହାର କରିଥାଏ। ଆପଣଙ୍କ ସ୍କ୍ରିନ ବନ୍ଦ ହେବା ପରେ ଡାର୍କ ଥିମ ଚାଲୁ ହେବା ପାଇଁ ସିଡୁଲ ହୋଇଥାଏ।"</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"ବର୍ତ୍ତମାନ ଗାଢ଼ା ଥିମ ଆପଣଙ୍କ ଶୋଇବା ସମୟ ମୋଡ ସିଡୁଲକୁ ଅନୁସରଣ କରୁଛି"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"ଶୋଇବା ସମୟ ମୋଡ ସେଟିଂସ"</string>
<string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{ମୋଡଗୁଡ଼ିକ ମଧ୍ୟ ଡାର୍କ ଥିମକୁ ସକ୍ରିୟ କରିପାରିବ}=1{{mode_1} ମଧ୍ୟ ଡାର୍କ ଥିମକୁ ସକ୍ରିୟ କରିପାରିବ}=2{{mode_1} ଏବଂ {mode_2} ମଧ୍ୟ ଡାର୍କ ଥିମକୁ ସକ୍ରିୟ କରିପାରିବ}=3{{mode_1}, {mode_2} ଏବଂ {mode_3} ମଧ୍ୟ ଡାର୍କ ଥିମକୁ ସକ୍ରିୟ କରିପାରିବ}other{{mode_1}, {mode_2} ଏବଂ ଅଧିକ # ମଧ୍ୟ ଡାର୍କ ଥିମକୁ ସକ୍ରିୟ କରିପାରିବ}}"</string>
@@ -1339,7 +1345,7 @@
<string name="doze_title" msgid="1523090408230862316">"ବିଜ୍ଞପ୍ତି ପାଇଁ ସ୍କ୍ରିନ ସକ୍ରିୟ କରନ୍ତୁ"</string>
<string name="doze_summary" msgid="8252867381522942804">"ଯେତେବେଳେ ସ୍କ୍ରିନ ଗାଢ଼ ହୁଏ, ନୂଆ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପାଇଁ ଏହା ଚାଲୁ ହୋଇଥାଏ"</string>
<string name="doze_always_on_title" msgid="7326245192352868477">"ସର୍ବଦା ସମୟ ଏବଂ ସୂଚନା ଦେଖାନ୍ତୁ"</string>
- <string name="doze_always_on_summary" msgid="509097829739647852">"ବ୍ୟାଟେରୀ ବ୍ୟବହାରରେ ବୃଦ୍ଧି"</string>
+ <string name="doze_always_on_summary" msgid="509097829739647852">"ବେଟେରୀ ବ୍ୟବହାରରେ ବୃଦ୍ଧି"</string>
<string name="force_bold_text" msgid="4620929631102086716">"ବୋଲ୍ଡ ଟେକ୍ସଟ"</string>
<string name="title_font_size" msgid="570613010306330622">"ଫଣ୍ଟର ଆକାର"</string>
<string name="short_summary_font_size" msgid="8444689613442419978">"ଟେକ୍ସଟକୁ ବଡ଼ କିମ୍ବା ଛୋଟ କରନ୍ତୁ"</string>
@@ -1835,7 +1841,7 @@
<string name="filter" msgid="9039576690686251462">"ଫିଲ୍ଟର୍"</string>
<string name="filter_dlg_title" msgid="3086282431958601338">"ଫିଲ୍ଟର ବିକଳ୍ପ ବାଛନ୍ତୁ"</string>
<string name="filter_apps_all" msgid="5705421199299914620">"ସମସ୍ତ ଆପସ୍"</string>
- <string name="filter_apps_disabled" msgid="5068011814871004105">"ଅକ୍ଷମ ହୋଇଥିବା ଆପ୍"</string>
+ <string name="filter_apps_disabled" msgid="5068011814871004105">"ଅକ୍ଷମ ହୋଇଥିବା ଆପ"</string>
<string name="filter_apps_third_party" msgid="9049447784849114843">"ଡାଉନ୍ଲୋଡ୍ ହୋଇଗଲା"</string>
<string name="filter_apps_running" msgid="535465683273284141">"ଚାଲୁଛି"</string>
<string name="not_installed" msgid="5074606858798519449">"ଏହି ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ଇନଷ୍ଟଲ୍ କରାଯାଇ ନାହିଁ"</string>
@@ -1895,7 +1901,7 @@
<string name="running_processes_item_description_p_p" msgid="3292999232897469679">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> ପ୍ରକ୍ରିୟା ଓ <xliff:g id="NUMSERVICES">%2$d</xliff:g> ସେବା"</string>
<string name="running_processes_header_title" msgid="558961782589967366">"ଡିଭାଇସ୍ ମେମୋରୀ"</string>
<string name="running_processes_header_footer" msgid="2726092156680487584">"ଆପ୍ ରାମ୍ ବ୍ୟବହାର"</string>
- <string name="running_processes_header_system_prefix" msgid="8819527769608555124">"ସିଷ୍ଟମ୍"</string>
+ <string name="running_processes_header_system_prefix" msgid="8819527769608555124">"ସିଷ୍ଟମ"</string>
<string name="running_processes_header_apps_prefix" msgid="4151874328324238133">"ଆପ୍ସ"</string>
<string name="running_processes_header_free_prefix" msgid="4271100378295864738">"ଖାଲି"</string>
<string name="running_processes_header_used_prefix" msgid="5205762402234243007">"ବ୍ୟବହୃତ"</string>
@@ -1916,7 +1922,7 @@
<string name="process_provider_in_use_description" msgid="6730020083976048028">"<xliff:g id="COMP_NAME">%1$s</xliff:g> ପ୍ରଦାନକାରୀ ବ୍ୟବହାରରେ ଅଛି।"</string>
<string name="runningservicedetails_stop_dlg_title" msgid="6201041461740445113">"ସିଷ୍ଟମ୍ ସେବା ବନ୍ଦ କରିବେ?"</string>
<string name="language_input_gesture_title" msgid="3292455685728572960">"ଭାଷା, ଇନପୁଟ୍ ଓ ଇଙ୍ଗିତ"</string>
- <string name="language_settings" msgid="8700174277543875046">"ଭାଷା ଓ ଇନପୁଟ୍"</string>
+ <string name="language_settings" msgid="8700174277543875046">"ଭାଷା ଓ ଇନପୁଟ"</string>
<string name="languages_settings" msgid="5784775502251770671">"ଭାଷାଗୁଡ଼ିକ"</string>
<string name="keyboard_settings" msgid="184185708597386454">"କୀବୋର୍ଡ"</string>
<string name="language_empty_list_user_restricted" msgid="8050367405839231863">"ଆପଣ ଡିଭାଇସ୍ର ଭାଷା ବଦଳାଇପାରିବେ ନାହିଁ।"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"କୀବୋର୍ଡ ସମାନ କୀ ଶୀଘ୍ର ବାରମ୍ବାର ଦବାଇବାକୁ ଅଣଦେଖା କରେ"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"ବାଉନ୍ସ କୀ ଥ୍ରେସହୋଲ୍ଡ"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ଆପଣଙ୍କ କୀବୋର୍ଡ ବାରମ୍ବାର କୀ ଦବାଇବାକୁ ଅଣଦେଖା କରୁଥିବା ସମୟ ଅବଧି ବାଛନ୍ତୁ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2ସେ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4ସେ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6ସେ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"କଷ୍ଟମ"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"କଷ୍ଟମ ମୂଲ୍ୟ"</string>
<string name="slow_keys" msgid="2891452895499690837">"ଶ୍ଲୋ କୀଗୁଡ଼ିକ"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ସକ୍ରିୟ କରିବାକୁ ଏକ କୀ ଦବାଇବା ପାଇଁ ଲାଗୁଥିବା ସମୟକୁ ଏହା ଆଡଜଷ୍ଟ କରେ"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ଷ୍ଟିକି କୀଗୁଡ଼ିକ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ଏକାଠି କୀଗୁଡ଼ିକୁ ଦବାଇ ଧରିବା ପରିବର୍ତ୍ତେ ସର୍ଟକର୍ଟଗୁଡ଼ିକ ପାଇଁ ଥରକେ ଗୋଟିଏ କୀ ଦବାନ୍ତୁ"</string>
<string name="mouse_keys" msgid="6237254627808525540">"ମାଉସ କୀଗୁଡ଼ିକ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ମାଉସ କୀଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବା"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ପଏଣ୍ଟରକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ଆପଣଙ୍କ କୀବୋର୍ଡକୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"ମାଉସ ରିଭର୍ସ ସ୍କ୍ରୋଲିଂ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"ପୃଷ୍ଠାକୁ ତଳକୁ ମୁଭ କରିବା ପାଇଁ ଉପରକୁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ବାମ ଏବଂ ଡାହାଣ ବଟନକୁ ସ୍ୱାପ କରନ୍ତୁ"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ମାଉସର ବାମ ବଟନକୁ ଆପଣଙ୍କ ଡାହାଣ ବଟନ ଭାବେ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> ପାଇଁ ମାଉସ କୀ"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ମାଉସ ପଏଣ୍ଟରକୁ ମୁଭ କରିବା ପାଇଁ <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> କୀଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ପ୍ରାଥମିକ ମାଉସ ବଟନରେ କ୍ଲିକ କରିବା ପାଇଁ <xliff:g id="CLICK_LABEL">%s</xliff:g> କୀ\'କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ପ୍ରାଥମିକ ମାଉସ ବଟନରେ କ୍ଲିକ କରିବା ପାଇଁ <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> କୀ\'କୁ ଦବାଇ ଧରି ରଖନ୍ତୁ"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ପ୍ରାଥମିକ ମାଉସ ବଟନକୁ ରିଲିଜ କରିବା ପାଇଁ <xliff:g id="RELEASE_LABEL">%s</xliff:g> କୀ\'କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"ସ୍କ୍ରୋଲ ମୋଡକୁ ଟୋଗଲ କରିବା ପାଇଁ <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> କୀ\'କୁ ବ୍ୟବହାର କରନ୍ତୁ। ଏହା ଫଳରେ <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> କୀ\'ଗୁଡ଼ିକ ଭ୍ୟୁକୁ ଉପର, ତଳ, ବାମ କିମ୍ବା ଡାହାଣକୁ ସ୍କ୍ରୋଲ କରିବ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ଦ୍ୱିତୀୟ ମାଉସ ବଟନରେ କ୍ଲିକ କରିବା ପାଇଁ <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> କୀ\'କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"କୀବୋର୍ଡ଼ ସର୍ଟକଟଗୁଡ଼ିକ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ସର୍ଟକଟଗୁଡ଼ିକର ତାଲିକା ଦେଖାନ୍ତୁ"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"ୱର୍କ ପ୍ରୋଫାଇଲ୍ କୀବୋର୍ଡ & ଟୁଲ୍ଗୁଡ଼ିକ"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> ପାଇଁ ଏକ ନୂଆ କୀ ବାଛନ୍ତୁ:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ଫିଜିକାଲ କୀବୋର୍ଡ ଆକ୍ସେସିବିଲିଟୀ"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ଷ୍ଟିକି କୀ, ବାଉନ୍ସ କୀ, ମାଉସ କୀ"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"କୀଗୁଡ଼ିକୁ ରିପିଟ କରନ୍ତୁ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ରିପିଟ ପୂର୍ବରୁ ହେବା ବିଳମ୍ବ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ରିପିଟ ରେଟ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"କୀ ରିଲିଜ ନହେବା ପର୍ଯ୍ୟନ୍ତ ଏହାର କେରେକ୍ଟରକୁ ରିପିଟ କରିବା ପାଇଁ ଗୋଟିଏ କୀ\'କୁ ଦବାଇ ଧରନ୍ତୁ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> ଲେଆଉଟ"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ପୂର୍ବ-ନିର୍ଦ୍ଧାରିତ"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ସ୍ୱତଃ: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2112,12 +2124,12 @@
<string name="accessibility_pointer_and_touchpad_summary" msgid="6089872217234956258">"ପଏଣ୍ଟର କଲର, ସାଇଜ ଓ ଆହୁରି ଅନେକ କିଛି"</string>
<string name="accessibility_pointer_color_customization_title" msgid="3376392766113189508">"ପଏଣ୍ଟର ରଙ୍ଗର କଷ୍ଟମାଇଜେସନ"</string>
<string name="accessibility_color_contrast_title" msgid="5757724357142452378">"ରଙ୍ଗ କଣ୍ଟ୍ରାଷ୍ଟ"</string>
- <string name="accessibility_color_contrast_intro" msgid="7795090401101214930">"ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ଟେକ୍ସଟ, ବଟନ ଏବଂ ଆଇକନକୁ ଅଧିକ ସ୍ୱତନ୍ତ୍ର ଭାବେ ଦେଖାଇଥାଏ। ଆପଣଙ୍କ ସଠିକ ହୋଇଥିବା କଣ୍ଟ୍ରାଷ୍ଟ ବାଛନ୍ତୁ।"</string>
- <string name="color_contrast_note" msgid="7592686603372566198">"କିଛି ଆପ୍ସ ସମସ୍ତ ରଙ୍ଗ ଏବଂ ଟେକ୍ସଟ କଣ୍ଟ୍ରାଷ୍ଟ ସେଟିଂସକୁ ସପୋର୍ଟ କରିନପାରେ"</string>
+ <string name="accessibility_color_contrast_intro" msgid="7795090401101214930">"ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ଟେକ୍ସଟ, ବଟନ ଏବଂ ଆଇକନକୁ ଅଧିକ ସ୍ୱତନ୍ତ୍ର ଭାବେ ଦେଖାଇଥାଏ। ଆପଣଙ୍କୁ ସବୁଠାରୁ ଭଲ ଦେଖାଯାଉଥିବା କଣ୍ଟ୍ରାଷ୍ଟ ବାଛନ୍ତୁ।"</string>
+ <string name="color_contrast_note" msgid="7592686603372566198">"କିଛି ଆପ ସମସ୍ତ ରଙ୍ଗ ଏବଂ ଟେକ୍ସଟ କଣ୍ଟ୍ରାଷ୍ଟ ସେଟିଂସକୁ ସପୋର୍ଟ କରିନପାରେ"</string>
<string name="color_contrast_preview" msgid="6791430227535363883">"ପ୍ରିଭ୍ୟୁ"</string>
<string name="color_contrast_preview_sender_name" msgid="8641943417589238147">"ହେଲେନ, ଆଦାମ"</string>
<string name="color_contrast_preview_email_send_date" msgid="2108702726171600080">"2 ଦିନ ପୂର୍ବେ"</string>
- <string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"ଫଲୋ ଅପ୍ କରିବେ?"</string>
+ <string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"ଫଲୋ ଅପ କରିବେ?"</string>
<string name="color_contrast_preview_email_title" msgid="198712116139754823">"ବିଜିନେସ ଟ୍ରିପ ରିପୋର୍ଟ"</string>
<string name="color_contrast_preview_email_body" msgid="2714343154965937945">"ଅଧିକ ସହାୟତା ପାଇଁ ମୋ ସହ କିମ୍ବା ହେଲେନ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ। ଏହି ରିପୋର୍ଟଟି ଏସବୁ ହେବ"</string>
<string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"କ୍ଲାଏଣ୍ଟର ଖର୍ଚ୍ଚ"</string>
@@ -2141,9 +2153,9 @@
<string name="talkback_title" msgid="8756080454514251327">"Talkback"</string>
<string name="talkback_summary" msgid="5820927220378864281">"ଦୃଷ୍ଟିହୀନ କିମ୍ବା କମ ଦୃଷ୍ଟି ଶକ୍ତିଥିବା ଲୋକଙ୍କ ପାଇଁ ସ୍କ୍ରିନ ରିଡର"</string>
<string name="select_to_speak_summary" msgid="1995285446766920925">"ଜୋରରେ ଶୁଣିବା ପାଇଁ ସ୍କ୍ରିନରେ ଥିବା ଆଇଟମଗୁଡ଼ିକ ଉପରେ ଟାପ କରନ୍ତୁ"</string>
- <string name="accessibility_captioning_title" msgid="4561871958958925225">"କେପସନ ପସନ୍ଦଗୁଡ଼ିକ"</string>
+ <string name="accessibility_captioning_title" msgid="4561871958958925225">"କେପ୍ସନ ପସନ୍ଦ"</string>
<string name="accessibility_captioning_about_title" msgid="3542171637334191563">"କ୍ୟାପ୍ସନ୍ ପସନ୍ଦଗୁଡ଼ିକ ବିଷୟରେ"</string>
- <string name="accessibility_captioning_footer_learn_more_content_description" msgid="5730040700677017706">"କ୍ୟାପ୍ସନ୍ ପସନ୍ଦଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"</string>
+ <string name="accessibility_captioning_footer_learn_more_content_description" msgid="5730040700677017706">"କେପ୍ସନ ପସନ୍ଦଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"</string>
<string name="accessibility_screen_magnification_title" msgid="1211169976144629087">"ମେଗ୍ନିଫିକେସନ"</string>
<string name="accessibility_screen_magnification_shortcut_title" msgid="2387963646377987780">"ମେଗ୍ନିଫିକେସନ ସର୍ଟକଟ"</string>
<string name="accessibility_screen_magnification_follow_typing_title" msgid="6379517513916651560">"ଟାଇପିଂ ମେଗ୍ନିଫାଏ କରନ୍ତୁ"</string>
@@ -2226,7 +2238,7 @@
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"ବୁଝିଗଲି"</string>
<string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"ବଟନକୁ କଷ୍ଟମାଇଜ କରନ୍ତୁ"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"ଅଧିକ ବିକଳ୍ପ"</string>
- <string name="accessibility_shortcut_title" msgid="8125867833704517463">"<xliff:g id="SERVICE">%1$s</xliff:g> ସର୍ଟକଟ୍"</string>
+ <string name="accessibility_shortcut_title" msgid="8125867833704517463">"<xliff:g id="SERVICE">%1$s</xliff:g> ସର୍ଟକଟ"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ"</string>
<string name="accessibility_shortcut_edit_summary_software_gesture" msgid="7346399253904683940">"ଆକ୍ସେସିବିଲିଟୀ ଜେଶ୍ଚର୍"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"2 ଆଙ୍ଗୁଠି ସାହାଯ୍ୟରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
@@ -2366,11 +2378,11 @@
<string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"କଲର ଇନଭର୍ସନ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"କ୍ୟାପ୍ସନଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ"</string>
<string name="accessibility_captioning_primary_switch_summary" msgid="2544094070306830218">"କେବଳ ସମର୍ଥିତ ଆପ ପାଇଁ"</string>
- <string name="captioning_appearance_title" msgid="3128792092290011408">"କ୍ୟାପ୍ସନର ଆକାର ଏବଂ ଷ୍ଟାଇଲ"</string>
+ <string name="captioning_appearance_title" msgid="3128792092290011408">"କେପ୍ସନର ସାଇଜ ଏବଂ ଷ୍ଟାଇଲ"</string>
<string name="captioning_appearance_summary" msgid="4620682807315588019">"<xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g> ଟେକ୍ସଟ ଆକାର"</string>
<string name="captioning_more_options_title" msgid="3484496882942539652">"ଅଧିକ ବିକଳ୍ପ"</string>
<string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"କ୍ୟାପ୍ସନ ପଢ଼ିବା ସହଜ କରିବାକୁ ଏହାର ଆକାର ଓ ଷ୍ଟାଇଲକୁ କଷ୍ଟମାଇଜ କରନ୍ତୁ"</string>
- <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"ଏହି କ୍ୟାପ୍ସନ ପସନ୍ଦଗୁଡ଼ିକ ସମସ୍ତ ମିଡିଆ ଆପ୍ସ ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ"</string>
+ <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"ଏହି କେପ୍ସନ ପସନ୍ଦଗୁଡ଼ିକ ସମସ୍ତ ମିଡିଆ ଆପକୁ ସପୋର୍ଟ କରେ ନାହିଁ"</string>
<string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ"</string>
<string name="accessibility_shortcut_type_software_gesture" msgid="5608959693931019059">"ତଳୁ 2-ଆଙ୍ଗୁଠି ସାହାଯ୍ୟରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
<string name="accessibility_shortcut_type_hardware" msgid="4834144210432451916">"ଭଲ୍ୟୁମ କୀ\'କୁ ଧରି ରଖନ୍ତୁ"</string>
@@ -2444,7 +2456,7 @@
<string name="captioning_standard_options_title" msgid="5360264497750980205">"ଷ୍ଟାଣ୍ଡାର୍ଡ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
<string name="captioning_locale" msgid="5533303294290661590">"ଭାଷା"</string>
<string name="captioning_text_size" msgid="5764254558945371745">"କେପ୍ସନ ସାଇଜ"</string>
- <string name="captioning_preset" msgid="4174276086501638524">"କ୍ୟାପସନ୍ ଷ୍ଟାଇଲ୍"</string>
+ <string name="captioning_preset" msgid="4174276086501638524">"କେପ୍ସନର ଷ୍ଟାଇଲ"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"କଷ୍ଟମ୍ ବିକଳ୍ପଗୁଡିକ"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"ପୃଷ୍ଠପଟ ରଙ୍ଗ"</string>
<string name="captioning_background_opacity" msgid="6453738649182382614">"ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡର ଓପାସିଟି"</string>
@@ -2472,7 +2484,7 @@
<string name="color_magenta" msgid="8943538189219528423">"ମାଜେଣ୍ଟା"</string>
<string name="capabilities_list_title" msgid="1225853611983394386">"<xliff:g id="SERVICE">%1$s</xliff:g> ଆବଶ୍ୟକ କରେ:"</string>
<string name="touch_filtered_warning" msgid="4225815157460318241">"ଗୋଟିଏ ଆପ ଏକ ଅସ୍ପଷ୍ଟ ଅନୁରୋଧକୁ ଅଣଦେଖା କରୁଥିବା ଯୋଗୁଁ, ସେଟିଂସ ଆପଣଙ୍କ ଉତ୍ତରକୁ ଯାଞ୍ଚ କରିପାରିବ ନାହିଁ।"</string>
- <string name="accessibility_dialog_button_allow" msgid="8274918676473216697">"ଅନୁମତି"</string>
+ <string name="accessibility_dialog_button_allow" msgid="8274918676473216697">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="accessibility_dialog_button_deny" msgid="2037249860078259284">"ଅଗ୍ରାହ୍ୟ"</string>
<string name="accessibility_dialog_button_stop" msgid="7584815613743292151">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="accessibility_dialog_button_cancel" msgid="8625997437316659966">"ଚାଲୁ ରଖ"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ପାୱାର୍ ବ୍ୟବହାର ଆଡ୍ଜଷ୍ଟ କରନ୍ତୁ"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ଅନ୍ତର୍ଭୁକ୍ତ ଥିବା ପ୍ୟାକେଜ୍ଗୁଡିକ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ଆପ୍ସ ଠିକ୍ ଭାବେ ଚାଲୁଛି"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ବେଟେରୀ ରିପ୍ଲେସମେଣ୍ଟ ପାଇଁ ସୁପାରିଶ କରାଯାଇଛି"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ବେଟେରୀ କ୍ଷମତା ଏବଂ ଚାର୍ଜିଂ ପରଫରମାନ୍ସ ହ୍ରାସ ପାଇଥାଏ ଏବଂ ବେଟେରୀ ରିପ୍ଲେସମେଣ୍ଟ ପାଇଁ ସୁପାରିଶ କରାଯାଏ।"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ବ୍ୟାଟେରୀ ସ୍ତର କମ୍ ଅଛି"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ବ୍ୟାଟେରୀ ଲାଇଫକୁ ବଢ଼ାଇବା ପାଇଁ ବ୍ୟାଟେରୀ ସେଭରକୁ ଚାଲୁ କରନ୍ତୁ"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ବ୍ୟାଟେରୀ ଲାଇଫକୁ ଉନ୍ନତ କରନ୍ତୁ"</string>
@@ -2776,7 +2790,7 @@
<string name="cellular_security_summary" msgid="1893770670709928113">"ନେଟୱାର୍କ ପ୍ରକାର, ଏନକ୍ରିପସନ, ବିଜ୍ଞପ୍ତି ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string>
<string name="cellular_security_top_intro" msgid="6749166804080092892">"ଏହି ସେଟିଂସ ଆପଣଙ୍କ କଲ, ମେସେଜ ଏବଂ ଡାଟାକୁ ପୁରୁଣା କିମ୍ୱା ଏନକ୍ରିପ୍ଟ କରାଯାଇନଥିବା ନେଟୱାର୍କରୁ ସୁରକ୍ଷିତ ରଖିବାରେ ସାହାଯ୍ୟ କରେ ଯାହା ଆପଣଙ୍କ ପାଇଁ ଡାଟା ଚୋରି କିମ୍ୱା ସର୍ଭେଲାନ୍ସ ବିପଦ ସୃଷ୍ଟି କରିପାରେ"</string>
<string name="cellular_security_settings_title" msgid="7779141923670352595">"ମୋବାଇଲ ନେଟୱାର୍କ ସୁରକ୍ଷା"</string>
- <string name="cellular_security_notifications" msgid="4619728340612184944">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
+ <string name="cellular_security_notifications" msgid="4619728340612184944">"ବିଜ୍ଞପ୍ତି"</string>
<string name="cellular_security_notifications_controller_title" msgid="4853056963523277847">"ନେଟୱାର୍କ ବିଜ୍ଞପ୍ତି"</string>
<string name="cellular_security_notifications_controller_summary" msgid="8339863845393759958">"ଆପଣଙ୍କ ଡିଭାଇସ ଏକ ଏନକ୍ରିପ୍ଟ କରାଯାଇନଥିବା ନେଟୱାର୍କ ସହ କନେକ୍ଟ ହେଲେ କିମ୍ବା ଏକ ନେଟୱାର୍କ ଆପଣଙ୍କ ସ୍ୱତନ୍ତ୍ର ଡିଭାଇସ ବା SIM ID ରେକର୍ଡ କରିବା ସମୟରେ ସୂଚନା ପାଆନ୍ତୁ"</string>
<string name="cellular_security_settings_encryption_title" msgid="4013084091666375780">"ଏନକ୍ରିପସନ"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ଏହି VPNକୁ ବିଚ୍ଛିନ୍ନ କରିବେ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ଡିସକନେକ୍ଟ କରନ୍ତୁ"</string>
<string name="vpn_version" msgid="6344167191984400976">"ସଂସ୍କରଣ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ଭର୍ସନ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPNକୁ ଭୁଲିଯାଅ"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ପୂର୍ବରୁ ଥିବା VPNକୁ ବଦଳାଇବେ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ସର୍ବଦା-ଅନ୍ ଥିବା VPN ସେଟ୍ କରିବେ?"</string>
@@ -3020,7 +3033,7 @@
<string name="vpn_disconnected" msgid="7694522069957717501">"VPN ରୁ ବିଚ୍ଛିନ୍ନ ହେଲା"</string>
<string name="vpn_disconnected_summary" msgid="721699709491697712">"କୌଣସିଟି ନୁହେଁ"</string>
<string name="vpn_missing_cert" msgid="5397309964971068272">"ଗୋଟିଏ ସର୍ଟିଫିକେଟ୍ ନାହିଁ। ପ୍ରୋଫାଇଲ୍ ଏଡିଟ୍ କରନ୍ତୁ।"</string>
- <string name="trusted_credentials_system_tab" msgid="675362923690364722">"ସିଷ୍ଟମ୍"</string>
+ <string name="trusted_credentials_system_tab" msgid="675362923690364722">"ସିଷ୍ଟମ"</string>
<string name="trusted_credentials_user_tab" msgid="4978365619630094339">"ୟୁଜର"</string>
<string name="trusted_credentials_disable_label" msgid="6649583220519447947">"ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="trusted_credentials_enable_label" msgid="5551204878588237991">"ସକ୍ଷମ"</string>
@@ -3106,7 +3119,7 @@
<string name="apps_with_restrictions_settings_button" msgid="2648355133416902221">"ଆପ୍ଲିକେସନ ପାଇଁ ସେଟିଂସକୁ ବିସ୍ତାର କରନ୍ତୁ"</string>
<string name="user_choose_copy_apps_to_another_user" msgid="5914037067347012870">"ଇନଷ୍ଟଲ୍ କରିବା ପାଇଁ ଆପଗୁଡ଼ିକୁ ବାଛନ୍ତୁ"</string>
<string name="user_copy_apps_menu_title" msgid="5354300105759670300">"ଉପଲବ୍ଧ ଥିବା ଆପଗୁଡ଼ିକୁ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
- <string name="nfc_payment_settings_title" msgid="2043139180030485500">"କଣ୍ଟାକ୍ଟଲେସ ପେମେଣ୍ଟଗୁଡ଼ିକ"</string>
+ <string name="nfc_payment_settings_title" msgid="2043139180030485500">"କଣ୍ଟାକ୍ଟଲେସ ପେମେଣ୍ଟ"</string>
<string name="nfc_default_payment_settings_title" msgid="2150504446774382261">"ଡିଫଲ୍ଟ ପେମେଣ୍ଟ ଆପ"</string>
<string name="nfc_default_payment_footer" msgid="978535088340021360">"ଏକ ପେମେଣ୍ଟ ଆପ ବ୍ୟବହାର କରି କୌଣସି ପେମେଣ୍ଟ କରିବାକୁ, ଏକ ପେମେଣ୍ଟ ଟର୍ମିନାଲରେ ଆପଣଙ୍କ ଡିଭାଇସର ପଛ ପଟକୁ ଧରି ରଖ"</string>
<string name="nfc_more_details" msgid="1700713533074275233">"ଅଧିକ ଜାଣନ୍ତୁ"</string>
@@ -3229,11 +3242,11 @@
<string name="connected_devices_dashboard_android_auto_no_driving_mode_summary" msgid="6426996842202276640">"ବ୍ଲୁଟୁଥ୍, Android Auto, NFC"</string>
<string name="connected_devices_dashboard_android_auto_no_nfc_no_driving_mode" msgid="1672426693308438634">"ବ୍ଲୁଟୁଥ୍, Android Auto"</string>
<string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"NFC ବନ୍ଦ ଥିବାରୁ ଅନୁପଲବ୍ଧ ଅଛି"</string>
- <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"ବ୍ୟବହାର କରିବାକୁ, ପ୍ରଥମେ ଏକ ପେମେଣ୍ଟ ଆପ୍ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
+ <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"ବ୍ୟବହାର କରିବାକୁ, ପ୍ରଥମେ ଏକ ପେମେଣ୍ଟ ଆପ ଇନଷ୍ଟଲ କରନ୍ତୁ"</string>
<string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"ବର୍ତ୍ତମାନର ଆପଗୁଡ଼ିକ, ଡିଫଲ୍ଟ ଆପଗୁଡ଼ିକ"</string>
<string name="notification_settings_work_profile" msgid="6076211850526353975">"ୱାର୍କ ପ୍ରୋଫାଇଲ୍ରେ ଆପ୍ସ ପାଇଁ ବିଜ୍ଞପ୍ତି ଆକ୍ସେସ ଉପଲବ୍ଧ ନାହିଁ."</string>
<string name="account_dashboard_title" msgid="8228773251948253914">"ପାସୱାର୍ଡ ଏବଂ ଆକାଉଣ୍ଟଗୁଡ଼ିକ"</string>
- <string name="account_dashboard_default_summary" msgid="7976899924144356939">"ସାଇନ-ଇନ ଏବଂ ଅଟୋଫିଲ ପାଇଁ ପରାମର୍ଶଗୁଡ଼ିକ"</string>
+ <string name="account_dashboard_default_summary" msgid="7976899924144356939">"ସାଇନ-ଇନ ଏବଂ ଅଟୋଫିଲ ପାଇଁ ପରାମର୍ଶ"</string>
<string name="app_default_dashboard_title" msgid="4071015747629103216">"ଡିଫଲ୍ଟ ଆପ୍"</string>
<string name="cloned_apps_dashboard_title" msgid="5542076801222950921">"କ୍ଲୋନ ହୋଇଥିବା ଆପ୍ସ"</string>
<string name="desc_cloned_apps_intro_text" msgid="1369621522882622476">"କୌଣସି ଆପର ଏକ ଦ୍ୱିତୀୟ ଇନଷ୍ଟାନ୍ସ ତିଆରି କରନ୍ତୁ, ଯାହା ଫଳରେ ଆପଣ ଏକା ସମୟରେ ଦୁଇଟି ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରିପାରିବେ।"</string>
@@ -3402,16 +3415,16 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{କିଛି ନାହିଁ}=1{1ଟି ସିଡୁଲ୍ ସେଟ୍ ହୋଇଛି}other{#ଟି ସିଡୁଲ୍ ସେଟ୍ ହୋଇଛି}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"ମୋଡ"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"ବିଭ୍ରାନ୍ତିକୁ କମ କରନ୍ତୁ ଏବଂ ଶୋଇବା, କାମ କରିବା, ଡ୍ରାଇଭିଂ କରିବା ଏବଂ ଏହା ମଧ୍ୟରେ ଥିବା ସବୁକିଛି ପାଇଁ ମୋଡ ସହିତ ଆପଣଙ୍କର ଧ୍ୟାନକୁ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ।"</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"ବାଧାଗୁଡ଼ିକୁ କମ କରି ଶୋଇବା, କାମ କରିବା, ଡ୍ରାଇଭିଂ କରିବା ଏବଂ ଏହା ମଧ୍ୟରେ ଥିବା ସବୁକିଛି ପାଇଁ ମୋଡ ସହିତ ଆପଣଙ୍କର ଧ୍ୟାନକୁ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ।"</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"ଆପଣଙ୍କ ନିଜର ମୋଡ ତିଆରି କରନ୍ତୁ"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"କେବଳ ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଲୋକ ଏବଂ ଆପ୍ସ ଦ୍ୱାରା ସୂଚନା ପାଆନ୍ତୁ"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"ଏକ ସିଡୁଲ ସେଟ କରନ୍ତୁ"</string>
<string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"ସିଡୁଲ ଏହା ଉପରେ ଆଧାରିତ"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"ଦିନ ଏବଂ ସମୟ"</string>
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 AM - 5 PM କାର୍ଯ୍ୟ ଦିବସଗୁଡ଼ିକ\""</string>
- <string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"କେଲେଣ୍ଡର ଇଭେଣ୍ଟଗୁଡ଼ିକ"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"କେଲେଣ୍ଡର ଇଭେଣ୍ଟ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ସକ୍ରିୟ ଅଛି}=2{{mode_1} ଏବଂ {mode_2} ସକ୍ରିୟ ଅଛି}=3{{mode_1}, {mode_2} ଏବଂ {mode_3} ସକ୍ରିୟ ଅଛି}other{{mode_1}, {mode_2} ଏବଂ # ଅଧିକ ସକ୍ରିୟ ଅଛି}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ମୋଡ ସ୍ୱତଃ ଚାଲୁ ହୋଇପାରିବ}other{# ମୋଡ ସ୍ୱତଃ ଚାଲୁ ହୋଇପାରିବ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ଚାଲୁ ଅଛି"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"ସେଟ କରାଯାଇନାହିଁ"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ଅକ୍ଷମ କରାଯାଇଛି"</string>
@@ -3469,7 +3482,7 @@
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"ଏକ ଡାର୍କ ବେକଗ୍ରାଉଣ୍ଡ ବ୍ୟବହାର କରିବାକୁ ଡିଭାଇସ ଥିମ ସୁଇଚ କରନ୍ତୁ, ଯାହା ଆଖି ପାଇଁ ଆରାମଦାୟକ ଅଟେ"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{ଡିସପ୍ଲେରେ କୌଣସି ପରିବର୍ତ୍ତନ ନାହିଁ}=1{{effect_1}}=2{{effect_1} ଏବଂ {effect_2}}=3{{effect_1}, {effect_2} ଏବଂ {effect_3}}other{{effect_1}, {effect_2} ଏବଂ # ଅଧିକ}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"ସମସ୍ତ ବିଜ୍ଞପ୍ତିକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"ଲୋକ, ଆପ୍ସ ଏବଂ ସାଉଣ୍ଦ ବାଧା ସୃଷ୍ଟି କରିପାରିବ"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"ଲୋକ, ଆପ୍ସ ଏବଂ ସାଉଣ୍ଦ ବାଧା ଦେଇପାରିବ"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"ଫିଲ୍ଟର କରାଯାଇଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପାଇଁ ଡିସପ୍ଲେ ବିକଳ୍ପ"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"\'ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\' ଚାଲୁ ଥିବା ସମୟରେ"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"ବିଜ୍ଞପ୍ତି ଆସିଲେ କୌଣସି ସାଉଣ୍ଡ ନାହିଁ"</string>
@@ -3651,7 +3664,7 @@
<string name="clear" msgid="5092178335409471100">"ଖାଲି କରନ୍ତୁ"</string>
<string name="clear_conversation" msgid="5564321180363279096">"<xliff:g id="CONVERSATION_NAME">%1$s</xliff:g> ଖାଲି କରନ୍ତୁ"</string>
<string name="conversation_onboarding_title" msgid="5194559958353468484">"ପ୍ରାଥମିକତା ଦିଆଯାଇଥିବା ଏବଂ ପରିବର୍ତ୍ତିତ ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ"</string>
- <string name="conversation_onboarding_summary" msgid="2484845363368486941">"ଆପଣ କୌଣସି ବାର୍ତ୍ତାଳାପକୁ ପ୍ରାଥମିକତା ଭାବେ ଚିହ୍ନଟ କଲେ କିମ୍ବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକରେ ଅନ୍ୟ କୌଣସି ପରିବର୍ତ୍ତନ କଲେ, ସେଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ। \n\nବାର୍ତ୍ତାଳାପ ସେଟିଂସ ପରିବର୍ତ୍ତନ କରିବାକୁ: \n ପୁଲ୍-ଡାଉନ୍ ସେଡ୍ ଖୋଲିବାକୁ ସ୍କ୍ରିନର ଶୀର୍ଷରୁ ତଳକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ, ତା’ପରେ ଏକ ବାର୍ତ୍ତାଳାପକୁ ଦବେଇ ଧରନ୍ତୁ।"</string>
+ <string name="conversation_onboarding_summary" msgid="2484845363368486941">"ଆପଣ କୌଣସି ବାର୍ତ୍ତାଳାପକୁ ପ୍ରାଥମିକତା ଭାବେ ଚିହ୍ନଟ କଲେ କିମ୍ବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକରେ ଅନ୍ୟ କୌଣସି ପରିବର୍ତ୍ତନ କଲେ, ସେଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ। \n\nବାର୍ତ୍ତାଳାପ ସେଟିଂସ ପରିବର୍ତ୍ତନ କରିବାକୁ: \n ପୁଲ-ଡାଉନ ସେଡ ଖୋଲିବାକୁ ସ୍କ୍ରିନର ଶୀର୍ଷରୁ ତଳକୁ ସ୍ୱାଇପ କରନ୍ତୁ, ତା’ପରେ ଏକ ବାର୍ତ୍ତାଳାପକୁ ଦବାଇ ଧରି ରଖନ୍ତୁ।"</string>
<string name="notification_importance_min_title" msgid="7676541266705442501">"ଛୋଟ କରନ୍ତୁ"</string>
<string name="notification_importance_high_title" msgid="394129291760607808">"ସ୍କ୍ରିନ ଉପରେ ଦେଖାନ୍ତୁ"</string>
<string name="notification_silence_title" msgid="4085829874452944989">"ନୀରବ"</string>
@@ -3684,19 +3697,19 @@
<string name="notification_listener_security_warning_summary" msgid="1131986567509818121">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ଆପ କଣ୍ଟାକ୍ଟ ନାମ, ଫଟୋ ଏବଂ ଆପଣ ପାଇଥିବା ମେସେଜର ଟେକ୍ସଟ ପରି ବ୍ୟକ୍ତିଗତ ସୂଚନା ସମେତ ସମସ୍ତ ବିଜ୍ଞପ୍ତି ପଢ଼ିବାକୁ ସକ୍ଷମ ହେବ। ଏହି ଆପ ଫୋନ କଲଗୁଡ଼ିକର ଉତ୍ତର ଦେବା ସହ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ସ୍ନୁଜ ବା ଖାରଜ କରିବାକୁ କିମ୍ବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକରେ ଥିବା ବଟନଗୁଡ଼ିକ ଉପରେ ପଦକ୍ଷେପ ନେବା ପାଇଁ ମଧ୍ୟ ସକ୍ଷମ ହେବ। \n\nଏହା ଆପଟିକୁ \'ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\'କୁ ଚାଲୁ କିମ୍ବା ବନ୍ଦ କରିବାକୁ ଏବଂ ସମ୍ବନ୍ଧିତ ସେଟିଂସକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ମଧ୍ୟ କ୍ଷମତା ଦେବ।"</string>
<string name="nls_warning_prompt" msgid="1486887096703743841">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ଆପ ଏହା କରିବାକୁ ସକ୍ଷମ ହେବ:"</string>
<string name="nls_feature_read_title" msgid="7629713268744220437">"ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପଢ଼ିବା"</string>
- <string name="nls_feature_read_summary" msgid="1064698238110273593">"ଏହା ଯୋଗାଯୋଗ, ମେସେଜ ଏବଂ ଫଟୋଗୁଡ଼ିକ ପରି ବ୍ୟକ୍ତିଗତ ସୂଚନା ସମେତ ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପଢ଼ିବା ପାଇଁ ସକ୍ଷମ ହେବ।"</string>
+ <string name="nls_feature_read_summary" msgid="1064698238110273593">"ଏହା କଣ୍ଟାକ୍ଟ, ମେସେଜ ଏବଂ ଫଟୋଗୁଡ଼ିକ ପରି ବ୍ୟକ୍ତିଗତ ସୂଚନା ସମେତ ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପଢ଼ିବା ପାଇଁ ସକ୍ଷମ ହେବ।"</string>
<string name="nls_feature_reply_title" msgid="7925455553821362039">"ମେସେଜଗୁଡ଼ିକର ପ୍ରତ୍ୟୁତ୍ତର ଦେବା"</string>
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"ଏହା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ସ୍ନୁଜ କିମ୍ବା ଖାରଜ କରିବା ଏବଂ କଲର ଉତ୍ତର ଦେବା ସହ ମେସେଜର ପ୍ରତ୍ୟୁତ୍ତର ଦେଇପାରିବ ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକରେ ଥିବା ବଟନଗୁଡ଼ିକ ଉପରେ ପଦକ୍ଷେପ ନେଇପାରିବ।"</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"ସେଟିଂସ ପରିବର୍ତ୍ତନ କରିବା"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"ଏହା \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\"କୁ ଚାଲୁ କିମ୍ବା ବନ୍ଦ କରିପାରିବ ଏବଂ ସମ୍ବନ୍ଧିତ ସେଟିଂସକୁ ପରିବର୍ତ୍ତନ କରିପାରିବ।"</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"ଏହା ମୋଡକୁ ପରିଚାଳନା ଓ ସକ୍ରିୟ କରିପାରିବ ଏବଂ ସମ୍ବନ୍ଧିତ ସେଟିସକୁ ପରିବର୍ତ୍ତନ କରିପାରିବ।"</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"ଏହା ମୋଡକୁ ପରିଚାଳନା ଓ ସକ୍ରିୟ କରିପାରିବ ଏବଂ ସମ୍ବନ୍ଧିତ ସେଟିଂସକୁ ପରିବର୍ତ୍ତନ କରିପାରିବ।"</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"ଯଦି ଆପଣ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ପାଇଁ ବିଜ୍ଞପ୍ତି ଆକ୍ସେସକୁ ବନ୍ଦ କରୁଛନ୍ତି, ତେବେ \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\"ର ଆକ୍ସେସ ମଧ୍ୟ ବନ୍ଦ ହୋଇଯାଇପାରେ।"</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"ଯଦି ଆପଣ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ପାଇଁ ବିଜ୍ଞପ୍ତି ଆକ୍ସେସକୁ ବନ୍ଦ କରନ୍ତି, ତେବେ ମୋଡର ଆକ୍ସେସକୁ ମଧ୍ୟ ବନ୍ଦ କରାଯାଇପାରେ।"</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"ବାତିଲ କରନ୍ତୁ"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"ରିଅଲ-ଟାଇମ"</string>
<string name="notif_type_ongoing_summary" msgid="2348867528527573574">"ବ୍ୟବହାରରେ ଥିବା ଆପ, ନାଭିଗେସନ, ଫୋନ କଲ ଏବଂ ଆହୁରି ଅନେକ କିଛିରୁ ଚାଲୁଥିବା କମ୍ୟୁନିକେସନ"</string>
- <string name="notif_type_conversation" msgid="4383931408641374979">"ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
+ <string name="notif_type_conversation" msgid="4383931408641374979">"ବାର୍ତ୍ତାଳାପ"</string>
<string name="notif_type_conversation_summary" msgid="179142405410217101">"SMS, ଟେକ୍ସଟ ମେସେଜ ଏବଂ ଅନ୍ୟ କମ୍ୟୁନିକେସନଗୁଡ଼ିକ"</string>
<string name="notif_type_alerting" msgid="4713073696855718576">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
<string name="notif_type_alerting_summary" msgid="4681068287836313604">"ସେଟିଂସ ଆଧାରରେ ରିଙ୍ଗ କିମ୍ବା ଭାଇବ୍ରେଟ ହୋଇପାରେ"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"ଆପଣ ଅଳ୍ପ ସମୟ ମଧ୍ୟରେ ଅନେକ ବିଜ୍ଞପ୍ତି ପାଇଲେ, ଆପଣଙ୍କ ଡିଭାଇସ ଏହାର ଭଲ୍ୟୁମକୁ କମ କରି 2 ମିନିଟ ପର୍ଯ୍ୟନ୍ତ ଆଲର୍ଟକୁ ହ୍ରାସ କରିବ। କଲ, ଆଲାରାମ ଏବଂ ପ୍ରାଥମିକତା ଥିବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ପ୍ରଭାବିତ ହୁଏ ନାହିଁ। \n\nକୁଲଡାଉନ ସମୟରେ ପାଇଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ସ୍କ୍ରିନର ଉପରୁ ତଳକୁ ଟାଣି ପାଇପାରିବେ।"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ୱାର୍କ ପ୍ରୋଫାଇଲରେ ଲାଗୁ କରନ୍ତୁ"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ୱାର୍କ ପ୍ରୋଫାଇଲ ଆପ୍ସରେ ଲାଗୁ କରନ୍ତୁ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR ସାହାଯ୍ୟକାରୀ ସେବାଗୁଡ଼ିକ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"VR ସାହାଯ୍ୟକାରୀ ସେବାଗୁଡ଼ିକ ଭାବରେ ଚଲାଯିବା ପାଇଁ, ଇନଷ୍ଟଲ ହୋଇଥିବା କୌଣସି ଆପ୍ସ ଅନୁରୋଧ କରିନାହିଁ।"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> ପାଇଁ VR ସେବା ଆକ୍ସେସକୁ ଅନୁମତି ଦେବେ?"</string>
@@ -3761,9 +3784,9 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"ଏହି ଆପ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପଠାଏ ନାହିଁ"</string>
<string name="notification_channels" msgid="1502969522886493799">"ବର୍ଗ"</string>
<string name="notification_channels_other" msgid="18159805343647908">"ଅନ୍ୟ"</string>
- <string name="no_channels" msgid="4716199078612071915">"ଏହି ଆପଟି କୌଣସି ବିଜ୍ଞପ୍ତି ପୋଷ୍ଟ୍ କରିନାହିଁ"</string>
+ <string name="no_channels" msgid="4716199078612071915">"ଏହି ଆପ କୌଣସି ବିଜ୍ଞପ୍ତି ପୋଷ୍ଟ କରିନାହିଁ"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"ଅବ୍ୟବହୃତ ବର୍ଗଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
- <string name="app_settings_link" msgid="6725453466705333311">"ଆପର ଅତିରିକ୍ତ ସେଟିଂସ"</string>
+ <string name="app_settings_link" msgid="6725453466705333311">"ଆପରେ ଅତିରିକ୍ତ ସେଟିଂସ"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"ଅବ୍ୟବହୃତ ବର୍ଗଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ଅବ୍ୟବହୃତ ବର୍ଗଗୁଡ଼ିକ ଲୁଚାନ୍ତୁ"</string>
<string name="deleted_channels" msgid="8489800381509312964">"{count,plural, =1{#ଟି ବର୍ଗକୁ ଡିଲିଟ କରାଯାଇଛି}other{#ଟି ବର୍ଗକୁ ଡିଲିଟ କରାଯାଇଛି}}"</string>
@@ -3798,7 +3821,7 @@
<string name="zen_schedule_rule_type_name" msgid="8071428540221112090">"ସମୟ"</string>
<string name="zen_event_rule_type_name" msgid="1921166617081971754">"ଇଭେଣ୍ଟ"</string>
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"ଇଭେଣ୍ଟ ପାଇଁ ଏହି ସମୟରେ"</string>
- <string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"ଯେକୌଣସି କ୍ୟାଲେଣ୍ଡର୍"</string>
+ <string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"ଯେ କୌଣସି କେଲେଣ୍ଡର"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"ଯେଉଁଠାରେ ଉତ୍ତର ହେଉଛି"</string>
<string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"ହଁ, ହୋଇପାରେ କିମ୍ୱା ଉତ୍ତର ଦିଆଯାଇନାହିଁ"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"ହଁ କିମ୍ୱା ହୋଇପାରେ"</string>
@@ -3829,8 +3852,8 @@
<string name="zen_mode_calls_title" msgid="2078578043677037740">"କଲ"</string>
<string name="zen_mode_calls" msgid="7653245854493631095">"କଲ"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"କଲଗୁଡ଼ିକ"</string>
- <string name="zen_mode_calls_header" msgid="8379225445095856726">"ବାଧା ସୃଷ୍ଟି କରିପାରୁଥିବା କଲଗୁଡ଼ିକ"</string>
- <string name="zen_mode_calls_footer" msgid="2008079711083701243">"ଅନୁମତି ପ୍ରାପ୍ତ କଲଗୁଡ଼ିକ ଆସିଲେ ସାଉଣ୍ଡ ହେବାକୁ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ଡିଭାଇସଟି ରିଂ ହେବା ମୋଡରେ ସେଟ୍ କରାଯାଇଛି ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ"</string>
+ <string name="zen_mode_calls_header" msgid="8379225445095856726">"ବାଧା ଦେଉଥିବା କଲ"</string>
+ <string name="zen_mode_calls_footer" msgid="2008079711083701243">"ଅନୁମତି ପ୍ରାପ୍ତ କଲଗୁଡ଼ିକ ଆସିଲେ ସାଉଣ୍ଡ କରିବା ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ଡିଭାଇସଟି ରିଂ ମୋଡରେ ସେଟ କରାଯାଇଛି ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ"</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>’ ପାଇଁ ଇନକମିଂ କଲଗୁଡ଼ିକ ବ୍ଲକ କରାଯାଇଛି। ଆପଣଙ୍କର ସାଙ୍ଗ,ପରିବାର କିମ୍ବା ଅନ୍ୟ କଣ୍ଟାକ୍ଟ ଆପଣଙ୍କୁ ସମ୍ପର୍କ କରିବା ପାଇଁ ଆପଣ ସେଟିଂସକୁ ଆଡଜଷ୍ଟ କରିପାରିବେ।"</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"ତାରାଙ୍କିତ କଣ୍ଟାକ୍ଟ"</string>
<string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{କିଛି ନାହିଁ}=1{{contact_1}}=2{{contact_1} ଏବଂ {contact_2}}=3{{contact_1}, {contact_2} ଏବଂ {contact_3}}other{{contact_1}, {contact_2} ଏବଂ ଅନ୍ୟ #ଟି ଯୋଗାଯୋଗ}}"</string>
@@ -3842,8 +3865,8 @@
<string name="zen_mode_messages_footer" msgid="6002468050854126331">"ଅନୁମତି ପ୍ରାପ୍ତ ମେସେଜ ଆସିଲେ ସାଉଣ୍ଡ ହୁଏ ତାହା ସୁନିଶ୍ଚିତ କରିବାକୁ, ଡିଭାଇସଟି ରିଂ ମୋଡରେ ସେଟ କରାଯାଇଛି ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ"</string>
<string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>’ ପାଇଁ ଇନକମିଂ ମେସେଜଗୁଡ଼ିକ ବ୍ଲକ କରାଯାଇଛି। ଆପଣଙ୍କ ସାଙ୍ଗ, ପରିବାର କିମ୍ବା ଅନ୍ୟ ଯୋଗାଯୋଗ ଆପଣଙ୍କୁ ସମ୍ପର୍କ କରିବା ପାଇଁ ଆପଣ ସେଟିଂସକୁ ଆଡଜଷ୍ଟ କରିପାରିବେ।"</string>
<string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"ସବୁ ମେସେଜ ଆପଣଙ୍କ ପାଖରେ ପହଞ୍ଚିପାରିବ"</string>
- <string name="zen_mode_all_calls_summary" msgid="7337907849083824698">"ସମସ୍ତ କଲ୍ ଆପଣଙ୍କ ପାଖରେ ପହଞ୍ଚିପାରିବ"</string>
- <string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{କିଛି ନାହିଁ}=1{1ଟି କଣ୍ଟାକ୍ଟ}other{#ଟି କଣ୍ଟାକ୍ଟ}}"</string>
+ <string name="zen_mode_all_calls_summary" msgid="7337907849083824698">"ସବୁ କଲ ଆପଣଙ୍କ ପାଖରେ ପହଞ୍ଚିପାରିବ"</string>
+ <string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{କିଛି ନାହିଁ}=1{1 କଣ୍ଟାକ୍ଟ}other{# କଣ୍ଟାକ୍ଟ}}"</string>
<string name="zen_mode_from_anyone" msgid="6027004263046694174">"ଯେ କୌଣସି ବ୍ୟକ୍ତି"</string>
<string name="zen_mode_from_contacts" msgid="2989933306317064818">"କଣ୍ଟାକ୍ଟ"</string>
<string name="zen_mode_from_starred" msgid="8616516644241652287">"ତାରାଙ୍କିତ କଣ୍ଟାକ୍ଟ"</string>
@@ -3872,30 +3895,30 @@
<string name="zen_mode_events_list" msgid="7191316245742097229">"ଇଭେଣ୍ଟ"</string>
<string name="zen_mode_events_list_first" msgid="7425369082835214361">"ଇଭେଣ୍ଟ"</string>
<string name="zen_mode_apps_title" msgid="1691010857014041183">"ଆପ୍ସ"</string>
- <string name="zen_mode_apps_category" msgid="4082380323683889391">"ବାଧା ସୃଷ୍ଟି କରିପାରୁଥିବା ଆପ୍ସ"</string>
+ <string name="zen_mode_apps_category" msgid="4082380323683889391">"ବାଧା ଦେଉଥିବା ଆପ୍ସ"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"ଚୟନିତ ଆପ୍ସ"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"କିଛି ନାହିଁ"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{କୌଣସି ଆପ୍ସ ବାଧା ସୃଷ୍ଟି କରିପାରିବ ନାହିଁ}=1{{app_1} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}=2{{app_1} ଏବଂ {app_2} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}=3{{app_1}, {app_2} ଏବଂ {app_3} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}other{{app_1}, {app_2} ଏବଂ # ଅଧିକ ଆପ୍ସ ବାଧା ସୃଷ୍ଟି କରିପାରିବ}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{କୌଣସି ଆପ୍ସ ବାଧା ଦେଇପାରିବ ନାହିଁ}=1{{app_1} ବାଧା ଦେଇପାରିବ}=2{{app_1} ଏବଂ {app_2} ବାଧା ଦେଇପାରିବ}=3{{app_1}, {app_2} ଏବଂ {app_3} ବାଧା ଦେଇପାରିବ}other{{app_1}, {app_2} ଏବଂ # ଅଧିକ ଆପ ବାଧା ଦେଇପାରିବ}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (ୱାର୍କ)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"ଗଣନା କରାଯାଉଛି…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"ଆପ୍ସ ସେଟିଂସ"</string>
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"ନିଷ୍କ୍ରିୟ କରିବାକୁ ଆପ୍ସକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"ବାଧା ସୃଷ୍ଟି କରିପାରୁଥିବା ଆପଗୁଡ଼ିକ"</string>
- <string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"ଅଧିକ ଆପ୍ ଚୟନ କରନ୍ତୁ"</string>
+ <string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"ଅଧିକ ଆପ ଚୟନ କରନ୍ତୁ"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"କୌଣସି ଆପ ଚୟନ କରାଯାଇନାହିଁ"</string>
<string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"କୌଣସି ଆପ୍ ବାଧା ଦେଇପାରିବ ନାହିଁ"</string>
- <string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"ଆପଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ"</string>
+ <string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"ଆପ୍ସ ଯୋଗ କରନ୍ତୁ"</string>
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"ସମସ୍ତ ବିଜ୍ଞପ୍ତି"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"କିଛି ବିଜ୍ଞପ୍ତି"</string>
- <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"ଆପଣ ଆପଗୁଡ଼ିକୁ ବାଧା ସୃଷ୍ଟି କରିବାକୁ ଅନୁମତି ନଦେଲେ ମଧ୍ୟ ଆପଣଙ୍କ ପାଖରେ ଚୟନିତ ଲୋକମାନେ ପହଞ୍ଚି ପାରିବେ"</string>
- <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{କୌଣସି ଆପ୍ ବାଧା ସୃଷ୍ଟି କରିପାରିବ ନାହିଁ}=1{{app_1} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}=2{{app_1} ଏବଂ {app_2} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}=3{{app_1}, {app_2} ଏବଂ {app_3} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}other{{app_1}, {app_2}, ଏବଂ ଆହୁରି #ଟି ଆପ୍ ବାଧା ସୃଷ୍ଟି କରିପାରିବ}}"</string>
+ <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"ଆପଣ ଆପକୁ ବାଧା ଦେବାକୁ ଅନୁମତି ନଦେଲେ ମଧ୍ୟ ଆପଣଙ୍କ ପାଖରେ ଚୟନିତ ଲୋକମାନେ ପହଞ୍ଚି ପାରିବେ"</string>
+ <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{କୌଣସି ଆପ ବାଧା ଦେଇପାରିବ ନାହିଁ}=1{{app_1} ବାଧା ଦେଇପାରିବ}=2{{app_1} ଏବଂ {app_2} ବାଧା ଦେଇପାରିବ}=3{{app_1}, {app_2} ଏବଂ {app_3} ବାଧା ଦେଇପାରିବ}other{{app_1}, {app_2}, ଏବଂ ଆହୁରି # ଆପ ବାଧା ଦେଇପାରିବ}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"ଆପ୍ସ"</string>
- <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"ବାଧା ସୃଷ୍ଟି କରିପାରୁଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
+ <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"ବାଧା ଦେଉଥିବା ବିଜ୍ଞପ୍ତି"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"ସମସ୍ତ ବିଜ୍ଞପ୍ତିକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{କିଛି ବି ବାଧା ସୃଷ୍ଟି କରିପାରିବ ନାହିଁ}=1{{sound_category_1} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}=2{{sound_category_1} ଏବଂ {sound_category_2} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}=3{{sound_category_1}, {sound_category_2}, ଏବଂ {sound_category_3} ବାଧା ସୃଷ୍ଟି କରିପାରିବ}other{{sound_category_1}, {sound_category_2}, ଏବଂ ଆହୁରି #ଟି ଆପ୍ ବାଧା ସୃଷ୍ଟି କରିପାରିବ}}"</string>
<string name="zen_mode_sounds_none" msgid="6557474361948269420">"କିଛି ବି ବାଧା ସୃଷ୍ଟି କରିପାରିବ ନାହିଁ"</string>
- <string name="zen_mode_people_none" msgid="4613147461974255046">"କେହି ବି ବାଧା ଉପୁଯାଇପାରିବେ ନାହିଁ"</string>
+ <string name="zen_mode_people_none" msgid="4613147461974255046">"କେହି ବାଧା ଦେଇପାରିବେ ନାହିଁ"</string>
<string name="zen_mode_people_some" msgid="9101872681298810281">"କିଛି ଲୋକ ବାଧା ଦେଇପାରନ୍ତି"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"ରିପିଟ କଲର ବାଧା ସୃଷ୍ଟି କରିପାରେ"</string>
<string name="zen_mode_people_all" msgid="311036110283015205">"ସବୁ ଲୋକ ବାଧା ଉପୁଯାଇପାରିବେ"</string>
@@ -3908,7 +3931,7 @@
<!-- no translation found for zen_mode_calls_summary_one (1928015516061784276) -->
<skip />
<string name="zen_mode_calls_summary_two" msgid="6351563496898410742">"<xliff:g id="CALLER_TYPE_0">%1$s</xliff:g> ଓ <xliff:g id="CALLER_TYPE_1">%2$s</xliff:g>"</string>
- <string name="zen_mode_repeat_callers_summary" msgid="4121054819936083025">"ଯଦି ସେହି ସମାନ ବ୍ୟକ୍ତି <xliff:g id="MINUTES">%d</xliff:g>-ମିନିଟ୍ ଅବଧି ମଧ୍ୟରେ ଦ୍ୱିତୀୟ ଥର ପାଇଁ କଲ କରନ୍ତି"</string>
+ <string name="zen_mode_repeat_callers_summary" msgid="4121054819936083025">"ଯଦି ସେହି ସମାନ ବ୍ୟକ୍ତି <xliff:g id="MINUTES">%d</xliff:g>-ମିନିଟ ଅବଧି ମଧ୍ୟରେ ଦ୍ୱିତୀୟ ଥର ପାଇଁ କଲ କରନ୍ତି"</string>
<string name="zen_mode_start_time" msgid="1252665038977523332">"ଆରମ୍ଭ ସମୟ"</string>
<string name="zen_mode_end_time" msgid="223502560367331706">"ଶେଷ ସମୟ"</string>
<string name="zen_mode_end_time_next_day_summary_format" msgid="419683704068360804">"<xliff:g id="FORMATTED_TIME">%s</xliff:g> ପରବର୍ତ୍ତୀ ଦିନ"</string>
@@ -3995,12 +4018,12 @@
<string name="app_launch_open_in_app" msgid="2208182888681699512">"ଆପରେ"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"ଆପଣଙ୍କ ବ୍ରାଉଜରରେ"</string>
<string name="app_launch_top_intro_message" msgid="9037324384325518290">"ଏହି ଆପ ପାଇଁ ୱେବ ଲିଙ୍କଗୁଡ଼ିକୁ କିପରି ଖୋଲିବେ, ତାହା ବାଛନ୍ତୁ"</string>
- <string name="app_launch_links_category" msgid="2380467163878760037">"ଏହି ଆପରେ ଖୋଲିବା ପାଇଁ ଲିଙ୍କଗୁଡ଼ିକ"</string>
+ <string name="app_launch_links_category" msgid="2380467163878760037">"ଏହି ଆପରେ ଖୋଲିବା ପାଇଁ ଲିଙ୍କ"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"ସପୋର୍ଟ କରୁଥିବା ଲିଙ୍କଗୁଡ଼ିକ"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"ଅନ୍ୟ ଡିଫଲ୍ଟ ପସନ୍ଦଗୁଡ଼ିକ"</string>
<string name="app_launch_add_link" msgid="8622558044530305811">"ଲିଙ୍କ ଯୋଗ କରନ୍ତୁ"</string>
- <string name="app_launch_footer" msgid="4521865035105622557">"ଆପରେ ଲିଙ୍କଗୁଡ଼ିକ ସ୍ୱଚାଳିତ ଭାବରେ ଖୋଲିବା ପାଇଁ ଆପଟି ସେଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ।"</string>
- <string name="app_launch_verified_links_title" msgid="621908751569155356">"{count,plural, =1{#ଟି ଯାଞ୍ଚ କରାଯାଇଥିବା ଲିଙ୍କ}other{#ଟି ଯାଞ୍ଚ କରାଯାଇଥିବା ଲିଙ୍କ}}"</string>
+ <string name="app_launch_footer" msgid="4521865035105622557">"ଆପରେ ଲିଙ୍କଗୁଡ଼ିକ ସ୍ୱତଃ ଖୋଲିବା ପାଇଁ ଆପ ସେଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ।"</string>
+ <string name="app_launch_verified_links_title" msgid="621908751569155356">"{count,plural, =1{# ଯାଞ୍ଚ କରାଯାଇଥିବା ଲିଙ୍କ}other{# ଯାଞ୍ଚ କରାଯାଇଥିବା ଲିଙ୍କ}}"</string>
<string name="app_launch_verified_links_message" msgid="190871133877476176">"{count,plural, =1{ଏହି ଲିଙ୍କକୁ ଯାଞ୍ଚ କରାଯାଇଛି ଏବଂ ଏହା ସ୍ୱତଃ ଏହି ଆପରେ ଖୋଲେ।}other{ଏହି ଲିଙ୍କଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରାଯାଇଛି ଏବଂ ଏଗୁଡ଼ିକ ସ୍ୱତଃ ଏହି ଆପରେ ଖୋଲେ।}}"</string>
<string name="app_launch_dialog_ok" msgid="1446157681861409861">"ଠିକ ଅଛି"</string>
<string name="app_launch_verified_links_info_description" msgid="7514750232467132117">"ଯାଞ୍ଚ କରାଯାଇଥିବା ଲିଙ୍କଗୁଡ଼ିକର ତାଲିକା ଦେଖାନ୍ତୁ"</string>
@@ -4034,7 +4057,7 @@
<string name="unused_apps_switch_summary" msgid="2171098908014596802">"ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଅନ୍ତୁ, ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ ଡିଲିଟ କରନ୍ତୁ ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="unused_apps_switch_v2" msgid="7464060328451454469">"ଆପକୁ ବ୍ୟବହାର କରାଯାଉନଥିଲେ ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="unused_apps_switch_summary_v2" msgid="3182898279622036805">"ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଅନ୍ତୁ, ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ ଡିଲିଟ କରନ୍ତୁ, ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ବନ୍ଦ କରନ୍ତୁ ଏବଂ ଆପକୁ ଆର୍କାଇଭ କରନ୍ତୁ"</string>
- <string name="filter_all_apps" msgid="6645539744080251371">"ସମସ୍ତ ଆପ୍ସ"</string>
+ <string name="filter_all_apps" msgid="6645539744080251371">"ସବୁ ଆପ"</string>
<string name="filter_enabled_apps" msgid="8868356616126759124">"ଇନ୍ଷ୍ଟଲ୍ ହୋଇଥିବା ଆପ୍ଗୁଡ଼ିକ"</string>
<string name="filter_instant_apps" msgid="2292108467020380068">"ଇନଷ୍ଟାଣ୍ଟ୍ ଆପ୍ସ"</string>
<string name="filter_notif_blocked_apps" msgid="1065653868850012325">"ବନ୍ଦ କରାଯାଇଛି"</string>
@@ -4163,14 +4186,14 @@
<string name="ignore_optimizations_off_desc" msgid="3324571675983286177">"ବ୍ୟାଟେରୀ କାମ କରିବା ସମୟ ବଢାଇବାକୁ ସୁପାରିଶ କରାଯାଇଛି"</string>
<string name="app_list_preference_none" msgid="1635406344616653756">"କିଛି ନୁହେଁ"</string>
<string name="work_profile_usage_access_warning" msgid="3477719910927319122">"ଏହି ଆପ୍ ପାଇଁ ବ୍ୟବହାର ଆକ୍ସେସ୍ ବନ୍ଦ କରିବା ଦ୍ୱାରା ଆପଣଙ୍କ କାର୍ଯ୍ୟ ପ୍ରୋଫାଇଲରେ ଥିବା ଡାଟା ବ୍ୟବହାର ଉପରେ ନଜର ରଖିବାରୁ ଆପଣଙ୍କ ଆଡମିନ୍କୁ ରୋକେନାହିଁ"</string>
- <string name="draw_overlay" msgid="7902083260500573027">"ଅନ୍ୟ ଆପ୍ଗୁଡ଼ିକ ଉପରେ ଦେଖାନ୍ତୁ"</string>
+ <string name="draw_overlay" msgid="7902083260500573027">"ଅନ୍ୟ ଆପ୍ସ ଉପରେ ଡିସପ୍ଲେ କରେ"</string>
<string name="system_alert_window_settings" msgid="6458633954424862521">"ଅନ୍ୟ ଆପ୍ଗୁଡ଼ିକ ଉପରେ ଦେଖାନ୍ତୁ"</string>
<string name="permit_draw_overlay" msgid="4468994037192804075">"ଅନ୍ୟ ଆପ୍ଗୁଡ଼ିକ ଉପରେ ଦେଖାଇବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="allow_overlay_description" msgid="1607235723669496298">"ଆପଣ ବ୍ୟବହାର କରୁଥିବା ଅନ୍ୟ ଆପଗୁଡ଼ିକ ଉପରେ ଏହି ଆପକୁ ଡିସପ୍ଲେ ହେବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣ କେଊଁଠି ଟାପ୍ କରନ୍ତି କିମ୍ବା ସ୍କ୍ରିନରେ ଯାହା ଡିସପ୍ଲେ ହୋଇଛି ସେଥିରେ ପରିବର୍ତ୍ତନ କରନ୍ତି ତାହା ଏହି ଆପ୍ ଦେଖିବାକୁ ସକ୍ଷମ ହେବ।"</string>
<string name="media_routing_control_title" msgid="6402800638960066807">"ମିଡିଆ ଆଉଟପୁଟ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
<string name="allow_media_routing_control" msgid="4907036637509360616">"ମିଡିଆ ଆଉଟପୁଟ ସୁଇଚ କରିବାକୁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="allow_media_routing_description" msgid="8343709701298051207">"କନେକ୍ଟ କରାଯାଇଥିବା କେଉଁ ଡିଭାଇସ ଅନ୍ୟ ଆପ୍ସରୁ ଅଡିଓ କିମ୍ୱା ଭିଡିଓ ପ୍ଲେ କରିବ ତାହା ବାଛିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଯଦି ଅନୁମତି ଦିଆଯାଏ, ତେବେ ଏହି ଆପ ହେଡଫୋନ ଓ ସ୍ପିକର ପରି ଉପଲବ୍ଧ ଡିଭାଇସଗୁଡ଼ିକର ଏକ ତାଲିକାକୁ ଆକ୍ସେସ କରିପାରିବ ଏବଂ ଅଡିଓ କିମ୍ୱା ଭିଡିଓ ଷ୍ଟ୍ରିମ ବା କାଷ୍ଟ କରିବାକୁ କେଉଁ ଆଉଟପୁଟ ଡିଭାଇସକୁ ବ୍ୟବହାର କରାଯିବ ତାହା ବାଛିପାରିବ।"</string>
- <string name="manage_external_storage_title" msgid="8024521099838816100">"ସମସ୍ତ ଫାଇଲକୁ ଆକ୍ସେସ୍"</string>
+ <string name="manage_external_storage_title" msgid="8024521099838816100">"ସବୁ ଫାଇଲକୁ ଆକ୍ସେସ"</string>
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ସମସ୍ତ ଫାଇଲକୁ ପରିଚାଳନା ପାଇଁ ଆକ୍ସେସ୍ ଦିଅନ୍ତୁ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ଏହି ଡିଭାଇସ୍ କିମ୍ବା ଯେ କୌଣସି ସଂଯୁକ୍ତ ଥିବା ଷ୍ଟୋରେଜ୍ ଭଲ୍ୟୁମରେ ଥିବା ସମସ୍ତ ଫାଇଲକୁ ପଢ଼ିବା, ପରିବର୍ତ୍ତନ କରିବା ଏବଂ ଡିଲିଟ୍ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଯଦି ଅନୁମତି ଦିଆଯାଏ, ତେବେ ଆପ୍ ଆପଣଙ୍କୁ ସ୍ପଷ୍ଟ ନକରି ଫାଇଲଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରେ।"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ସମସ୍ତ ଫାଇଲକୁ ଆକ୍ସେସ୍ କରିପାରିବ"</string>
@@ -4377,7 +4400,7 @@
<string name="display_cutout_emulation_keywords" msgid="4506580703807358127">"ଡିସ୍ପ୍ଲେ କଟଆଉଟ୍, ନଚ୍"</string>
<string name="overlay_option_device_default" msgid="7986355499809313848">"ଡିଭାଇସ୍ ଡିଫଲ୍ଟ"</string>
<string name="overlay_toast_failed_to_apply" msgid="4839587811338164960">"ଓଭର୍ଲେ ଲାଗୁ କରିବାରେ ବିଫଳ"</string>
- <string name="special_access" msgid="1767980727423395147">"ସ୍ୱତନ୍ତ୍ର ଆପ୍ ଆକ୍ସେସ୍"</string>
+ <string name="special_access" msgid="1767980727423395147">"ବିଶେଷ ଆପକୁ ଆକ୍ସେସ"</string>
<string name="special_access_more" msgid="132919514147475846">"ଅଧିକ ଦେଖନ୍ତୁ"</string>
<string name="long_background_tasks_label" msgid="3169590134850226687">"ଅଧିକ ସମୟର ପୃଷ୍ଠପଟ ଟାସ୍କଗୁଡ଼ିକ"</string>
<string name="long_background_tasks_switch_title" msgid="2491623894899492543">"ଅଧିକ ସମୟ-ଚାଲୁଥିବା ପୃଷ୍ଠପଟର ଟାସ୍କଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅ"</string>
@@ -4397,7 +4420,7 @@
<string name="bluetooth_connected_summary" msgid="8043167194934315712">"<xliff:g id="ID_1">%1$s</xliff:g>କୁ ସଂଯୁକ୍ତ ହେଲା"</string>
<string name="bluetooth_connected_multiple_devices_summary" msgid="2294954614327771844">"ଏକାଧିକ ଡିଭାଇସ୍ରେ ସଂଯୁକ୍ତ"</string>
<string name="demo_mode" msgid="6566167465451386728">"ସିଷ୍ଟମ୍ UI ଡେମୋ ମୋଡ୍"</string>
- <string name="dark_ui_mode" msgid="898146394425795281">"ଗାଢ଼ା ଥିମ"</string>
+ <string name="dark_ui_mode" msgid="898146394425795281">"ଡାର୍କ ଥିମ"</string>
<string name="dark_ui_mode_disabled_summary_dark_theme_on" msgid="4554134480159161533">"ବ୍ୟାଟେରୀ ସେଭର୍ ଯୋଗୁଁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="ambient_camera_summary_battery_saver_on" msgid="1787784892047029560">"ବ୍ୟାଟେରୀ ସେଭର୍ ଯୋଗୁଁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="ambient_camera_battery_saver_off" msgid="689825730569761613">"ବ୍ୟାଟେରୀ ସେଭରକୁ ବନ୍ଦ କରନ୍ତୁ"</string>
@@ -4420,9 +4443,9 @@
<string name="automatic_storage_manager_preference_title" msgid="3483357910142595444">"ଷ୍ଟୋରେଜ୍ ମ୍ୟାନେଜର୍"</string>
<string name="automatic_storage_manager_primary_switch_title" msgid="9131959126462101994">"ଷ୍ଟୋରେଜ୍ ମ୍ୟାନେଜର୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="gesture_preference_title" msgid="8291899281322647187">"ଜେଶ୍ଚର"</string>
- <string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"ଶୀଘ୍ର କ୍ୟାମେରା ଖୋଲନ୍ତୁ"</string>
+ <string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"ଶୀଘ୍ର କେମେରା ଖୋଲନ୍ତୁ"</string>
<string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"କେମେରା ଶୀଘ୍ର ଖୋଲିବା ପାଇଁ ପାୱାର ବଟନକୁ ଦୁଇଥର ଦବାନ୍ତୁ। ଯେ କୌଣସି ସ୍କ୍ରିନରୁ ଏହା କାମ କରେ।"</string>
- <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"ସେଲଫି ପାଇଁ କ୍ୟାମେରା ଫ୍ଲିପ୍ କରନ୍ତୁ"</string>
+ <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"ସେଲଫି ପାଇଁ କେମେରା ଫ୍ଲିପ କରନ୍ତୁ"</string>
<string name="double_twist_for_camera_mode_summary" msgid="592503740044744951"></string>
<string name="system_navigation_title" msgid="4890381153527184636">"ନାଭିଗେସନ ମୋଡ"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"2-ବଟନ୍ ନାଭିଗେସନ୍"</string>
@@ -4489,7 +4512,7 @@
<string name="web_action_enable_summary" msgid="2658930257777545990">"ଆପ୍ରେ ଲିଙ୍କଗୁଡ଼ିକୁ ଖୋଲନ୍ତୁ; ସେଗୁଡ଼ିକ ଇନ୍ଷ୍ଟଲ୍ ନ ହୋଇଥିଲେ ମଧ୍ୟ"</string>
<string name="web_action_section_title" msgid="994717569424234098">"ଇନଷ୍ଟାଣ୍ଟ୍ ଆପ୍ସ"</string>
<string name="instant_apps_settings" msgid="4280942494969957858">"ଇନ୍ଷ୍ଟାଣ୍ଟ ଆପ୍ ପସନ୍ଦ"</string>
- <string name="domain_url_section_title" msgid="9028890472923474958">"ଇନ୍ଷ୍ଟଲ୍ ହୋଇଥିବା ଆପ୍ଗୁଡ଼ିକ"</string>
+ <string name="domain_url_section_title" msgid="9028890472923474958">"ଇନଷ୍ଟଲ ହୋଇଥିବା ଆପ"</string>
<string name="automatic_storage_manager_activation_warning" msgid="170508173207142665">"ଆପଣଙ୍କ ଷ୍ଟୋରେଜ୍ ଏବେ, ଷ୍ଟୋରେଜ୍ ମ୍ୟାନେଜର୍ ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି"</string>
<string name="account_for_section_header" msgid="7466759342105251096">"<xliff:g id="USER_NAME">%1$s</xliff:g> ପାଇଁ ଆକାଉଣ୍ଟ"</string>
<string name="auto_sync_account_title" msgid="1070908045600374254">"ଆପ ଡାଟାକୁ ସ୍ଵତଃ ସିଙ୍କ କରନ୍ତୁ"</string>
@@ -4597,7 +4620,7 @@
<string name="app_info_storage_title" msgid="4076977173803093808">"ବ୍ୟବହାର କରାଯାଇଥିବା ଜାଗା"</string>
<string name="webview_uninstalled_for_user" msgid="627352948986275488">"(ୟୁଜର <xliff:g id="USER">%s</xliff:g> ପାଇଁ ଅନଇନଷ୍ଟଲ ହୋଇଛି)"</string>
<string name="webview_disabled_for_user" msgid="5809886172032644498">"(ୟୁଜର <xliff:g id="USER">%s</xliff:g> ପାଇଁ ଅକ୍ଷମ କରାଯାଇଛି)"</string>
- <string name="autofill_app" msgid="7595308061826307921">"ସ୍ୱତଃପୂରଣ ସେବା"</string>
+ <string name="autofill_app" msgid="7595308061826307921">"ଅଟୋଫିଲ ସେବା"</string>
<string name="default_autofill_app" msgid="372234803718251606">"ଡିଫଲ୍ଟ ଅଟୋଫିଲ ସେବା"</string>
<string name="autofill_passwords" msgid="6708057251459761083">"ପାସୱାର୍ଡଗୁଡ଼ିକ"</string>
<string name="credman_chosen_app_title" msgid="7735183808067729319">"ପସନ୍ଦର ସେବା"</string>
@@ -5052,7 +5075,7 @@
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"ବ୍ୟବହାର କରିବା ପାଇଁ, ପ୍ରଥମେ \"ଡିଭାଇସ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ\"କୁ ଚାଲୁ କରନ୍ତୁ"</string>
<string name="lockscreen_double_line_clock_summary" msgid="4109235686687860393">"କ୍ଲକର ସାଇଜ ଲକ ସ୍କ୍ରିନର ବିଷୟବସ୍ତୁ ଅନୁସାରେ ପରିବର୍ତ୍ତନ ହୋଇଥାଏ"</string>
<string name="lockscreen_double_line_clock_setting_toggle" msgid="802271087416091548">"ଡାଇନାମିକ କ୍ଲକ"</string>
- <string name="lockscreen_quick_affordances_title" msgid="8615741551327565793">"ସର୍ଟକଟଗୁଡ଼ିକ"</string>
+ <string name="lockscreen_quick_affordances_title" msgid="8615741551327565793">"ସର୍ଟକଟ"</string>
<plurals name="lockscreen_quick_affordances_summary" formatted="false" msgid="4225396036524703997">
<item quantity="other"><xliff:g id="FIRST_1">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g></item>
<item quantity="one"><xliff:g id="FIRST_0">%1$s</xliff:g></item>
@@ -5143,7 +5166,7 @@
<string name="category_name_color" msgid="937514550918977151">"ରଙ୍ଗ"</string>
<string name="category_name_display_controls" msgid="7046581691184725216">"ଅନ୍ୟ ଡିସପ୍ଲେ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string>
<string name="category_name_general" msgid="7737273712848115886">"ସାଧାରଣ"</string>
- <string name="dark_theme_main_switch_title" msgid="4045147031947562280">"ଗାଢ଼ା ଥିମ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="dark_theme_main_switch_title" msgid="4045147031947562280">"ଡାର୍କ ଥିମ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="bluetooth_main_switch_title" msgid="8409835540311309632">"ବ୍ଲୁଟୁଥ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="prevent_ringing_main_switch_title" msgid="4726252811262086643">"\"ରିଂ ହେବା ବନ୍ଦ କରନ୍ତୁ\"କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"ୱାଇ-ଫାଇ ହଟସ୍ପଟ ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -5180,7 +5203,7 @@
<string name="app_info_all_services_label" msgid="1487070364839071105">"ସମସ୍ତ ସେବା"</string>
<string name="show_clip_access_notification" msgid="7782300987639778542">"କ୍ଲିପବୋର୍ଡ ଆକ୍ସେସ୍ ଦେଖାନ୍ତୁ"</string>
<string name="show_clip_access_notification_summary" msgid="474090757777203207">"ଯେତେବେଳେ ଆପଣ କପି କରିଥିବା ଟେକ୍ସଟ୍, ଛବି କିମ୍ବା ଅନ୍ୟ ବିଷୟବସ୍ତୁକୁ ଆପଗୁଡ଼ିକ ଆକ୍ସେସ୍ କରେ, ସେତେବେଳେ ଏକ ମେସେଜ୍ ଦେଖାନ୍ତୁ"</string>
- <string name="all_apps" msgid="3054120149509114789">"ସବୁ ଆପ୍"</string>
+ <string name="all_apps" msgid="3054120149509114789">"ସବୁ ଆପ"</string>
<string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</string>
<string name="uwb_settings_title" msgid="8578498712312002231">"Ultra-Wideband (UWB)"</string>
<string name="uwb_settings_summary" msgid="3074271396764672268">"ଆଖପାଖରେ UWB ଥିବା ଡିଭାଇସଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତି ଚିହ୍ନଟ କରିବାରେ ସାହାଯ୍ୟ କରେ"</string>
@@ -5273,7 +5296,7 @@
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ଫିଟ ହେବା ପାଇଁ ଯଦି ଏହି ଆପକୁ ଡିଜାଇନ କରାଯାଇନାହିଁ ତେବେ ଏହାକୁ ଭ୍ୟୁ କରିବା ପାଇଁ ଏକ ନୂଆ ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ। ନିର୍ଦ୍ଦିଷ୍ଟ ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ପାଇଁ କିଛି ଆପ୍ସ ଅପ୍ଟିମାଇଜ ହୋଇନପାରେ।"</string>
<string name="aspect_ratio_summary_text" msgid="4737461467467220325">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ଫିଟ ହେବା ପାଇଁ ଯଦି କୌଣସି ଆପକୁ ଡିଜାଇନ କରାଯାଇନାହିଁ ତେବେ ଏହାକୁ ଭ୍ୟୁ କରିବା ପାଇଁ ଏକ ନୂଆ ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ"</string>
<string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ଫିଟ ହେବା ପାଇଁ ଯଦି କୌଣସି ଆପକୁ ଡିଜାଇନ କରାଯାଇନାହିଁ ତେବେ ଏହାକୁ ଭ୍ୟୁ କରିବା ପାଇଁ ଏକ ନୂଆ ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ। ନିର୍ଦ୍ଦିଷ୍ଟ ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ପାଇଁ କିଛି ଆପ୍ସ ଅପ୍ଟିମାଇଜ ହୋଇନପାରେ।"</string>
- <string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"ପ୍ରସ୍ତାବିତ ଆପ୍ସ"</string>
+ <string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"ପ୍ରସ୍ତାବିତ ଆପ"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"ବଦଳିଥିବା ଆପ୍ସ"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"ଆପ ଡିଫଲ୍ଟ"</string>
<string name="user_aspect_ratio_fullscreen" msgid="1843427242540081996">"ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ"</string>
@@ -5460,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ଷ୍ଟ୍ରିମକୁ ଶୁଣନ୍ତୁ"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହିତ ଶୁଣିବା ପାଇଁ ଏକ ଅଡିଓ ଷ୍ଟ୍ରିମ QR କୋଡକୁ ସ୍କାନ କରନ୍ତୁ"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"ସେୟାର କରୁଥିବା ସମୟରେ ପାସୱାର୍ଡକୁ ଏଡିଟ କରିପାରିବେ ନାହିଁ। ପାସୱାର୍ଡକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ପ୍ରଥମେ ଅଡିଓ ସେୟାରିଂକୁ ବନ୍ଦ କରନ୍ତୁ।"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"ଆପଣଙ୍କ ପାସୱାର୍ଡରେ 4-16 କେରେକ୍ଟର ଥିବା ଏବଂ କେବଳ ଅକ୍ଷର, ସଂଖ୍ୟା ଏବଂ ଚିହ୍ନ ବ୍ୟବହାର ହୋଇଥିବା ଆବଶ୍ୟକ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR କୋଡ ସ୍କାନର"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"ସାହାଯ୍ୟ ଆବଶ୍ୟକ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ସର୍ଚ୍ଚ ସେଟିଂସ"</string>
@@ -5468,10 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"କେବଳ ଡିଭାଇସ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"ଏକ ଆକାଉଣ୍ଟ ସହ ନୂଆ କଣ୍ଟାକ୍ଟଗୁଡ଼ିକ ସିଙ୍କ ହେବ ନାହିଁ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"କଣ୍ଟାକ୍ଟଗୁଡ଼ିକ ଆପଣଙ୍କ ଡିଭାଇସରେ ସେଭ ହେବ ଏବଂ ଡିଫଲ୍ଟ ଭାବେ ଆପଣଙ୍କ ଆକାଉଣ୍ଟରେ ସିଙ୍କ ହେବ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"କୌଣସି ଡିଫଲ୍ଟ ଆକାଉଣ୍ଟ ସେଟ କରାଯାଇନାହିଁ"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ଡିଫଲ୍ଟ ଆକାଉଣ୍ଟ ସେଟିଂରେ ତ୍ରୁଟି"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"କୌଣସି ଡିଫଲ୍ଟ ଆକାଉଣ୍ଟ ସେଟ କରାଯାଇନାହିଁ"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"କେବଳ ଡିଭାଇସ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ଆରମ୍ଭ କରିବାକୁ ଏକ ଆକାଉଣ୍ଟ ଯୋଗ କରନ୍ତୁ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ସର୍ଚ୍ଚ କରିବାକୁ ସର୍କଲ କରନ୍ତୁ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଥିବା ବିଷୟବସ୍ତୁକୁ ବ୍ୟବହାର କରି ସର୍ଚ୍ଚ କରିବା ପାଇଁ ହୋମ ବଟନ କିମ୍ବା ନାଭିଗେସନ ହେଣ୍ଡେଲକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।"</string>
</resources>
diff --git a/res/values-pa/arrays.xml b/res/values-pa/arrays.xml
index a62f21a..26664a4 100644
--- a/res/values-pa/arrays.xml
+++ b/res/values-pa/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ਬ੍ਰੀਫ਼ਕੇਸ"</item>
+ <item msgid="184985872234062767">"ਕਲਾਸਿਕਲ ਇਮਾਰਤ"</item>
+ <item msgid="9189550412466785530">"ਅਪਾਰਟਮੈਂਟ ਇਮਾਰਤ"</item>
+ <item msgid="2142527562511049422">"ਵਾਕ ਬੱਬਲ"</item>
+ <item msgid="2548100558260478605">"ਲੋਕਾਂ ਦਾ ਗਰੁੱਪ"</item>
+ <item msgid="2270003903304578284">"ਲਾਈਟ ਬਲਬ"</item>
+ <item msgid="4793496619091161864">"ਕੈਲੰਡਰ"</item>
+ <item msgid="5673625795644364100">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</item>
+ <item msgid="1423820834865831361">"ਦੌੜਦਾ ਹੋਇਆ ਵਿਅਕਤੀ"</item>
+ <item msgid="2037298830718732608">"ਗੌਲਫ਼"</item>
+ <item msgid="2197835014443491074">"ਜਿਮ ਦਾ ਡੰਬਲ"</item>
+ <item msgid="2730180105015616518">"ਤੈਰਾਕੀ"</item>
+ <item msgid="2666922823253345958">"ਹਾਈਕਿੰਗ ਕਰਦਾ ਵਿਅਕਤੀ"</item>
+ <item msgid="8234880356472211396">"ਗੇਂਦ ਸੁੱਟਦਾ ਵਿਅਕਤੀ"</item>
+ <item msgid="4642980625253001443">"ਕਿੱਕ ਮਾਰਦਾ ਵਿਅਕਤੀ"</item>
+ <item msgid="4324795269518833500">"ਗੇਮ ਕੰਟਰੋਲਰ"</item>
+ <item msgid="7789966425125441125">"ਕਲਾਕਾਰ ਲਈ ਰੰਗ ਪਟਲ"</item>
+ <item msgid="663512680597461570">"ਸਨੋਫਲੇਕ"</item>
+ <item msgid="7952183800501346803">"ਬੀਚ ਵਾਲੀ ਛੱਤਰੀ"</item>
+ <item msgid="799139025758265891">"ਵਰਕਸ਼ਾਪ ਦੇ ਔਜ਼ਾਰ"</item>
+ <item msgid="8112685757657659269">"ਪਿਆਨੋ"</item>
+ <item msgid="3861584909935022342">"ਫ਼ਿਲਮ ਰੀਲ"</item>
+ <item msgid="5827426100157335512">"ਬੁੱਕ ਕਰੋ"</item>
+ <item msgid="8585828346253128384">"ਕਮਲ ਦਾ ਫੁੱਲ"</item>
+ <item msgid="8788370542815300188">"ਵਿਅਕਤੀ ਦਾ ਮਨ"</item>
+ <item msgid="7287354964767553293">"ਹੈੱਡਫ਼ੋਨ"</item>
+ <item msgid="2530059623783800987">"ਟੀਵੀ"</item>
+ <item msgid="5307182323469376758">"ਰੇਲ ਗੱਡੀ"</item>
+ <item msgid="4903790544026923026">"ਕਾਰ"</item>
+ <item msgid="5010405583912314582">"ਕਾਂਟਾ ਅਤੇ ਛੁਰੀ"</item>
+ <item msgid="8939998598599064900">"ਖ਼ਰੀਦਦਾਰੀ ਕਾਰਟ"</item>
+ <item msgid="3379605903308731893">"ਬੱਚਾ"</item>
+ <item msgid="7808668968550293112">"ਜਾਨਵਰ ਦਾ ਪੰਜਾ"</item>
+ <item msgid="1000692647524056504">"ਸਟਾਰ ਬੈਜ"</item>
+ <item msgid="8270261073421676502">"ਦੋ ਲੋਕ"</item>
+ <item msgid="5767782819651505460">"ਤਾਰਾ"</item>
+ <item msgid="4368451291862729334">"ਦਿਲ"</item>
+ <item msgid="2613199102208419986">"ਘਰ"</item>
+ <item msgid="3022279986430275040">"ਅੱਧਾ-ਚੰਨ"</item>
+ <item msgid="5421089790869483206">"ਘੜੀ"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index dbf65de..0d9acd8 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -66,7 +66,8 @@
<string name="bluetooth_disconnect_title" msgid="4581951246357823044">"ਕੀ ਡੀਵਾਈਸ ਡਿਸਕਨੈਕਟ ਕਰਨਾ ਹੈ?"</string>
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"ਨਵਾਂ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"ਬਲੂਟੁੱਥ"</string>
- <string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ਕੱਲ੍ਹ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ"</string>
+ <string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"ਕੱਲ੍ਹ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"ਬਲੂਟੁੱਥ ਬੰਦ ਕਰਨ \'ਤੇ, ਇਹ ਅਗਲੇ ਦਿਨ ਫਿਰ ਚਾਲੂ ਹੋ ਜਾਂਦਾ ਹੈ"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"ਸੱਜਾ ਕੰਨ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ਖੱਬਾ ਕੰਨ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ਆਪਣਾ ਦੂਜਾ ਕੰਨ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audio ਨੂੰ ਬੰਦ ਕਰੋ"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ਡੀਵਾਈਸ ਵੱਲੋਂ LE ਆਡੀਓ ਹਾਰਡਵੇਅਰ ਸਮਰੱਥਾਵਾਂ ਦਾ ਸਮਰਥਨ ਕਰਨ \'ਤੇ Bluetooth LE Audio ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਬੰਦ ਕਰਦਾ ਹੈ।"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio ਮੋਡ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio Broadcast UI ਦੀ ਪੂਰਵ-ਝਲਕ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"LE Audio Sharing UI ਦੀ ਪੂਰਵ-ਝਲਕ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਵਿਅਕਤੀਗਤ ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਅਤੇ ਨਿੱਜੀ ਪ੍ਰਸਾਰਨ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"ਡੀਵਾਈਸ ਵੇਰਵਿਆਂ ਵਿੱਚ LE ਆਡੀਓ ਟੌਗਲ ਦਿਖਾਓ"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ਬਲੂਟੁੱਥ LE ਆਡੀਓ ਪ੍ਰਵਾਨਿਤ ਸੂਚੀ ਨੂੰ ਬਾਈਪਾਸ ਕਰੋ"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE ਆਡੀਓ ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਤੌਰ \'ਤੇ ਵਰਤੋ, ਭਾਵੇਂ LE ਆਡੀਓ ਪੈਰੀਫੈਰਲ ਦੀ ਆਗਿਆ ਸੂਚੀ ਦੇ ਮਾਪਦੰਡਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।"</string>
@@ -129,7 +132,7 @@
<string name="connected_device_saved_title" msgid="5607274378851905959">"ਰੱਖਿਅਤ ਕੀਤੇ ਡੀਵਾਈਸ"</string>
<string name="connected_device_fast_pair_device_title" msgid="543124539265592392">"ਖਾਤੇ ਨਾਲ ਸੰਬੰਧਿਤ"</string>
<string name="connected_device_previously_associated_fast_pair_device_title" msgid="8353405823992023457">"ਖਾਤੇ ਨਾਲ ਪਹਿਲਾਂ ਵਰਤੇ ਗਏ ਡੀਵਾਈਸ"</string>
- <string name="connected_device_add_device_summary" msgid="8671009879957120802">"ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੋਵੇਗਾ"</string>
+ <string name="connected_device_add_device_summary" msgid="8671009879957120802">"ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ"</string>
<string name="connected_device_connections_title" msgid="4164120115341579170">"ਕਨੈਕਸ਼ਨ ਤਰਜੀਹਾਂ"</string>
<string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"ਪਹਿਲਾਂ ਤੋਂ ਕਨੈਕਟ"</string>
<string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"ਬਲੂਟੁੱਥ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ਨੈੱਟਵਰਕ ਅਤੇ ਵਾਇਰਲੈੱਸ ਸਿਗਨਲਾਂ ਵਰਤ ਕੇ ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਸੈੱਟ ਹੋਣ ਦੀ ਸੁਵਿਧਾ ਪਾਓ"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ਸਮਾਂ ਖੇਤਰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਸੈੱਟ ਹੋਣ ਦੀ ਸੁਵਿਧਾ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ਆਪਣੇ ਨੇੜੇ-ਤੇੜੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਸੈੱਟ ਹੋਣ ਦੀ ਸੁਵਿਧਾ ਪਾਓ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ਡੀਵਾਈਸ ਟਿਕਾਣੇ ਦੇ ਮੁਤਾਬਕ ਸਮਾਂ ਅਤੇ ਤਾਰੀਖ ਖੁਦ ਸੈੱਟ ਹੋਣ ਦੀ ਸੁਵਿਧਾ ਪਾਓ"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸਥਾਨਕ ਸਮਾਂ ਵਰਤੋ"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-ਘੰਟੇ ਵਾਲਾ ਫਾਰਮੈਟ ਵਰਤੋ"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"ਸਮਾਂ"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ਉਂਗਲ ਚੁੱਕੋ, ਫਿਰ ਦੁਬਾਰਾ ਸੈਂਸਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ਮੁਰੰਮਤ ਕਰਨ ਵਾਲੇ ਪ੍ਰਦਾਨਕ ਕੋਲ ਜਾਓ।"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"ਸਕ੍ਰੀਨ ਦੇ ਬੰਦ ਹੋਣ \'ਤੇ, \'ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ\' ਵਿਸ਼ੇਸ਼ਤਾ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ਸਕ੍ਰੀਨ ਦੇ ਬੰਦ ਹੋਣ \'ਤੇ ਵੀ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"ਸਕ੍ਰੀਨ ਦੇ ਬੰਦ ਹੋਣ \'ਤੇ, \'ਅਣਲਾਕ\' ਵਿਸ਼ੇਸ਼ਤਾ"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"ਹੋਰ ਸੁਰੱਖਿਆ ਸੈਟਿੰਗਾਂ"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਲਾਕ, ਇਨਕ੍ਰਿਪਸ਼ਨ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ਇਨਕ੍ਰਿਪਸ਼ਨ, ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ"</string>
@@ -562,7 +567,7 @@
<string name="privacy_header" msgid="5526002421324257007">"ਪਰਦੇਦਾਰੀ"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ"</string>
<string name="private_space_title" msgid="1752064212078238723">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"ਨਿੱਜੀ ਐਪਾਂ ਨੂੰ ਲਾਕ ਕਰ ਕੇ ਅਦਿੱਖ ਰੱਖੋ"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"ਪ੍ਰਾਈਵੇਟ ਐਪਾਂ ਨੂੰ ਲਾਕ ਅਤੇ ਅਦਿੱਖ ਰੱਖੋ"</string>
<string name="private_space_description" msgid="4059594203775816136">"ਪ੍ਰਾਈਵੇਟ ਐਪਾਂ ਨੂੰ ਵੱਖਰੀ ਸਪੇਸ ਵਿੱਚ ਰੱਖੋ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਲੁਕਾ ਜਾਂ ਲਾਕ ਕਰ ਸਕੋ"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਲਾਕ"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"ਤੁਸੀਂ ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਨੂੰ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਅਣਲਾਕ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਤਰ੍ਹਾਂ ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਅਣਲਾਕ ਕਰਦੇ ਹੋ ਜਾਂ ਕੋਈ ਵੱਖਰਾ ਲਾਕ ਚੁਣੋ"</string>
@@ -594,7 +599,7 @@
<string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ਹਰ ਵਾਰ ਡੀਵਾਈਸ ਦੇ ਲਾਕ ਹੋਣ \'ਤੇ"</string>
<string name="private_space_auto_lock_after_inactivity" msgid="7107814517866649733">"ਸਕ੍ਰੀਨ ਸਮਾਂ ਸਮਾਪਤ ਦੇ 5 ਮਿੰਟ ਬਾਅਦ"</string>
<string name="private_space_auto_lock_after_device_restart" msgid="288755768725895029">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਦੇ ਮੁੜ-ਚਾਲੂ ਹੋਣ \'ਤੇ"</string>
- <string name="private_space_hide_page_title" msgid="3364639176511877414">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਲੁਕਾਉਣਾ"</string>
+ <string name="private_space_hide_page_title" msgid="3364639176511877414">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਲੁਕਾਓ"</string>
<string name="private_space_hide_when_locked" msgid="6219472348124151797">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਲਾਕ ਹੋਣ \'ਤੇ ਇਸਨੂੰ ਲੁਕਾਉਣਾ"</string>
<string name="private_space_hide_page_summary" msgid="6247773353685839242">"ਹੋਰ ਲੋਕਾਂ ਤੋਂ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਦੀ ਮੌਜੂਦਗੀ ਨੂੰ ਲੁਕਾਉਣ ਲਈ, ਤੁਸੀਂ ਇਸਨੂੰ ਆਪਣੀ ਐਪ ਸੂਚੀ ਤੋਂ ਲੁਕਾ ਸਕਦੇ ਹੋ"</string>
<string name="private_space_access_header" msgid="1077082416567150819">"ਲੁਕੀ ਹੋਈ ਹੋਣ \'ਤੇ ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
@@ -712,7 +717,7 @@
<string name="face_unlock_set_unlock_pin" msgid="9034912683791069602">"ਪਿੰਨ • ਚਿਹਰਾ"</string>
<string name="face_unlock_set_unlock_password" msgid="5874950853246424756">"ਪਾਸਵਰਡ • ਚਿਹਰਾ"</string>
<string name="face_unlock_skip_face" msgid="189695556498300008">"ਫ਼ੇਸ ਅਣਲਾਕ ਤੋਂ ਬਿਨਾਂ ਜਾਰੀ ਰੱਖੋ"</string>
- <string name="biometrics_unlock_skip_biometrics" msgid="7399882488272450182">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਜਾਂ ਚਿਹਰਾ ਅਣਲਾਕ ਦੇ ਬਿਨਾਂ ਜਾਰੀ ਰੱਖੋ"</string>
+ <string name="biometrics_unlock_skip_biometrics" msgid="7399882488272450182">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਜਾਂ ਫ਼ੇਸ ਅਣਲਾਕ ਦੇ ਬਿਨਾਂ ਜਾਰੀ ਰੱਖੋ"</string>
<string name="unlock_set_unlock_mode_off" msgid="4632139864722236359">"ਕੋਈ ਨਹੀਂ"</string>
<string name="unlock_set_unlock_mode_none" msgid="5596049938457028214">"ਸਵਾਈਪ ਕਰੋ"</string>
<string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"ਪੈਟਰਨ"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ਵਾਰ-ਵਾਰ ਇੱਕੋ ਕੁੰਜੀ ਨੂੰ ਦਬਾਉਂਦੇ ਰਹਿਣ \'ਤੇ ਕੀ-ਬੋਰਡ ਉਸਨੂੰ ਅਣਡਿੱਠ ਕਰ ਦਿੰਦਾ ਹੈ"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"ਬਾਊਂਸ-ਕੀ ਦੀ ਨਿਊਨਤਮ ਸੀਮਾ"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ਚੁਣੋ ਕਿ ਕਿਸੇ ਕੁੰਜੀ ਨੂੰ ਕਿੰਨੀ ਦੇਰ ਤੱਕ ਵਾਰ-ਵਾਰ ਦਬਾਉਣ \'ਤੇ ਕੀ-ਬੋਰਡ ਕੋਈ ਕਾਰਵਾਈ ਨਹੀਂ ਕਰੇਗਾ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 ਸਕਿੰਟ"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 ਸਕਿੰਟ"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 ਸਕਿੰਟ"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 ਸਕਿੰਟ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 ਸਕਿੰਟ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 ਸਕਿੰਟ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"ਵਿਉਂਤਬੱਧ"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ਵਿਉਂਤਬੱਧ ਮੁੱਲ"</string>
<string name="slow_keys" msgid="2891452895499690837">"ਸਲੋ ਕੁੰਜੀਆਂ"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ਕਿਸੇ ਕੁੰਜੀ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਵਿੱਚ ਲੱਗਣ ਵਾਲੇ ਸਮੇਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਦਾ ਹੈ"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ਸਥਿਰ ਕੁੰਜੀਆਂ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ਸ਼ਾਰਟਕੱਟਾਂ ਲਈ ਕੁੰਜੀਆਂ ਨੂੰ ਇਕੱਠੇ ਦਬਾਈ ਰੱਖਣ ਦੀ ਬਜਾਏ ਇੱਕ ਵਾਰ ਵਿੱਚ ਇੱਕ ਕੁੰਜੀ ਦਬਾਓ"</string>
<string name="mouse_keys" msgid="6237254627808525540">"ਮਾਊਸ ਕੁੰਜੀਆਂ"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ਮਾਊਸ ਕੁੰਜੀਆਂ ਵਰਤੋ"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ਪੁਆਇੰਟਰ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਆਪਣਾ ਕੀ-ਬੋਰਡ ਵਰਤੋ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"ਮਾਊਸ ਦੀ ਉਲਟ ਸਕ੍ਰੋਲਿੰਗ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"ਪੰਨੇ ਨੂੰ ਹੇਠਾਂ ਲਿਜਾਉਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਬਟਨਾਂ ਨੂੰ ਸਵੈਪ ਕਰੋ"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ਮਾਊਸ ਦੇ ਖੱਬੇ ਬਟਨ ਨੂੰ ਆਪਣੇ ਸੱਜੇ ਬਟਨ ਵਜੋਂ ਵਰਤੋ"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> ਲਈ ਮਾਊਸ ਕੁੰਜੀਆਂ"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ਮਾਊਸ ਪੁਆਇੰਟਰ ਨੂੰ ਹਿਲਾਉਣ ਲਈ <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ਕੁੰਜੀਆਂ ਵਰਤੋ"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ਮਾਊਸ ਦੇ ਪ੍ਰਾਇਮਰੀ ਬਟਨ ਨੂੰ ਕਲਿੱਕ ਕਰਨ ਲਈ <xliff:g id="CLICK_LABEL">%s</xliff:g> ਕੁੰਜੀ ਵਰਤੋ"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ਮਾਊਸ ਦੇ ਪ੍ਰਾਇਮਰੀ ਬਟਨ ਨੂੰ ਦਬਾਈ ਰੱਖਣ ਲਈ <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ਕੁੰਜੀ ਵਰਤੋ"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ਮਾਊਸ ਦੇ ਪ੍ਰਾਇਮਰੀ ਬਟਨ ਨੂੰ ਛੱਡਣ ਲਈ <xliff:g id="RELEASE_LABEL">%s</xliff:g> ਕੁੰਜੀ ਵਰਤੋ"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"ਸਕ੍ਰੋਲ ਮੋਡ ਨੂੰ ਟੌਗਲ ਕਰਨ ਲਈ <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ਕੁੰਜੀ ਵਰਤੋ। ਇਸ ਨਾਲ <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ਰਾਹੀਂ ਉੱਪਰ, ਹੇਠਾਂ, ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਸਕ੍ਰੋਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ਮਾਊਸ ਦੇ ਸੈਕੰਡਰੀ ਬਟਨ ਨੂੰ ਕਲਿੱਕ ਕਰਨ ਲਈ <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ਕੁੰਜੀ ਵਰਤੋ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ਸ਼ਾਰਟਕੱਟਾਂ ਦੀ ਸੂਚੀ ਦਿਖਾਓ"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਕੀ-ਬੋਰਡ ਅਤੇ ਟੂਲ"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> ਲਈ ਨਵੀਂ ਕੁੰਜੀ ਚੁਣੋ:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ਭੌਤਿਕ ਕੀ-ਬੋਰਡ ਪਹੁੰਚਯੋਗਤਾ"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ਸਥਿਰ ਕੁੰਜੀਆਂ, ਬਾਊਂਸ ਕੁੰਜੀਆਂ, ਮਾਊਸ ਕੁੰਜੀਆਂ"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"ਕੁੰਜੀਆਂ ਨੂੰ ਦੁਹਰਾਓ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"ਦੁਹਰਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਦੇਰੀ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ਦੁਹਰਾਉਣ ਦੀ ਦਰ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ਕਿਸੇ ਕੁੰਜੀ ਨੂੰ ਦਬਾ ਕੇ ਰੱਖਣ \'ਤੇ, ਉਸ ਕੁੰਜੀ ਦਾ ਅੱਖਰ-ਚਿੰਨ੍ਹ ਉਦੋਂ ਤੱਕ ਦੁਹਰਾਇਆ ਜਾਵੇਗਾ, ਜਦੋਂ ਤੱਕ ਕੁੰਜੀ ਨੂੰ ਛੱਡਿਆ ਨਹੀਂ ਜਾਂਦਾ"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> ਖਾਕਾ"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ਸਵੈਚਲਿਤ: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ਪਾਵਰ ਵਰਤੋਂ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ਸ਼ਾਮਲ ਕੀਤੇ ਪੈਕੇਜ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ਐਪਾਂ ਆਮ ਵਾਂਗ ਚੱਲ ਰਹੀਆਂ ਹਨ"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"ਬੈਟਰੀ ਬਦਲਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ਬੈਟਰੀ ਸਮਰੱਥਾ ਅਤੇ ਚਾਰਜਿੰਗ ਕਾਰਗੁਜ਼ਾਰੀ ਘੱਟ ਗਈਆਂ ਹਨ ਅਤੇ ਬੈਟਰੀ ਬਦਲਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ਬੈਟਰੀ ਦਾ ਪੱਧਰ ਘੱਟ ਹੈ"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"ਬੈਟਰੀ ਲਾਈਫ਼ ਵਧਾਉਣ ਲਈ ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਕਰੋ"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"ਬੈਟਰੀ ਲਾਈਫ਼ ਨੂੰ ਬਿਹਤਰ ਬਣਾਓ"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ਇਹ VPN ਡਿਸਕਨੈਕਟ ਕਰੀਏ?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
<string name="vpn_version" msgid="6344167191984400976">"ਵਰਜਨ"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ਵਰਜਨ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN ਨੂੰ ਭੁੱਲ ਜਾਓ"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ਕੀ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰਨਾ ਹੈ?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ਕੀ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨੂੰ ਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"ਕੰਮਕਾਜੀ ਦਿਨਾਂ ਨੂੰ ਸਵੇਰ 9 ਵਜੇ - ਸ਼ਾਮ 5 ਵਜੇ\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"ਕੈਲੰਡਰ ਇਵੈਂਟ"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ਕਿਰਿਆਸ਼ੀਲ ਹੈ}=2{{mode_1} ਅਤੇ {mode_2} ਕਿਰਿਆਸ਼ੀਲ ਹਨ}=3{{mode_1}, {mode_2} ਅਤੇ {mode_3} ਕਿਰਿਆਸ਼ੀਲ ਹਨ}other{{mode_1}, {mode_2}, ਅਤੇ # ਹੋਰ ਕਿਰਿਆਸ਼ੀਲ ਹਨ}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ਮੋਡ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਚਾਲੂ ਹੋ ਸਕਦਾ ਹੈ}other{# ਮੋਡ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਚਾਲੂ ਹੋ ਸਕਦੇ ਹਨ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ਚਾਲੂ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"ਸੈੱਟ ਨਹੀਂ ਹੈ"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ਬੰਦ ਹੈ"</string>
@@ -3434,7 +3446,7 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"ਸੰਪਾਦਨ ਕਰੋ"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"ਸਮਾਂ-ਸੂਚੀਆਂ"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"ਸਮਾਂ-ਸੂਚੀ"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"ਆਪਣੇ ਆਪ ਚਾਲੂ ਕਰਨ ਦੀ ਸੁਵਿਧਾ"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"ਇਸ ਮੋਡ ਦੇ ਆਪਣੇ ਆਪ ਚਾਲੂ ਹੋਣ ਦਾ ਸਮਾਂ"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"ਇਵੈਂਟ ਦੀ ਸਮਾਂ-ਸੂਚੀ"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"ਇਨ੍ਹਾਂ ਇਵੈਂਟਾਂ ਦੌਰਾਨ ਚਾਲੂ ਕਰੋ"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"ਜਦੋਂ ਸੱਦੇ ਦਾ ਇਹ ਜਵਾਬ ਮਿਲੇ"</string>
@@ -3469,7 +3481,7 @@
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"ਗੂੜ੍ਹਾ ਬੈਕਗ੍ਰਾਊਂਡ ਵਰਤਣ ਲਈ ਡੀਵਾਈਸ ਥੀਮ ਸਵਿੱਚ ਕਰੋ, ਜਿਸ ਨਾਲ ਅੱਖਾਂ ਨੂੰ ਆਰਾਮ ਮਿਲੇ"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{ਕੋਈ ਡਿਸਪਲੇ ਤਬਦੀਲੀ ਨਹੀਂ}=1{{effect_1}}=2{{effect_1} ਅਤੇ {effect_2}}=3{{effect_1}, {effect_2}, ਅਤੇ {effect_3}}other{{effect_1}, {effect_2} ਅਤੇ # ਹੋਰ}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"ਲੋਕ, ਐਪਾਂ ਅਤੇ ਧੁਨੀਆਂ ਵਿਘਨ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"ਲੋਕ, ਐਪਾਂ ਅਤੇ ਧੁਨੀਆਂ ਰੁਕਾਵਟ ਪੈਦਾ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"ਫਿਲਟਰ ਕੀਤੀਆਂ ਸੂਚਨਾਵਾਂ ਲਈ ਡਿਸਪਲੇ ਵਿਕਲਪ"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਦੇ ਚਾਲੂ ਹੋਣ \'ਤੇ"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"ਸੂਚਨਾਵਾਂ ਦੀ ਕੋਈ ਧੁਨੀ ਨਹੀਂ"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"ਜੇ ਤੁਹਾਨੂੰ ਘੱਟ ਸਮੇਂ ਵਿੱਚ ਕਈ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਹੁੰਦੀਆਂ ਹਨ, ਤਾਂ ਤੁਹਾਡਾ ਡੀਵਾਈਸ 2 ਮਿੰਟਾਂ ਤੱਕ ਇਨ੍ਹਾਂ ਦੀ ਅਵਾਜ਼ ਨੂੰ ਘਟਾ ਦੇਵੇਗਾ ਅਤੇ ਅਲਰਟਾਂ ਨੂੰ ਛੋਟਾ ਕਰ ਦੇਵੇਗਾ। ਕਾਲਾਂ, ਅਲਾਰਮ ਅਤੇ ਤਰਜੀਹੀ ਗੱਲਾਂਬਾਤਾਂ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦੀਆਂ। \n\nਕੂਲਡਾਊਨ ਦੌਰਾਨ ਪ੍ਰਾਪਤ ਹੋਈਆਂ ਸੂਚਨਾਵਾਂ ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰ ਤੋਂ ਹੇਠਾਂ ਵੱਲ ਖਿੱਚ ਕੇ ਦੇਖੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ਕੰਮ ਸੰਬੰਧੀ ਪ੍ਰੋਫਾਈਲਾਂ \'ਤੇ ਲਾਗੂ ਕਰੋ"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ਕੰਮ ਸੰਬੰਧੀ ਪ੍ਰੋਫਾਈਲ ਦੀਆਂ ਐਪਾਂ \'ਤੇ ਲਾਗੂ ਕਰੋ"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR ਮਦਦਗਾਰ ਸੇਵਾਵਾਂ"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ਕਿਸੇ ਵੀ ਸਥਾਪਤ ਐਪ ਵੱਲੋਂ VR ਮਦਦਗਾਰ ਸੇਵਾਵਾਂ ਵਜੋਂ ਚਲਾਉਣ ਦੀ ਬੇਨਤੀ ਨਹੀਂ ਕੀਤੀ ਗਈ।"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"ਕੀ <xliff:g id="SERVICE">%1$s</xliff:g> ਲਈ VR ਸੇਵਾ ਪਹੁੰਚ ਨੂੰ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
@@ -3800,7 +3822,7 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"ਇਸ ਇਵੈਂਟ ਦੇ ਦੌਰਾਨ"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"ਕੋਈ ਵੀ ਕੈਲੰਡਰ"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"ਜਿੱਥੇ ਜਵਾਬ ਇਹ ਹੈ"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"ਹਾਂ, ਸ਼ਾਇਦ, ਜਾਂ ਜਵਾਬ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"ਹਾਂ, ਸ਼ਾਇਦ ਜਾਂ ਜਵਾਬ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"ਹਾਂ ਜਾਂ ਸ਼ਾਇਦ"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"ਹਾਂ"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"ਨਿਯਮ ਨਹੀਂ ਮਿਲਿਆ।"</string>
@@ -3808,7 +3830,7 @@
<string name="zen_mode_rule_summary_provider_combination" msgid="785343032708491365">"<xliff:g id="PACKAGE">%1$s</xliff:g>\n<xliff:g id="SUMMARY">%2$s</xliff:g>"</string>
<string name="zen_mode_schedule_rule_days" msgid="8633770815307716351">"ਦਿਨ"</string>
<string name="zen_mode_schedule_rule_days_none" msgid="5636604196262227070">"ਕੋਈ ਨਹੀਂ"</string>
- <string name="zen_mode_schedule_alarm_title" msgid="305237266064819345">"ਅਲਾਰਮ ਸਮਾਪਤੀ ਦੇ ਸਮੇਂ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰ ਸਕਦਾ ਹੈ"</string>
+ <string name="zen_mode_schedule_alarm_title" msgid="305237266064819345">"ਅਲਾਰਮ, ਸਮਾਪਤੀ ਦੇ ਸਮੇਂ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰ ਸਕਦਾ ਹੈ"</string>
<string name="zen_mode_schedule_alarm_summary" msgid="9162760856136645133">"ਕਿਸੇ ਅਲਾਰਮ ਦੀ ਘੰਟੀ ਵੱਜਣ \'ਤੇ ਸਮਾਂ-ਸੂਚੀ ਬੰਦ ਹੋ ਜਾਂਦੀ ਹੈ"</string>
<string name="zen_mode_custom_behavior_title" msgid="92525364576358085">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਵਿਵਹਾਰ"</string>
<string name="zen_mode_custom_behavior_summary_default" msgid="3259312823717839148">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸੈਟਿੰਗਾਂ ਵਰਤੋ"</string>
@@ -3824,12 +3846,12 @@
<string name="zen_mode_from_no_conversations" msgid="3924593219855567165">"ਕੋਈ ਨਹੀਂ"</string>
<string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{ਕੋਈ ਨਹੀਂ}=1{1 ਗੱਲਬਾਤ}other{# ਗੱਲਾਂਬਾਤਾਂ}}"</string>
<string name="zen_mode_from_conversations_settings" msgid="2411930666794576607">"ਗੱਲਾਂਬਾਤਾਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ"</string>
- <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"ਕੌਣ ਵਿਘਨ ਪਾ ਸਕਦਾ ਹੈ"</string>
+ <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"ਕੌਣ ਰੁਕਾਵਟ ਪਾ ਸਕਦਾ ਹੈ"</string>
<string name="zen_mode_people_footer" msgid="7710707353004137431">"ਭਾਵੇਂ ਸੁਨੇਹਾ ਜਾਂ ਕਾਲਿੰਗ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਿਤ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ, ਤਾਂ ਵੀ ਤੁਹਾਡੇ ਵੱਲੋਂ ਇੱਥੇ ਚੁਣੇ ਗਏ ਲੋਕ ਅਜੇ ਵੀ ਉਨ੍ਹਾਂ ਐਪਾਂ ਰਾਹੀਂ ਤੁਹਾਡੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹਨ"</string>
<string name="zen_mode_calls_title" msgid="2078578043677037740">"ਕਾਲਾਂ"</string>
<string name="zen_mode_calls" msgid="7653245854493631095">"ਕਾਲਾਂ"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"ਕਾਲਾਂ"</string>
- <string name="zen_mode_calls_header" msgid="8379225445095856726">"ਕਾਲਾਂ ਜੋ ਵਿਘਨ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="zen_mode_calls_header" msgid="8379225445095856726">"ਕਾਲਾਂ ਜੋ ਰੁਕਾਵਟ ਪੈਦਾ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="zen_mode_calls_footer" msgid="2008079711083701243">"ਇਹ ਪੱਕਾ ਕਰਨ ਲਈ ਕਿ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਕਾਲਾਂ ਲਈ ਧੁਨੀ ਵਜਦੀ ਹੈ, ਜਾਂਚ ਕਰੋ ਕਿ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਘੰਟੀ \'ਤੇ ਸੈੱਟ ਹੈ"</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>’ ਲਈ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਬਲਾਕ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ। ਤੁਸੀਂ ਆਪਣੇ ਦੋਸਤਾਂ, ਪਰਿਵਾਰਕ ਮੈਂਬਰਾਂ ਜਾਂ ਹੋਰ ਸੰਪਰਕਾਂ ਨੂੰ ਤੁਹਾਨੂੰ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਲਈ ਸੈਟਿੰਗਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦੇ ਹੋ।"</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"ਤਾਰਾਬੱਧ ਸੰਪਰਕ"</string>
@@ -3838,7 +3860,7 @@
<string name="zen_mode_messages" msgid="7315084748885170585">"ਸੁਨੇਹੇ"</string>
<string name="zen_mode_messages_list" msgid="5431014101342361882">"ਸੁਨੇਹੇ"</string>
<string name="zen_mode_messages_title" msgid="1777598523485334405">"ਸੁਨੇਹੇ"</string>
- <string name="zen_mode_messages_header" msgid="253721635061451577">"ਸੁਨੇਹੇ ਜੋ ਵਿਘਨ ਪਾ ਸਕਦੇ ਹਨ"</string>
+ <string name="zen_mode_messages_header" msgid="253721635061451577">"ਸੁਨੇਹੇ ਜੋ ਰੁਕਾਵਟ ਪਾ ਸਕਦੇ ਹਨ"</string>
<string name="zen_mode_messages_footer" msgid="6002468050854126331">"ਇਹ ਪੱਕਾ ਕਰਨ ਲਈ ਕਿ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਸੁਨੇਹਿਆਂ ਲਈ ਧੁਨੀ ਵਜਦੀ ਹੈ, ਜਾਂਚ ਕਰੋ ਕਿ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਘੰਟੀ \'ਤੇ ਸੈੱਟ ਹੈ"</string>
<string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"‘<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>’ ਲਈ ਇਨਕਮਿੰਗ ਸੁਨੇਹੇ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ। ਤੁਸੀਂ ਆਪਣੇ ਦੋਸਤਾਂ, ਪਰਿਵਾਰਕ ਮੈਂਬਰਾਂ ਜਾਂ ਹੋਰ ਸੰਪਰਕਾਂ ਨੂੰ ਤੁਹਾਨੂੰ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਲਈ ਸੈਟਿੰਗਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦੇ ਹੋ।"</string>
<string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"ਕੋਈ ਵੀ ਸੁਨੇਹਾ ਭੇਜ ਸਕਦਾ ਹੈ"</string>
@@ -3872,7 +3894,7 @@
<string name="zen_mode_events_list" msgid="7191316245742097229">"ਇਵੈਂਟ"</string>
<string name="zen_mode_events_list_first" msgid="7425369082835214361">"ਇਵੈਂਟ"</string>
<string name="zen_mode_apps_title" msgid="1691010857014041183">"ਐਪਾਂ"</string>
- <string name="zen_mode_apps_category" msgid="4082380323683889391">"ਐਪਾਂ ਜੋ ਵਿਘਨ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="zen_mode_apps_category" msgid="4082380323683889391">"ਐਪਾਂ ਜੋ ਰੁਕਾਵਟ ਪੈਦਾ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"ਚੁਣੀਆਂ ਗਈਆਂ ਐਪਾਂ"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"ਕੋਈ ਨਹੀਂ"</string>
<string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{ਕੋਈ ਵੀ ਐਪ ਰੁਕਾਵਟ ਨਹੀਂ ਪਾ ਸਕਦੀ}=1{{app_1} ਕਰਕੇ ਰੁਕਾਵਟ ਪੈ ਸਕਦੀ ਹੈ}=2{{app_1} ਅਤੇ {app_2} ਕਰਕੇ ਰੁਕਾਵਟ ਪੈ ਸਕਦੀ ਹੈ}=3{{app_1}, {app_2} ਅਤੇ {app_3} ਕਰਕੇ ਰੁਕਾਵਟ ਪੈ ਸਕਦੀ ਹੈ}other{{app_1}, {app_2} ਅਤੇ # ਹੋਰ ਐਪਾਂ ਕਰਕੇ ਰੁਕਾਵਟ ਪੈ ਸਕਦੀ ਹੈ}}"</string>
@@ -3881,22 +3903,22 @@
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"ਐਪਾਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ"</string>
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"ਐਪਾਂ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਨ ਦਿਓ"</string>
- <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"ਐਪਾਂ ਜੋ ਵਿਘਨ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"ਐਪਾਂ ਜੋ ਰੁਕਾਵਟ ਪੈਦਾ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"ਹੋਰ ਐਪਾਂ ਚੁਣੋ"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"ਕੋਈ ਐਪ ਨਹੀਂ ਚੁਣੀ ਗਈ"</string>
<string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"ਕੋਈ ਨੀ ਐਪ ਵਿਘਨ ਨਹੀਂ ਪਾ ਸਕਦੀ"</string>
<string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"ਐਪਾਂ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"ਸਭ ਸੂਚਨਾਵਾਂ"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"ਕੁਝ ਸੂਚਨਾਵਾਂ"</string>
- <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"ਚੁਣੇ ਗਏ ਲੋਕ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹਨ, ਭਾਵੇਂ ਤੁਸੀਂ ਐਪਾਂ ਨੂੰ ਵਿਘਨ ਪਾਉਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੰਦੇ"</string>
+ <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"ਭਾਵੇਂ ਤੁਸੀਂ ਐਪਾਂ ਨੂੰ ਰੁਕਾਵਟ ਪੈਦਾ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੰਦੇ, ਤਾਂ ਵੀ ਚੁਣੇ ਗਏ ਲੋਕ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹਨ।"</string>
<string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{ਕੋਈ ਵੀ ਐਪ ਵਿਘਨ ਨਹੀਂ ਪਾ ਸਕਦੀ}=1{{app_1} ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}=2{{app_1} ਅਤੇ {app_2} ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}=3{{app_1}, {app_2}, ਅਤੇ {app_3} ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}other{{app_1}, {app_2}, ਅਤੇ # ਹੋਰ ਐਪਾਂ ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"ਐਪਾਂ"</string>
- <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"ਸੂਚਨਾਵਾਂ ਜੋ ਵਿਘਨ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"ਸੂਚਨਾਵਾਂ ਜੋ ਰੁਕਾਵਟ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"ਸਭ ਸੂਚਨਾਵਾਂ ਨੂੰ ਆਗਿਆ ਦਿਓ"</string>
- <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{ਕੋਈ ਵੀ ਚੀਜ਼ ਵਿਘਨ ਨਹੀਂ ਪਾ ਸਕਦੀ}=1{{sound_category_1} ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}=2{{sound_category_1} ਅਤੇ {sound_category_2} ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}=3{{sound_category_1}, {sound_category_2}, ਅਤੇ{sound_category_3} ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}other{{sound_category_1}, {sound_category_2}, ਅਤੇ # ਹੋਰ ਚੀਜ਼ਾਂ ਕਰਕੇ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ}}"</string>
+ <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{ਕੋਈ ਵੀ ਹੋਰ ਧੁਨੀ ਰੁਕਾਵਟ ਨਹੀਂ ਪੈਦਾ ਕਰ ਸਕਦੀ}=1{{sound_category_1} ਕਰਕੇ ਰੁਕਾਵਟ ਪੈਦਾ ਹੋ ਸਕਦੀ ਹੈ}=2{{sound_category_1} ਅਤੇ {sound_category_2} ਕਰਕੇ ਰੁਕਾਵਟ ਪੈਦਾ ਹੋ ਸਕਦੀ ਹੈ}=3{{sound_category_1}, {sound_category_2}, ਅਤੇ{sound_category_3} ਕਰਕੇ ਰੁਕਾਵਟ ਪੈਦਾ ਹੋ ਸਕਦੀ ਹੈ}other{{sound_category_1}, {sound_category_2}, ਅਤੇ # ਹੋਰ ਧੁਨੀਆਂ ਕਰਕੇ ਰੁਕਾਵਟ ਪੈਦਾ ਹੋ ਸਕਦੀ ਹੈ}}"</string>
<string name="zen_mode_sounds_none" msgid="6557474361948269420">"ਕੋਈ ਵੀ ਚੀਜ਼ ਵਿਘਨ ਨਹੀਂ ਪਾ ਸਕਦੀ"</string>
- <string name="zen_mode_people_none" msgid="4613147461974255046">"ਕੋਈ ਵੀ ਵਿਘਨ ਨਹੀਂ ਪਾ ਸਕਦਾ"</string>
- <string name="zen_mode_people_some" msgid="9101872681298810281">"ਕੁਝ ਲੋਕ ਵਿਘਨ ਪਾ ਸਕਦੇ ਹਨ"</string>
+ <string name="zen_mode_people_none" msgid="4613147461974255046">"ਕੋਈ ਵੀ ਰੁਕਾਵਟ ਪੈਦਾ ਨਹੀਂ ਕਰ ਸਕਦਾ"</string>
+ <string name="zen_mode_people_some" msgid="9101872681298810281">"ਕੁਝ ਲੋਕ ਰੁਕਾਵਟ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"ਵਾਰ-ਵਾਰ ਕਾਲ ਕਰਨ ਵਾਲਿਆਂ ਕਰਕੇ ਰੁਕਾਵਟ ਪੈ ਸਕਦੀ ਹੈ"</string>
<string name="zen_mode_people_all" msgid="311036110283015205">"ਸਾਰੇ ਲੋਕ ਵਿਘਨ ਪਾ ਸਕਦੇ ਹਨ"</string>
<string name="zen_mode_repeat_callers" msgid="2270356100287792138">"ਦੁਬਾਰਾ ਕਾਲ ਕਰਨ ਵਾਲੇ"</string>
@@ -4154,7 +4176,7 @@
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"ਕੀ <xliff:g id="APP">%1$s</xliff:g> ਲਈ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' \'ਤੇ ਪਹੁੰਚ ਰੱਦ ਕਰਨੀ ਹੈ?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"ਇਸ ਐਪ ਵੱਲੋਂ ਬਣਾਏ ਸਾਰੇ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਨਿਯਮ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।"</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"ਕੀ <xliff:g id="APP">%1$s</xliff:g> ਲਈ ਮੋਡਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"ਐਪ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਨੂੰ ਚਾਲੂ/ਬੰਦ ਕਰ, ਮੋਡਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਅਤੇ ਕਿਰਿਆਸ਼ੀਲ ਕਰ ਅਤੇ ਸੰਬੰਧਿਤ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕਰ ਸਕੇਗੀ।"</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"ਐਪ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਨੂੰ ਚਾਲੂ/ਬੰਦ ਕਰ ਸਕੇਗੀ, ਮੋਡਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰ ਸਕੇਗੀ ਅਤੇ ਹੀ ਸੰਬੰਧਿਤ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕਰ ਸਕੇਗੀ।"</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"ਕੀ <xliff:g id="APP">%1$s</xliff:g> ਦੇ ਲਈ ਮੋਡਾਂ ਤੱਕ ਪਹੁੰਚ ਨੂੰ ਰੱਦ ਕਰਨਾ ਹੈ?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"ਇਸ ਐਪ ਵੱਲੋਂ ਬਣਾਏ ਗਏ ਸਾਰੇ ਮੋਡ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।"</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"ਅਨੁਕੂਲਿਤ ਨਾ ਕਰੋ"</string>
@@ -5040,7 +5062,7 @@
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"ਦਬਾਈ ਰੱਖਣ ਦੀ ਮਿਆਦ"</string>
<string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"ਪਾਵਰ ਬਟਨ ਨੂੰ ਦਬਾਈ ਰੱਖਣ ਦੀ ਮਿਆਦ ਦੀ ਚੋਣ ਕਰਕੇ ਸੰਵੇਦਨਸ਼ੀਲਤਾ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
<string name="power_menu_long_press_for_assist_sensitivity_low_label" msgid="3430099983480845635">"ਛੋਟਾ"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"ਲੰਮਾ"</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"ਲੰਬਾ"</string>
<string name="lockscreen_privacy_wallet_setting_toggle" msgid="4188327143734192000">"ਵਾਲੇਟ ਦਿਖਾਓ"</string>
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"ਲਾਕ ਸਕ੍ਰੀਨ ਤੋਂ ਵਾਲੇਟ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"QR ਕੋਡ ਸਕੈਨਰ ਦਿਖਾਓ"</string>
@@ -5182,7 +5204,7 @@
<string name="all_apps" msgid="3054120149509114789">"ਸਾਰੀਆਂ ਐਪਾਂ"</string>
<string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"ਇਜਾਜ਼ਤ ਨਾ ਦਿਓ"</string>
<string name="uwb_settings_title" msgid="8578498712312002231">"ਅਲਟ੍ਰਾ-ਵਾਈਡਬੈਂਡ (UWB)"</string>
- <string name="uwb_settings_summary" msgid="3074271396764672268">"ਉਨ੍ਹਾਂ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਦੀ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਜਿੰਨ੍ਹਾਂ ਕੋਲ UWB ਹੈ"</string>
+ <string name="uwb_settings_summary" msgid="3074271396764672268">"ਉਨ੍ਹਾਂ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਦੀ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਕੋਲ UWB ਹੈ"</string>
<string name="uwb_settings_summary_airplane_mode" msgid="1328864888135086484">"UWB ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਹਵਾਈ-ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ"</string>
<string name="uwb_settings_summary_no_uwb_regulatory" msgid="3465456428217979428">"ਮੌਜੂਦਾ ਟਿਕਾਣੇ \'ਤੇ UWB ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="thread_network_settings_title" msgid="4212301030523859220">"Thread"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ਸਟ੍ਰੀਮ ਸੁਣੋ"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਸੁਣਨ ਲਈ ਆਡੀਓ ਸਟ੍ਰੀਮ ਦਾ QR ਕੋਡ ਸਕੈਨ ਕਰੋ"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"ਸਾਂਝਾਕਰਨ ਦੌਰਾਨ ਪਾਸਵਰਡ ਦਾ ਸੰਪਾਦਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਪਾਸਵਰਡ ਬਦਲਣ ਲਈ, ਪਹਿਲਾਂ ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਨੂੰ ਬੰਦ ਕਰੋ।"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਵਿੱਚ 4-16 ਅੱਖਰ-ਚਿੰਨ੍ਹ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ ਅਤੇ ਸਿਰਫ਼ ਅੱਖਰ, ਨੰਬਰ ਅਤੇ ਚਿੰਨ੍ਹ ਹੀ ਵਰਤੋ"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR ਕੋਡ ਸਕੈਨਰ"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"ਕੀ ਮਦਦ ਦੀ ਲੋੜ ਹੈ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"ਖੋਜ ਸੈਟਿੰਗਾਂ"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"ਸਿਰਫ਼ ਡੀਵਾਈਸ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"ਨਵੇਂ ਸੰਪਰਕਾਂ ਨੂੰ ਕਿਸੇ ਖਾਤੇ ਨਾਲ ਸਿੰਕ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ਸੰਪਰਕਾਂ ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਤੌਰ \'ਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਵੇਗਾ ਅਤੇ ਤੁਹਾਡੇ ਖਾਤੇ ਨਾਲ ਸਿੰਕ ਕੀਤਾ ਜਾਵੇਗਾ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ਕੁਝ ਵੀ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਵਜੋਂ ਸੈੱਟ ਨਹੀਂ ਹੈ"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਖਾਤਾ ਸੈੱਟ ਕਰਨ ਵਿੱਚ ਗੜਬੜ ਹੋਈ"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ਕੁਝ ਵੀ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਵਜੋਂ ਸੈੱਟ ਨਹੀਂ ਹੈ"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"ਸਿਰਫ਼ ਡੀਵਾਈਸ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ ਕੋਈ ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"ਖੋਜਣ ਲਈ ਚੱਕਰ ਬਣਾਓ"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ਆਪਣੀ ਸਕ੍ਰੀਨ \'ਤੇ ਮੌਜੂਦ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਖੋਜਣ ਲਈ ਹੋਮ ਬਟਨ ਨੈਵੀਗੇਸ਼ਨ ਹੈਂਡਲ ਨੂੰ ਸਪਰਸ਼ ਕਰ ਕੇ ਰੱਖੋ।"</string>
</resources>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 37d5a3a..cdb1ce5 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Teczka"</item>
+ <item msgid="184985872234062767">"Budynek klasycystyczny"</item>
+ <item msgid="9189550412466785530">"Blok mieszkalny"</item>
+ <item msgid="2142527562511049422">"Dymek z tekstem"</item>
+ <item msgid="2548100558260478605">"Grupa ludzi"</item>
+ <item msgid="2270003903304578284">"Żarówka"</item>
+ <item msgid="4793496619091161864">"Kalendarz"</item>
+ <item msgid="5673625795644364100">"Nie przeszkadzać"</item>
+ <item msgid="1423820834865831361">"Biegnąca osoba"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Hantla gimnastyczna"</item>
+ <item msgid="2730180105015616518">"Pływanie"</item>
+ <item msgid="2666922823253345958">"Osoba wędrująca"</item>
+ <item msgid="8234880356472211396">"Osoba rzucająca piłkę"</item>
+ <item msgid="4642980625253001443">"Osoba kopiąca"</item>
+ <item msgid="4324795269518833500">"Kontroler do gier"</item>
+ <item msgid="7789966425125441125">"Paleta kolorów artysty"</item>
+ <item msgid="663512680597461570">"Płatek śniegu"</item>
+ <item msgid="7952183800501346803">"Parasol plażowy"</item>
+ <item msgid="799139025758265891">"Narzędzia warsztatowe"</item>
+ <item msgid="8112685757657659269">"Fortepian"</item>
+ <item msgid="3861584909935022342">"Klatka filmowa"</item>
+ <item msgid="5827426100157335512">"Książka"</item>
+ <item msgid="8585828346253128384">"Kwiat lotosu"</item>
+ <item msgid="8788370542815300188">"Umysł osoby"</item>
+ <item msgid="7287354964767553293">"Słuchawki"</item>
+ <item msgid="2530059623783800987">"Telewizor"</item>
+ <item msgid="5307182323469376758">"Pociąg"</item>
+ <item msgid="4903790544026923026">"Samochód"</item>
+ <item msgid="5010405583912314582">"Nóż i widelec"</item>
+ <item msgid="8939998598599064900">"Koszyk na zakupy"</item>
+ <item msgid="3379605903308731893">"Dziecko"</item>
+ <item msgid="7808668968550293112">"Łapa zwierzęcia"</item>
+ <item msgid="1000692647524056504">"Plakietka z gwiazdką"</item>
+ <item msgid="8270261073421676502">"2 osoby"</item>
+ <item msgid="5767782819651505460">"Gwiazdka"</item>
+ <item msgid="4368451291862729334">"Serce"</item>
+ <item msgid="2613199102208419986">"Dom"</item>
+ <item msgid="3022279986430275040">"Półksiężyc"</item>
+ <item msgid="5421089790869483206">"Zegar"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f9801b9..71953a4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Sparuj nowe urządzenie"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatycznie włącz jutro"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Gdy wyłączysz Bluetooth, następnego dnia włączy się ponownie"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Sparuj prawe ucho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Sparuj lewe ucho"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Sparuj drugie ucho"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Wyłącz Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Wyłącza funkcję Bluetooth LE Audio, jeśli urządzenie obsługuje sprzętowe funkcje LE Audio"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Tryb Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Włącz podgląd interfejsu Bluetooth LE Audio Broadcast"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Włącza podgląd interfejsu LE Audio Sharing, w tym udostępniania dźwięku osobistego i transmisji prywatnej"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Pokazuj przełącznik LE Audio w Szczegółach urządzenia"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omijaj listę dozwolonych Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Używaj domyślnie technologii LE Audio, nawet jeśli urządzenie peryferyjne LE Audio nie zostało zweryfikowane jako spełniające kryteria listy dozwolonych"</string>
@@ -247,7 +250,7 @@
<string name="roaming_disable" msgid="729512894708689604">"Łącz z usługami transmisji danych w roamingu"</string>
<string name="roaming_warning" msgid="7703647889040229013">"Mogą zostać naliczone opłaty za roaming."</string>
<string name="date_time_auto" msgid="1759599045100040686">"Automatyczna data i godzina"</string>
- <string name="date_time_auto_summary" msgid="8294938565417729698">"Ustaw automatycznie za pomocą sygnałów bezprzewodowych i sieci"</string>
+ <string name="date_time_auto_summary" msgid="8294938565417729698">"Ustaw automatycznie za pomocą sygnałów z sieci i sieci bezprzewodowych"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatyczna strefa czasowa"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Ustaw automatycznie na podstawie pobliskich sieci komórkowych"</string>
<string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Ustaw automatycznie według lokalizacji, jeśli jest dostępna"</string>
@@ -551,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Podnieś palec, a potem przyłóż go do czytnika jeszcze raz."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Nie można użyć czytnika linii papilarnych"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Odwiedź serwis."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Odblokowywanie odciskiem palca przy wyłączonym ekranie"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Używaj odblokowywania odciskiem palca nawet przy wyłączonym ekranie"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Odblokowywanie przy wyłączonym ekranie"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Więcej ustawień bezpieczeństwa"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Blokada profilu służbowego, szyfrowanie i inne"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Szyfrowanie, dane logowania i inne"</string>
@@ -585,7 +591,7 @@
<string name="private_space_face_settings_footer" msgid="7722256209563543711">"Używaj rozpoznawania twarzy do odblokowywania przestrzeni prywatnej.\n\nPamiętaj:\nMożesz mieć skonfigurowany tylko jeden model twarzy. Jeśli chcesz dodać inny model twarzy, usuń bieżący.\n\nPatrząc na telefon, możesz niechcący odblokować przestrzeń prywatną.\n\nMoże to także zrobić inna osoba, zbliżając urządzenie do Twojej twarzy.\n\nIstnieje też możliwość, że ktoś bardzo podobny do Ciebie (np. bliźniacze rodzeństwo) będzie w stanie odblokować Twoją przestrzeń prywatną."</string>
<string name="private_space_face_settings_require_confirmation_details" msgid="5406498664903812249">"W przypadku rozpoznawania twarzy zawsze wymagaj etapu potwierdzenia"</string>
<string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Sposoby odblokowywania"</string>
- <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Identycznie jak blokada ekranu urządzenia"</string>
+ <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Identyczna jak blokada ekranu urządzenia"</string>
<string name="private_space_new_lock_title" msgid="9056139964133004094">"Wybrać nową blokadę dla przestrzeni prywatnej?"</string>
<string name="private_space_new_lock_message" msgid="3117703578905489206">"Na następnym ekranie będzie trzeba wpisać kod PIN lub hasło albo narysować wzór ustawiony na urządzeniu."</string>
<string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automatyczne blokowanie przestrzeni prywatnej"</string>
@@ -628,9 +634,9 @@
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Ustaw blokadę"</b>\n"Zablokuj swoją przestrzeń, żeby inni nie mogli jej otworzyć."</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalowanie aplikacji"</b>\n"Zainstaluj w swojej przestrzeni aplikacje, które mają pozostać prywatne"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Pamiętaj"</string>
- <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacje przestają działać, gdy blokujesz swoją przestrzeń"</b>\n"Po zablokowaniu przestrzeni działające w niej aplikacje zostaną zatrzymane i nie będziesz otrzymywać powiadomień na ich temat"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Przestrzenie prywatne nie są odpowiednie dla aplikacji, które muszą działać w tle lub wysyłać krytyczne powiadomienia (jak np. aplikacje medyczne). Wynika to z tego, że działanie w tle i powiadomienia są wstrzymywane, gdy przestrzeń jest zablokowana.\n\nPo zablokowaniu przestrzeni prywatnej umieszczone w niej aplikacje nie będą też widoczne w menedżerze uprawnień, panelu prywatności ani innych ustawieniach.\n\nPrzestrzeni prywatnej nie można przenieść na inne urządzenie. Jeśli chcesz z niej korzystać na innym urządzeniu, musisz utworzyć nową przestrzeń.\n\nKażdy, kto połączy Twoje urządzenie z komputerem lub zainstaluje na urządzeniu szkodliwe aplikacje, będzie mógł uzyskać dostęp do Twojej przestrzeni prywatnej."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Przestrzenie prywatne nie są odpowiednie dla aplikacji, które muszą działać w tle lub wysyłać krytyczne powiadomienia (jak np. aplikacje medyczne). Wynika to z tego, że działanie w tle i powiadomienia są wstrzymywane, gdy przestrzeń jest zablokowana.\n\nPo zablokowaniu przestrzeni prywatnej umieszczone w niej aplikacje nie będą też widoczne w menedżerze uprawnień, panelu prywatności ani innych ustawieniach.\n\nPrzestrzeni prywatnej nie można przywrócić na innym urządzeniu. Jeśli chcesz z niej korzystać na innym urządzeniu, musisz utworzyć nową przestrzeń.\n\nKażdy, kto połączy Twoje urządzenie z komputerem lub zainstaluje na urządzeniu szkodliwe aplikacje, będzie mógł uzyskać dostęp do Twojej przestrzeni prywatnej."</string>
+ <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacje przestają działać, gdy blokujesz swoją przestrzeń"</b>\n"Gdy zablokujesz przestrzeń, działające w niej aplikacje zostaną zatrzymane i nie będziesz otrzymywać powiadomień z nich"</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Przestrzenie prywatne nie są odpowiednie dla aplikacji, które muszą działać w tle lub wysyłać krytyczne powiadomienia (jak np. aplikacje medyczne). Wynika to z tego, że działanie w tle i powiadomienia są wstrzymywane, gdy przestrzeń jest zablokowana.\n\nZablokowanie przestrzeni prywatnej spowoduje też, że umieszczone w niej aplikacje nie będą widoczne w menedżerze uprawnień, panelu prywatności ani innych ustawieniach.\n\nPrzestrzeni prywatnej nie można przenieść na inne urządzenie. Jeśli chcesz z niej korzystać na innym urządzeniu, musisz utworzyć nową przestrzeń.\n\nKażdy, kto połączy Twoje urządzenie z komputerem lub zainstaluje na urządzeniu szkodliwe aplikacje, będzie mógł uzyskać dostęp do Twojej przestrzeni prywatnej."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Przestrzenie prywatne nie są odpowiednie dla aplikacji, które muszą działać w tle lub wysyłać krytyczne powiadomienia (jak np. aplikacje medyczne). Wynika to z tego, że działanie w tle i powiadomienia są wstrzymywane, gdy przestrzeń jest zablokowana.\n\nZablokowanie przestrzeni prywatnej spowoduje też, że umieszczone w niej aplikacje nie będą też widoczne w menedżerze uprawnień, panelu prywatności ani innych ustawieniach.\n\nPrzestrzeni prywatnej nie można przywrócić na innym urządzeniu. Jeśli chcesz z niej korzystać na innym urządzeniu, musisz utworzyć nową przestrzeń.\n\nKażdy, kto połączy Twoje urządzenie z komputerem lub zainstaluje na urządzeniu szkodliwe aplikacje, będzie mógł uzyskać dostęp do Twojej przestrzeni prywatnej."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Więcej o przestrzeni prywatnej"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Potrwa to kilka chwil"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Konfiguruję przestrzeń prywatną…"</string>
@@ -1949,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klawiatura ignoruje szybko powtarzane naciśnięcia tego samego klawisza"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Próg klawisza z filtrem powtórzeń"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Wybierz czas, przez który klawiatura ma ignorować powtarzane naciśnięcia klawiszy"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Niestandardowa"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"wartość niestandardowa"</string>
<string name="slow_keys" msgid="2891452895499690837">"Klawisze powolne"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Dostosowuje czas wymagany do aktywacji naciśnięcia klawisza"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Klawisze trwałe"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Naciśnij 1 klawisz, aby zyskać dostęp do skrótów, zamiast przytrzymywać kilka jednocześnie"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Klawisze sterowania myszą"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Używaj klawiszy sterowania myszą"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Używaj klawiatury do sterowania wskaźnikiem"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Odwrotne przewijanie myszą"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Przewiń w górę, aby przesunąć stronę w dół"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Zamień lewy i prawy przycisk"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Używaj lewego przycisku myszy jako prawego"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> – klawisze sterowania myszą"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Aby przesunąć wskaźnik myszy, naciśnij klawisz <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Aby kliknąć główny przycisk myszy, naciśnij klawisz <xliff:g id="CLICK_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Aby nacisnąć i przytrzymać główny przycisk myszy, kliknij klawisz <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Aby zwolnić główny przycisk myszy, naciśnij klawisz <xliff:g id="RELEASE_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Aby przełączyć tryb przewijania, naciśnij klawisz <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>. Spowoduje to, że klawisze <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> będą przewijać widok w górę, w dół, w lewo lub w prawo"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Aby kliknąć dodatkowy przycisk myszy, naciśnij klawisz <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Skróty klawiszowe"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Lista skrótów"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Klawiatura i narzędzia w profilu służbowym"</string>
@@ -1998,7 +2014,7 @@
<string name="gesture_summary_go_home" msgid="6409031586904205741">"Przesuń 3 palcami w górę w dowolnym miejscu na touchpadzie"</string>
<string name="gesture_title_go_back" msgid="6619462058488419802">"Przechodzenie wstecz"</string>
<string name="gesture_summary_go_back" msgid="4981604277892236888">"Przesuń 3 palcami od lewej lub prawej krawędzi ekranu"</string>
- <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Wyświetlanie ostatnich aplikacji"</string>
+ <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Wyświetl ostatnie aplikacje"</string>
<string name="gesture_summary_recent_apps" msgid="6643179135202417509">"Przesuń 3 palcami, przytrzymaj, a potem podnieś palce"</string>
<string name="gesture_title_notifications" msgid="791717222472350194">"Wyświetlanie powiadomień i Szybkich ustawień"</string>
<string name="gesture_summary_notifications" msgid="8419514601638387255">"Przesuń 3 palcami w dół na ekranie głównym"</string>
@@ -2266,9 +2282,9 @@
<string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Używaj przycisku lub gestu"</string>
<string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokalizacja"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"Rozmiar"</string>
- <string name="accessibility_button_fade_title" msgid="8081993897680588829">"Zanikanie, gdy nie w użyciu"</string>
+ <string name="accessibility_button_fade_title" msgid="8081993897680588829">"Zanikanie, gdy nie jest używany"</string>
<string name="accessibility_button_fade_summary" msgid="7865950833524973709">"Zanika po kilku sekundach, aby nie utrudniać oglądania ekranu"</string>
- <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Przezroczystość, gdy nie w użyciu"</string>
+ <string name="accessibility_button_opacity_title" msgid="4727355657530362289">"Przezroczystość, gdy nie jest używany"</string>
<string name="accessibility_button_low_label" msgid="4193015407828927741">"Przezroczyste"</string>
<string name="accessibility_button_high_label" msgid="9138077512008190896">"Nieprzezroczyste"</string>
<string name="accessibility_button_disabled_button_mode_summary" msgid="1978174613270619492">"Niedostępne w trybie przycisków na pasku nawigacji."</string>
@@ -2565,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Dostosuj wykorzystanie energii"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Dołączone pakiety"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikacje działają normalnie"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Zalecana wymiana baterii"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Bateria ma ograniczoną pojemność i wydajność ładowania. Zalecamy jej wymianę."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Niski poziom naładowania baterii"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Włącz Oszczędzanie baterii, aby wydłużyć czas pracy na baterii"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Wydłuż czas pracy na baterii"</string>
@@ -3178,7 +3196,7 @@
<string name="restriction_wifi_config_title" msgid="2630656989926554685">"Sieć Wi‑Fi i komórkowa"</string>
<string name="restriction_wifi_config_summary" msgid="920419010472168694">"Zezwalaj na modyfikowanie ustawień sieci Wi‑Fi i komórkowej"</string>
<string name="restriction_bluetooth_config_title" msgid="220586273589093821">"Bluetooth"</string>
- <string name="restriction_bluetooth_config_summary" msgid="7558879931011271603">"Zezwalaj na modyfikowanie parowań i ustawień Bluetooth"</string>
+ <string name="restriction_bluetooth_config_summary" msgid="7558879931011271603">"Zezwalaj na modyfikowanie parowań i ustawień Bluetootha"</string>
<string name="restriction_location_enable_title" msgid="4872281754836538066">"Lokalizacja"</string>
<string name="restriction_location_enable_summary" msgid="7139292323897390221">"Zezwalaj aplikacji na korzystanie z informacji o lokalizacji"</string>
<string name="wizard_back" msgid="8257697435061870191">"Wróć"</string>
@@ -3405,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"„Od 9:00 do 17:00 w ciągu tygodnia”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Wydarzenia w kalendarzu"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Tryb {mode_1} jest aktywny}=2{Tryby {mode_1} i {mode_2} są aktywne}=3{Tryby {mode_1}, {mode_2} i {mode_3} są aktywne}few{Tryby {mode_1}, {mode_2} i # inne są aktywne}many{Tryby {mode_1}, {mode_2} i # innych są aktywne}other{Tryby {mode_1}, {mode_2} i # innego są aktywne}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 tryb może włączać się automatycznie}few{# tryby mogą włączać się automatycznie}many{# trybów może włączać się automatycznie}other{# trybu może włączać się automatycznie}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Nie przeszkadzać}=1{{mode_1}}=2{{mode_1}, {mode_2}}few{{mode_1}, {mode_2}, {mode_3}}many{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"WŁ."</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nie ustawiono"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Wyłączony"</string>
@@ -3709,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Gdy w krótkim czasie otrzymasz wiele powiadomień, urządzenie zmniejszy głośność i ograniczy liczbę alertów przez maksymalnie 2 minuty. Nie wpłynie to na połączenia, alarmy ani rozmowy priorytetowe. \n\nPowiadomienia otrzymane w tym czasie można zobaczyć po przesunięciu palcem z góry ekranu w dół."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Zastosuj do profili służbowych"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Zastosuj w aplikacjach profilu służbowego"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Usługi pomocnicze rzeczywistości wirtualnej"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Żadne zainstalowane aplikacje nie prosiły o uruchomienie w trybie usług pomocniczych rzeczywistości wirtualnej."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Zezwalasz usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na dostęp do usług VR?"</string>
@@ -4448,7 +4476,7 @@
<string name="one_handed_mode_enabled" msgid="3396864848786359651">"Korzystaj z trybu jednej ręki"</string>
<string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Skrót do trybu jednej ręki"</string>
<string name="keywords_one_handed" msgid="969440592493034101">"osiągalność"</string>
- <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Przesuń w dół, aby uzyskać"</string>
+ <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Przesuń w dół, aby wykonać wybraną czynność"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"Użyj skrótu, aby"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"Przeciągnij w dół górną połowę ekranu, aby łatwiej było korzystać z niego jedną ręką"</string>
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"Jak używać trybu jednej ręki"</b>\n" • Wybierz nawigację przy użyciu gestów w ustawieniach nawigacji w systemie.\n • Przesuń palcem w dół przy dolnej krawędzi ekranu."</string>
@@ -5032,7 +5060,7 @@
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Menu zasilania:\nNaciśnij jednocześnie przycisk zasilania i przycisk zwiększania głośności."</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"Wyłączanie dzwonka:\nAby uruchomić ten skrót, naciśnij przycisk głośności"</string>
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"Długość naciśnięcia i przytrzymania"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Dostosuj czułość, określając, jak długo ma być naciskany i przytrzymywany przycisk zasilania"</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Dostosuj czułość, określając, jak długo po naciśnięciu ma być przytrzymany przycisk zasilania"</string>
<string name="power_menu_long_press_for_assist_sensitivity_low_label" msgid="3430099983480845635">"Krótko"</string>
<string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"Długo"</string>
<string name="lockscreen_privacy_wallet_setting_toggle" msgid="4188327143734192000">"Pokazuj portfel"</string>
@@ -5455,18 +5483,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Posłuchaj strumienia"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Zeskanuj kod QR strumienia audio, aby słuchać na urządzeniu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Podczas udostępniania nie można edytować hasła. Aby je zmienić, najpierw wyłącz udostępnianie dźwięku."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Hasło musi zawierać od 4 do 16 znaków i zawierać tylko litery, cyfry i symbole"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Skaner kodów QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Potrzebujesz pomocy?"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"Ustawienia wyszukiwania"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"Wyszukaj w Ustawieniach"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"kontakty, spis, konto"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"Spis kontaktów"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Tylko urządzenie"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nowe kontakty nie będą synchronizowane z kontem"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakty będą domyślnie zapisywane na urządzeniu i synchronizowane z kontem"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nie ustawiono konta domyślnego"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Podczas ustawiania konta domyślnego wystąpił błąd"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nie ustawiono konta domyślnego"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Tylko urządzenie"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Na początek dodaj konto"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Zaznacz, aby wyszukać"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Aby wyszukać to, co jest widoczne na ekranie, naciśnij i przytrzymaj przycisk ekranu głównego lub uchwyt nawigacyjny."</string>
</resources>
diff --git a/res/values-pt-rBR/arrays.xml b/res/values-pt-rBR/arrays.xml
index 3fe4241..35df470 100644
--- a/res/values-pt-rBR/arrays.xml
+++ b/res/values-pt-rBR/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Maleta"</item>
+ <item msgid="184985872234062767">"Edifício clássico"</item>
+ <item msgid="9189550412466785530">"Edifício de apartamentos"</item>
+ <item msgid="2142527562511049422">"Balão de diálogo"</item>
+ <item msgid="2548100558260478605">"Grupo de pessoas"</item>
+ <item msgid="2270003903304578284">"Lâmpada"</item>
+ <item msgid="4793496619091161864">"Calendário"</item>
+ <item msgid="5673625795644364100">"Não perturbe"</item>
+ <item msgid="1423820834865831361">"Pessoa correndo"</item>
+ <item msgid="2037298830718732608">"Golfe"</item>
+ <item msgid="2197835014443491074">"Peso de academia"</item>
+ <item msgid="2730180105015616518">"Natação"</item>
+ <item msgid="2666922823253345958">"Pessoa escalando"</item>
+ <item msgid="8234880356472211396">"Pessoa jogando bola"</item>
+ <item msgid="4642980625253001443">"Pessoa chutando"</item>
+ <item msgid="4324795269518833500">"Controle de jogo"</item>
+ <item msgid="7789966425125441125">"Paleta de cores do artista"</item>
+ <item msgid="663512680597461570">"Floco de neve"</item>
+ <item msgid="7952183800501346803">"Guarda-sol"</item>
+ <item msgid="799139025758265891">"Ferramentas"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Rolo de filme"</item>
+ <item msgid="5827426100157335512">"Livro"</item>
+ <item msgid="8585828346253128384">"Flor de lótus"</item>
+ <item msgid="8788370542815300188">"Mente humana"</item>
+ <item msgid="7287354964767553293">"Fones de ouvido"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Trem"</item>
+ <item msgid="4903790544026923026">"Carro"</item>
+ <item msgid="5010405583912314582">"Garfo e faca"</item>
+ <item msgid="8939998598599064900">"Carrinho de compras"</item>
+ <item msgid="3379605903308731893">"Criança"</item>
+ <item msgid="7808668968550293112">"Pata de animal"</item>
+ <item msgid="1000692647524056504">"Selo de estrela"</item>
+ <item msgid="8270261073421676502">"Duas pessoas"</item>
+ <item msgid="5767782819651505460">"Estrela"</item>
+ <item msgid="4368451291862729334">"Coração"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Meia-lua"</item>
+ <item msgid="5421089790869483206">"Relógio"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 3f4a5d0..bf3b903 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Parear novo dispositivo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Ativar automaticamente amanhã"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Se você desativar o Bluetooth, ele será reativado no dia seguinte"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Parear lado direito"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Parear lado esquerdo"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Pareie o outro lado"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desativar Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Desativa o recurso de Bluetooth LE Audio caso o hardware do dispositivo tenha essa opção."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modo Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Ativar a visualização da interface de transmissão de Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Ativa a visualização da interface de compartilhamento de LE Audio, incluindo o compartilhamento de áudio pessoal e a transmissão particular"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Mostrar a chave do Bluetooth LE Audio nos Detalhes do dispositivo"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ignorar lista de permissões do Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Usar o áudio de baixo consumo (LE Audio) por padrão, mesmo que o periférico dele não tenha sido verificado para atender aos critérios da lista de permissões."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Definir automaticamente usando sua rede e sinais sem fio"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuso horário automático"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Definir automaticamente com base nas redes móveis perto de você"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Definir automaticamente usando o local do dispositivo, se disponível"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usar o padrão do local"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Usar formato de 24 horas"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Horário"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Levante o dedo e depois toque no sensor novamente"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Não foi possível usar o sensor de impressão digital"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Entre em contato com uma assistência técnica."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueio por impressão digital com a tela desligada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use o Desbloqueio por impressão digital mesmo com a tela desligada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Tela desligada, Desbloqueio"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Mais configurações de segurança"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueio do perfil de trabalho, criptografia e muito mais"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Criptografia, credenciais e muito mais"</string>
@@ -562,7 +567,7 @@
<string name="privacy_header" msgid="5526002421324257007">"Privacidade"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Perfil de trabalho"</string>
<string name="private_space_title" msgid="1752064212078238723">"Espaço privado"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"Mantenha apps particulares bloqueados e ocultos"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"Mantém apps particulares bloqueados e ocultos"</string>
<string name="private_space_description" msgid="4059594203775816136">"Mantenha a privacidade de apps em um espaço separado que você pode ocultar ou bloquear"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Bloqueio do espaço privado"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Você pode desbloquear seu Espaço privado da mesma maneira que desbloqueia seu dispositivo ou escolher um bloqueio diferente"</string>
@@ -1303,10 +1308,10 @@
<string name="dark_ui_summary_on_auto_mode_custom" msgid="2526935680241734784">"Será desativado automaticamente: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"Será desativado automaticamente após a hora de dormir"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"Será desativado quando o modo <xliff:g id="ID_1">%1$s</xliff:g> terminar"</string>
- <string name="dark_ui_text" msgid="4392646155331126666">"O tema escuro usa um plano de fundo preto para aumentar a duração da bateria em algumas telas. Ele é ativado apenas depois que a tela for desligada."</string>
+ <string name="dark_ui_text" msgid="4392646155331126666">"O tema escuro usa um plano de fundo preto para ajudar a prolongar a duração da bateria. Só é ativado por Programação depois que a tela for desativada."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"O tema escuro está seguindo sua programação do Modo hora de dormir"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Configurações do Modo hora de dormir"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Os modos também podem ativar o tema escuro}=1{O modo {mode_1} também ativa o tema escuro}=2{Os modos {mode_1} e {mode_2} também ativam o tema escuro}=3{Os modos {mode_1}, {mode_2} e {mode_3} também ativam o tema escuro}one{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}other{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Alguns modos também ativam o tema escuro}=1{O modo {mode_1} também ativa o tema escuro}=2{Os modos {mode_1} e {mode_2} também ativam o tema escuro}=3{Os modos {mode_1}, {mode_2} e {mode_3} também ativam o tema escuro}one{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}other{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Configurações de modos"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Ainda mais escuro"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Permitir que o dispositivo fique mais escuro do que o normal"</string>
@@ -1597,7 +1602,7 @@
<string name="tether_settings_summary_usb_and_bluetooth_and_ethernet" msgid="5880591133984166550">"USB, Bluetooth, Ethernet"</string>
<string name="tether_settings_summary_all" msgid="7565193614882005775">"Ponto de acesso, USB, Bluetooth, Ethernet"</string>
<string name="tether_settings_summary_off" msgid="2526164899130351968">"Não está compartilhando a Internet com outros dispositivos"</string>
- <string name="tether_preference_summary_off" msgid="6266799346319794630">"Desativados"</string>
+ <string name="tether_preference_summary_off" msgid="6266799346319794630">"Desativado"</string>
<string name="usb_tethering_button_text" msgid="7364633823180913777">"Tethering USB"</string>
<string name="bluetooth_tether_checkbox_text" msgid="6108398414967813545">"Tethering Bluetooth"</string>
<string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"Tethering Ethernet"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"O teclado ignora pressionamentos rápidos e repetidos da mesma tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Limite da tecla de filtragem"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Escolha por quanto tempo o teclado ignora pressionamentos repetidos"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizado"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalizado"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajusta o tempo que leva para um pressionamento de tecla ser ativado"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Teclas de aderência"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Pressione uma tecla por vez para usar atalhos em vez de manter as teclas pressionadas juntas"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Teclas do mouse"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usar teclas do mouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use o teclado para controlar o ponteiro"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Rolagem reversa do mouse"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Deslize para cima para descer na página"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Trocar os botões esquerdo e direito"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use o botão esquerdo do mouse como o direito"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Teclas do mouse para <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use as teclas <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> para mover o ponteiro do mouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use a tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> para clicar no botão principal do mouse"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use a tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> para tocar e pressionar o botão principal do mouse"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use a tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> para soltar o botão principal do mouse"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use a tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> para trocar o modo de rolagem. Isso vai fazer com que as teclas <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> rolem a visualização para cima, para baixo, para a esquerda ou para a direita"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use a tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> para clicar no botão secundário do mouse"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Atalhos do teclado"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostrar lista de atalhos"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Teclados e ferramentas de perfil de trabalho"</string>
@@ -1999,7 +2014,7 @@
<string name="gesture_summary_go_home" msgid="6409031586904205741">"Deslize para cima com três dedos em qualquer lugar do touchpad"</string>
<string name="gesture_title_go_back" msgid="6619462058488419802">"Voltar"</string>
<string name="gesture_summary_go_back" msgid="4981604277892236888">"Deslize da esquerda ou direita com três dedos"</string>
- <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Conferir os apps recentes"</string>
+ <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Ver os apps recentes"</string>
<string name="gesture_summary_recent_apps" msgid="6643179135202417509">"Deslize para cima com três dedos, segure e depois solte"</string>
<string name="gesture_title_notifications" msgid="791717222472350194">"Abrir notificações e Configurações rápidas"</string>
<string name="gesture_summary_notifications" msgid="8419514601638387255">"Deslize para baixo com três dedos na tela inicial"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Escolha uma nova tecla para <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Acessibilidade do teclado físico"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas de aderência, teclas de filtragem, teclas do mouse"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repetir teclas"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Atraso antes da repetição"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Taxa de repetição"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pressione e segure uma tecla para repetir o caractere dela até que seja liberada"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Layout do <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Padrão"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automático: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2218,7 +2229,7 @@
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"Para iniciar ou interromper a ampliação, toque duas vezes rapidamente com %1$d dedos na tela"</string>
<string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{Para usar esse recurso, deslize de cima para baixo na tela. Depois, encontre o bloco {featureName}.}one{Para usar esse recurso, deslize com # dedo de cima para baixo na tela. Depois, encontre o bloco {featureName}.}other{Para usar esse recurso, deslize com # dedos de cima para baixo na tela. Depois, encontre o bloco {featureName}.}}"</string>
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"Esse atalho vai estar disponível depois que você concluir a configuração do dispositivo."</string>
- <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esse recurso, deslize dois dedos na rela, de baixo para cima.\n\nPara mudar de recurso, deslize dois dedos de baixo para cima da tela e segure."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esse recurso, deslize dois dedos na tela, de baixo para cima.\n\nPara mudar de recurso, deslize dois dedos de baixo para cima da tela e segure."</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{Para usar esse recurso, deslize de baixo para cima na tela}one{Para usar esse recurso, deslize com # dedo de baixo para cima na tela}other{Para usar esse recurso, deslize com # dedos de baixo para cima na tela}}"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esse recurso, deslize de baixo para cima na tela com três dedos.\n\nPara mudar de recurso, deslize de baixo para cima com três dedos, sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para usar um recurso de acessibilidade, deslize de baixo para cima na tela com dois dedos.\n\nPara alternar entre recursos, deslize de baixo para cima com dois dedos, sem soltar."</string>
@@ -2260,7 +2271,7 @@
<string name="accessibility_shortcut_description" msgid="2184693606202133549">"Permitir que o atalho do recurso seja ativado pela tela de bloqueio. Pressione as duas teclas de volume por alguns segundos."</string>
<string name="accessibility_button_title" msgid="5251235485581552614">"Botão de acessibilidade"</string>
<string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botão e gesto de acessibilidade"</string>
- <string name="accessibility_button_intro_text" msgid="80993874471745687">"Acesse rapidamente os recursos de acessibilidade em qualquer tela"</string>
+ <string name="accessibility_button_intro_text" msgid="80993874471745687">"Acesse os recursos de acessibilidade em qualquer tela"</string>
<string name="accessibility_button_about_title" msgid="3581116105084067926">"Sobre o botão de acessibilidade"</string>
<string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"Sobre o botão e o gesto de acessibilidade"</string>
<string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"Saiba mais sobre o botão e o gesto de acessibilidade"</string>
@@ -2355,7 +2366,7 @@
<string name="accessibility_reduce_bright_colors_auto_added_qs_tooltip_content" msgid="1906588335786328512">"O recurso Mais escuro foi adicionado às Configurações rápidas. Deslize para baixo para ativar ou desativar a qualquer momento."</string>
<string name="accessibility_reduce_bright_colors_qs_tooltip_content" msgid="7522121299176176785">"Também é possível adicionar o recurso Mais escuro às Configurações rápidas na parte de cima da tela"</string>
<string name="accessibility_one_handed_mode_auto_added_qs_tooltip_content" msgid="7914554254280416532">"O modo uma mão foi adicionado às Configurações rápidas. Deslize para baixo para ativar ou desativar a qualquer momento."</string>
- <string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"Também é possível adicionar o modo uma mão às Configurações rápidas na parte de cima da tela"</string>
+ <string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"Também é possível adicionar o modo para uma mão às Configurações rápidas na parte de cima da tela"</string>
<string name="accessibility_font_scaling_auto_added_qs_tooltip_content" msgid="7229921960884718332">"Tamanho da fonte adicionado às Configurações rápidas. Mude o tamanho da fonte a qualquer momento deslizando para baixo."</string>
<string name="accessibility_quick_settings_tooltip_dismiss" msgid="3269120277643884190">"Dispensar"</string>
<string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"Usar correção de cor"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajustar uso de energia"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pacotes incluídos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Os apps estão funcionando normalmente"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"É recomendável trocar a bateria"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"A capacidade e o desempenho de carregamento estão reduzidos. Recomendamos a troca da bateria."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nível da bateria baixo"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Ativar a Economia de bateria para prolongar a duração da carga"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Melhorar a duração da bateria"</string>
@@ -2769,7 +2782,7 @@
<string name="vpn_settings_multiple_insecure_multiple_total" msgid="1706236062478680488">"<xliff:g id="VPN_COUNT">%d</xliff:g> não segura"</string>
<string name="adaptive_connectivity_title" msgid="7464959640138428192">"Conectividade adaptável"</string>
<string name="adaptive_connectivity_summary" msgid="3648731530666326885">"Aumenta a duração da bateria e melhora o desempenho do dispositivo ao gerenciar suas conexões de rede automaticamente"</string>
- <string name="adaptive_connectivity_switch_on" msgid="3653067561620745493">"Ativado"</string>
+ <string name="adaptive_connectivity_switch_on" msgid="3653067561620745493">"Ativada"</string>
<string name="adaptive_connectivity_switch_off" msgid="5076172560836115265">"Desativada"</string>
<string name="adaptive_connectivity_main_switch_title" msgid="261045483524512420">"Usar Conectividade adaptável"</string>
<string name="cellular_security_title" msgid="5562899485544677941">"Segurança de rede móvel"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Desconectar esta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desconectar"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versão"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Esquecer VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Substituir VPN já existente?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Configurar VPN sempre ativa?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Das 9h às 17h em dias de semana\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventos da agenda"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} está ativo}=2{{mode_1} e {mode_2} estão ativos}=3{{mode_1}, {mode_2} e {mode_3} estão ativos}one{{mode_1}, {mode_2} e mais # modo estão ativos}other{{mode_1}, {mode_2} e mais # modos estão ativos}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modo pode ser ativado automaticamente}one{# modo pode ser ativado automaticamente}other{# modos podem ser ativados automaticamente}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Não perturbe}=1{{mode_1}}=2{{mode_1} e {mode_2}}one{{mode_1}, {mode_2} e {mode_3}}other{{mode_1}, {mode_2} e {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ATIVADO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Não definido"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Desativado"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Se chegarem muitas notificações em um curto período, o dispositivo vai diminuir o volume e minimizar alertas por até 2 minutos. Isso não afeta ligações, alarmes e conversas prioritárias. \n\nAs notificações recebidas durante a atenuação podem ser encontradas ao deslizar de cima para baixo na tela."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplicar a perfis de trabalho"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplicar em apps do perfil de trabalho"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Serviços de ajuda para RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nenhum app instalado solicitou ser executado como serviço de ajuda para RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Permitir acesso ao serviço de RV para <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -4450,9 +4472,9 @@
<string name="button_navigation_settings_activity_title" msgid="7335636045504461813">"Navegação com botões"</string>
<string name="keywords_gesture_navigation_settings" msgid="667561222717238931">"navegação por gestos, sensibilidade para voltar, gestos de retorno"</string>
<string name="keywords_button_navigation_settings" msgid="7888812253110553920">"navegação, botão home"</string>
- <string name="one_handed_title" msgid="2584414010282746195">"Modo uma mão"</string>
- <string name="one_handed_mode_enabled" msgid="3396864848786359651">"Usar o modo uma mão"</string>
- <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Atalho do modo uma mão"</string>
+ <string name="one_handed_title" msgid="2584414010282746195">"Modo para uma mão"</string>
+ <string name="one_handed_mode_enabled" msgid="3396864848786359651">"Usar o modo para uma mão"</string>
+ <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Atalho do modo para uma mão"</string>
<string name="keywords_one_handed" msgid="969440592493034101">"acesso com uma mão"</string>
<string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Deslizar para baixo para"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"Usar o atalho para"</string>
@@ -5182,7 +5204,7 @@
<string name="all_apps" msgid="3054120149509114789">"Todos os apps"</string>
<string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Não permitir"</string>
<string name="uwb_settings_title" msgid="8578498712312002231">"Banda ultralarga (UWB)"</string>
- <string name="uwb_settings_summary" msgid="3074271396764672268">"Ajuda a identificar a posição relativa de dispositivos com UWB por perto"</string>
+ <string name="uwb_settings_summary" msgid="3074271396764672268">"Identifique a posição relativa de dispositivos com UWB por perto"</string>
<string name="uwb_settings_summary_airplane_mode" msgid="1328864888135086484">"Desative o modo avião para usar a UWB"</string>
<string name="uwb_settings_summary_no_uwb_regulatory" msgid="3465456428217979428">"UWB indisponível no local atual"</string>
<string name="thread_network_settings_title" msgid="4212301030523859220">"Thread"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Ouvir o stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Use o QR code de um stream de áudio para ouvir com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Não é possível editar a senha enquanto compartilha. Para mudar a senha, primeiro desligue o compartilhamento de áudio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"A senha precisa ter de 4 a 16 caracteres e usar apenas letras, números e símbolos"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Leitor de QR code"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Precisa de ajuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Pesquisar configurações"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Somente dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Os novos contatos não serão sincronizados com uma conta"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Os contatos serão salvos no seu dispositivo e sincronizados com sua conta por padrão"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nenhuma conta padrão configurada"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Erro ao definir a conta padrão"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nenhuma conta padrão configurada"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Somente dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Adicione uma conta para começar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circule para pesquisar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Toque no botão home ou na alça de navegação e pressione para pesquisar usando o conteúdo na tela."</string>
</resources>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index 319e19b..2b2b596 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Pasta de trabalho"</item>
+ <item msgid="184985872234062767">"Edifício clássico"</item>
+ <item msgid="9189550412466785530">"Edifício de apartamentos"</item>
+ <item msgid="2142527562511049422">"Balão de fala"</item>
+ <item msgid="2548100558260478605">"Grupo de pessoas"</item>
+ <item msgid="2270003903304578284">"Lâmpada"</item>
+ <item msgid="4793496619091161864">"Calendário"</item>
+ <item msgid="5673625795644364100">"Não incomodar"</item>
+ <item msgid="1423820834865831361">"Pessoa a correr"</item>
+ <item msgid="2037298830718732608">"Golfe"</item>
+ <item msgid="2197835014443491074">"Haltere de ginásio"</item>
+ <item msgid="2730180105015616518">"Natação"</item>
+ <item msgid="2666922823253345958">"Pessoa a caminhar"</item>
+ <item msgid="8234880356472211396">"Pessoa a atirar uma bola"</item>
+ <item msgid="4642980625253001443">"Pessoa a pontapear"</item>
+ <item msgid="4324795269518833500">"Comando de jogos"</item>
+ <item msgid="7789966425125441125">"Paleta de cores artística"</item>
+ <item msgid="663512680597461570">"Floco de neve"</item>
+ <item msgid="7952183800501346803">"Guarda-sol"</item>
+ <item msgid="799139025758265891">"Ferramentas de oficina"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Bobina de filme"</item>
+ <item msgid="5827426100157335512">"Livro"</item>
+ <item msgid="8585828346253128384">"Flor de lótus"</item>
+ <item msgid="8788370542815300188">"A mente da pessoa"</item>
+ <item msgid="7287354964767553293">"Auscultadores"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Comboio"</item>
+ <item msgid="4903790544026923026">"Carro"</item>
+ <item msgid="5010405583912314582">"Garfo e faca"</item>
+ <item msgid="8939998598599064900">"Carrinho de compras"</item>
+ <item msgid="3379605903308731893">"Criança"</item>
+ <item msgid="7808668968550293112">"Pata de animal"</item>
+ <item msgid="1000692647524056504">"Emblema de estrela"</item>
+ <item msgid="8270261073421676502">"2 pessoas"</item>
+ <item msgid="5767782819651505460">"Estrela"</item>
+ <item msgid="4368451291862729334">"Coração"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Meia-lua"</item>
+ <item msgid="5421089790869483206">"Relógio"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 920d318..d5db56e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Sincronizar novo dispositivo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Ativar automaticamente amanhã"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Se desativar o Bluetooth, este é reativado no dia seguinte"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Sincr. ouv. direito"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Sincr. ouv. esquerdo"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Sincroniz. o outro ouvido"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desativar Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Desativa a funcionalidade Bluetooth LE Audio se o dispositivo suportar as capacidades de hardware LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modo Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Ativar a pré-visualização da IU de transmissão do Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Ativa a pré-visualização da IU de partilha do LE Audio, incluindo a partilha de áudio pessoal e a transmissão privada"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Ver botão LE Audio nos Detalhes"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Contornar lista de autorizações do Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Use o LE Audio por predefinição, mesmo se o cumprimento dos critérios da lista de autorizações pelo periférico com LE Audio não tiver sido validado."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Definir automaticamente com base na sua rede e sinais sem fios"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuso horário automático"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Definir automaticamente com base nas redes móveis perto de si"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Definir automaticamente com base na localização do dispositivo, se disponível"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usar local predefinido"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Usar formato de 24 horas"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Hora"</string>
@@ -285,7 +287,7 @@
<string name="location_settings_title" msgid="8375074508036087178">"Localização"</string>
<string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Usar localização"</string>
<string name="location_settings_summary_location_off" msgid="4797932754681162262">"Desativada"</string>
- <string name="location_settings_summary_location_on" msgid="4273299717586679786">"{count,plural, =1{Ativada / # app tem acesso à localização}other{Ativada / # apps têm acesso à localização}}"</string>
+ <string name="location_settings_summary_location_on" msgid="4273299717586679786">"{count,plural, =1{Ativada/# app tem acesso à localização}other{Ativada/# apps têm acesso à localização}}"</string>
<string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"A carregar…"</string>
<string name="location_settings_footer_general" msgid="3447585552176173502">"As apps com a autorização Dispositivos próximos podem determinar a posição relativa dos dispositivos ligados."</string>
<string name="location_settings_footer_location_off" msgid="8568995909147566720">"O acesso à localização está desativado para apps e serviços. A localização do dispositivo ainda pode ser enviada para os contactos de resposta a emergências quando liga ou envia uma mensagem de texto para um número de emergência."</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Levante o dedo e toque no sensor novamente"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Não é possível usar o sensor de impressões digitais"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Visite um fornecedor de serviços de reparação."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueio por impressão digital com o ecrã desligado"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use o Desbloqueio por impressão digital mesmo quando o ecrã está desligado"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ecrã desligado, Desbloquear"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Mais definições de segurança"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueio do perfil de trabalho, encriptação e muito mais"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Encriptação, credenciais e muito mais"</string>
@@ -564,7 +569,7 @@
<string name="private_space_title" msgid="1752064212078238723">"Espaço privado"</string>
<string name="private_space_summary" msgid="2274405892301976238">"Mantém as apps privadas bloqueadas e ocultas"</string>
<string name="private_space_description" msgid="4059594203775816136">"Mantenha as apps privadas num espaço separado que pode ocultar ou bloquear"</string>
- <string name="private_space_lock_title" msgid="7230836881433350526">"Bloqueio do espaço privado"</string>
+ <string name="private_space_lock_title" msgid="7230836881433350526">"Bloquear espaço privado"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Pode desbloquear o espaço privado da mesma forma que desbloqueia o seu dispositivo ou escolher um bloqueio diferente"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"Usar bloqueio de ecrã do dispositivo"</string>
<string name="private_space_biometric_title" msgid="3934339826674553174">"Desbloqueio facial e por impressão digital"</string>
@@ -623,7 +628,7 @@
<string name="private_space_cancel_label" msgid="379259667396956886">"Cancelar"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"Configurar"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"Espaço privado"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Oculte ou bloqueie apps privadas num espaço separado. Use uma Conta Google exclusiva para maior segurança."</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Oculte ou bloqueie apps privadas num espaço separado. Use uma Conta Google dedicada para maior segurança."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Como funciona"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Crie uma Conta Google para o seu espaço"</b>\n"Se usar uma conta dedicada, impede que os ficheiros, as fotos e os emails sincronizados sejam apresentados fora do seu espaço"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Defina um bloqueio"</b>\n"Bloqueie o seu espaço para impedir que outras pessoas o abram"</string>
@@ -1946,23 +1951,33 @@
<string name="keyboard_options_category" msgid="8040137073401152608">"Opções"</string>
<string name="keyboard_a11y_category" msgid="8230758278046841469">"Acessibilidade"</string>
<string name="physical_keyboard_title" msgid="3328134097512350958">"Teclado físico"</string>
- <string name="bounce_keys" msgid="7419450970351743904">"Teclas de rejeição"</string>
+ <string name="bounce_keys" msgid="7419450970351743904">"Evitar pressão repetida"</string>
<string name="bounce_keys_summary" msgid="7418024428905737729">"O teclado ignora as pressões rápidas repetidas da mesma tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Limiar para evitar pressão repetida"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Escolha o tempo durante o qual o teclado ignora as pressões repetidas das teclas"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizado"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalizado"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajusta o tempo que demora a ativação de uma tecla pressionada"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Teclas aderentes"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Prima uma tecla de cada vez para os atalhos em vez de manter as teclas premidas em simultâneo"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Teclas do rato"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usar teclas do rato"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use o teclado para controlar o ponteiro"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Deslocamento inverso do rato"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Desloque para cima para mover a página para baixo"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Trocar botões esquerdo e direito"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use o botão esquerdo do rato como o botão direito"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Teclas do rato de <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use as teclas <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> para mover o ponteiro do rato"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use a tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> para clicar no botão principal do rato"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use a tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> para premir sem soltar o botão principal do rato"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use a tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> para soltar o botão principal do rato"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use a tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> para ativar/desativar o modo de deslocamento. Isto faz com que as teclas <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> desloquem a vista para cima, para baixo, para a esquerda ou para a direita"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use a tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> para clicar no botão secundário do rato"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Atalhos de teclado"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostre a lista de atalhos"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Teclados e ferramentas do perfil de trabalho"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Escolha uma nova tecla para <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Acessibilidade do teclado físico"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas aderentes, teclas sem repetição, teclas do rato"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repetir teclas"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Atraso antes da repetição"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Taxa de repetição"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Mantenha uma tecla premida para repetir o respetivo caráter até a tecla ser libertada"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Esquema do <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predefinição"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automático: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajustar utilização de energia"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pacotes incluídos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"As apps estão a ser executadas normalmente"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Substituição da bateria recomendada"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"A capacidade da bateria e o desempenho de carregamento estão reduzidos, e é recomendada a substituição da bateria."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nível da bateria baixo"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Ative a Poupança de bateria para prolongar a autonomia da bateria"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Melhore a autonomia da bateria"</string>
@@ -2700,7 +2713,7 @@
<string name="battery_usage_breakdown_title_since_last_full_charge" msgid="435006273323199906">"Utilização da bateria desde o último carregamento completo"</string>
<string name="battery_usage_breakdown_title_for_slot" msgid="4823179483667671406">"Utilização da bateria: <xliff:g id="SLOT">%s</xliff:g>"</string>
<string name="screen_time_category_last_full_charge" msgid="8856908320256057753">"Tempo ao ecrã desde o último carregamento completo"</string>
- <string name="screen_time_category_for_slot" msgid="8287722270554654959">"Tempo ao ecrão: <xliff:g id="SLOT">%s</xliff:g>"</string>
+ <string name="screen_time_category_for_slot" msgid="8287722270554654959">"Tempo ao ecrã: <xliff:g id="SLOT">%s</xliff:g>"</string>
<string name="battery_usage_spinner_view_by_apps" msgid="8769276544072098082">"Ver por apps"</string>
<string name="battery_usage_spinner_view_by_systems" msgid="7904104223212160541">"Ver por sistemas"</string>
<string name="battery_usage_less_than_percent" msgid="5873099028895001082">"< <xliff:g id="PERCENTAGE">%1$s</xliff:g>"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Quer desligar esta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desligar"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versão"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Esquecer VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Quer substituir a VPN existente?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Quer definir a VPN como sempre ativa?"</string>
@@ -3229,7 +3241,7 @@
<string name="connected_devices_dashboard_android_auto_no_driving_mode_summary" msgid="6426996842202276640">"Bluetooth, Android Auto, NFC"</string>
<string name="connected_devices_dashboard_android_auto_no_nfc_no_driving_mode" msgid="1672426693308438634">"Bluetooth, Android Auto"</string>
<string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"Não disponível com o NFC desativado"</string>
- <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Para utilizar, comece por instalar uma app de pagamento"</string>
+ <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Para usar, instale primeiro uma app de pagamento"</string>
<string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"Apps recentes, apps predefinidas"</string>
<string name="notification_settings_work_profile" msgid="6076211850526353975">"O acesso às notificações não está disponível para aplicações no perfil de trabalho."</string>
<string name="account_dashboard_title" msgid="8228773251948253914">"Palavras-passe e contas"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00 – 17:00, dias úteis\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventos de calendário"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} está ativo}=2{{mode_1} e {mode_2} estão ativos}=3{{mode_1}, {mode_2} e {mode_3} estão ativos}other{{mode_1}, {mode_2} e mais # estão ativos}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modo pode ser ativado automaticamente}other{# modos podem ser ativados automaticamente}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Não incomodar}=1{{mode_1}}=2{{mode_1} e {mode_2}}other{{mode_1}, {mode_2} e {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ATIVADO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Não definido"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Desativado"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Quando recebe muitas notificações num curto espaço de tempo, o dispositivo diminui o volume e minimiza os alertas durante, no máximo, 2 minutos. As chamadas, os alarmes e as conversas com prioridade não são afetadas. \n\nPara encontrar as notificações recebidas durante o repouso, puxe o ecrã para baixo a partir da parte superior."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplicar aos perfis de trabalho"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplique a apps de perfil de trabalho"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Serviços de assistente de RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nenhuma app instalada pediu para ser executada como serviço de assistente de RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Permitir que o serviço de RV tenha acesso a <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5224,7 +5246,7 @@
<string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar mais tarde"</string>
<string name="bluetooth_details_spatial_audio_title" msgid="1368071116994002707">"Áudio espacial"</string>
<string name="bluetooth_details_spatial_audio_summary" msgid="5026859623681482668">"O áudio de dispositivos multimédia compatíveis torna-se mais envolvente"</string>
- <string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"Acompanhamento da cabeça"</string>
+ <string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"Posição da cabeça"</string>
<string name="bluetooth_details_head_tracking_summary" msgid="3942238746595985395">"O áudio muda conforme move a cabeça para soar mais natural"</string>
<string name="bluetooth_details_permissions_sync_title" msgid="7277580382321003521">"Sincronizar autorizações do telemóvel"</string>
<string name="bluetooth_details_permissions_sync_summary" msgid="8125037984381432059">"Conceda ao seu relógio as mesmas autorizações da app que concedeu a este telemóvel"</string>
@@ -5324,7 +5346,7 @@
<string name="dock_multi_instances_not_supported_text" msgid="3513493664467667084">"Esta app só pode ser aberta em 1 janela"</string>
<string name="generic_accessibility_service_on" msgid="4466229372357726824">"Funcionalidade ativada"</string>
<string name="generic_accessibility_service_off" msgid="4759859497651675724">"Funcionalidade desativada"</string>
- <string name="generic_accessibility_feature_shortcut_off" msgid="4022872394514077907">"Desativado"</string>
+ <string name="generic_accessibility_feature_shortcut_off" msgid="4022872394514077907">"Opção desativada"</string>
<string name="accessibility_shortcut_state_off" msgid="8158137799007601475">"Desativado"</string>
<string name="daltonizer_state_on" msgid="131013270022603983">"Ativado"</string>
<string name="daltonizer_state_off" msgid="1162285688069856179">"Desativada"</string>
@@ -5457,8 +5479,9 @@
<string name="audio_streams_main_page_scan_qr_code_title" msgid="8337270277392468895">"Ler código QR"</string>
<string name="audio_streams_main_page_scan_qr_code_summary" msgid="1991792283368249499">"Comece a ouvir lendo o código QR de uma stream"</string>
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Ouvir stream"</string>
- <string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Leia o código QR de uma stream de áudio para ouvir com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Leia o código QR de uma stream de áudio para ouvir com os <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Não é possível editar a palavra-passe durante a partilha. Para alterar a palavra-passe, primeiro, desative a partilha de áudio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"A sua palavra-passe tem de conter entre 4 e 16 carateres e usar apenas letras, números e símbolos"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Leitor de códigos QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Precisa de ajuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Pesquise definições"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Apenas no dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Os novos contactos não vão ser sincronizados com uma conta"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Os contactos vão ser guardados no dispositivo e sincronizados com a sua conta por predefinição"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nenhuma conta predefinida"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Erro ao predefinir a conta"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nenhuma conta predefinida"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Apenas no dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Adicione uma conta para começar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circundar para Pesquisar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Toque sem soltar no botão do ecrã principal ou no indicador de navegação para pesquisar usando o conteúdo no ecrã."</string>
</resources>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index 3fe4241..35df470 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Maleta"</item>
+ <item msgid="184985872234062767">"Edifício clássico"</item>
+ <item msgid="9189550412466785530">"Edifício de apartamentos"</item>
+ <item msgid="2142527562511049422">"Balão de diálogo"</item>
+ <item msgid="2548100558260478605">"Grupo de pessoas"</item>
+ <item msgid="2270003903304578284">"Lâmpada"</item>
+ <item msgid="4793496619091161864">"Calendário"</item>
+ <item msgid="5673625795644364100">"Não perturbe"</item>
+ <item msgid="1423820834865831361">"Pessoa correndo"</item>
+ <item msgid="2037298830718732608">"Golfe"</item>
+ <item msgid="2197835014443491074">"Peso de academia"</item>
+ <item msgid="2730180105015616518">"Natação"</item>
+ <item msgid="2666922823253345958">"Pessoa escalando"</item>
+ <item msgid="8234880356472211396">"Pessoa jogando bola"</item>
+ <item msgid="4642980625253001443">"Pessoa chutando"</item>
+ <item msgid="4324795269518833500">"Controle de jogo"</item>
+ <item msgid="7789966425125441125">"Paleta de cores do artista"</item>
+ <item msgid="663512680597461570">"Floco de neve"</item>
+ <item msgid="7952183800501346803">"Guarda-sol"</item>
+ <item msgid="799139025758265891">"Ferramentas"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Rolo de filme"</item>
+ <item msgid="5827426100157335512">"Livro"</item>
+ <item msgid="8585828346253128384">"Flor de lótus"</item>
+ <item msgid="8788370542815300188">"Mente humana"</item>
+ <item msgid="7287354964767553293">"Fones de ouvido"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Trem"</item>
+ <item msgid="4903790544026923026">"Carro"</item>
+ <item msgid="5010405583912314582">"Garfo e faca"</item>
+ <item msgid="8939998598599064900">"Carrinho de compras"</item>
+ <item msgid="3379605903308731893">"Criança"</item>
+ <item msgid="7808668968550293112">"Pata de animal"</item>
+ <item msgid="1000692647524056504">"Selo de estrela"</item>
+ <item msgid="8270261073421676502">"Duas pessoas"</item>
+ <item msgid="5767782819651505460">"Estrela"</item>
+ <item msgid="4368451291862729334">"Coração"</item>
+ <item msgid="2613199102208419986">"Casa"</item>
+ <item msgid="3022279986430275040">"Meia-lua"</item>
+ <item msgid="5421089790869483206">"Relógio"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 3f4a5d0..bf3b903 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Parear novo dispositivo"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Ativar automaticamente amanhã"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Se você desativar o Bluetooth, ele será reativado no dia seguinte"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Parear lado direito"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Parear lado esquerdo"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Pareie o outro lado"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desativar Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Desativa o recurso de Bluetooth LE Audio caso o hardware do dispositivo tenha essa opção."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modo Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Ativar a visualização da interface de transmissão de Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Ativa a visualização da interface de compartilhamento de LE Audio, incluindo o compartilhamento de áudio pessoal e a transmissão particular"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Mostrar a chave do Bluetooth LE Audio nos Detalhes do dispositivo"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ignorar lista de permissões do Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Usar o áudio de baixo consumo (LE Audio) por padrão, mesmo que o periférico dele não tenha sido verificado para atender aos critérios da lista de permissões."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Definir automaticamente usando sua rede e sinais sem fio"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fuso horário automático"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Definir automaticamente com base nas redes móveis perto de você"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Definir automaticamente usando o local do dispositivo, se disponível"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Usar o padrão do local"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Usar formato de 24 horas"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Horário"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Levante o dedo e depois toque no sensor novamente"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Não foi possível usar o sensor de impressão digital"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Entre em contato com uma assistência técnica."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Desbloqueio por impressão digital com a tela desligada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Use o Desbloqueio por impressão digital mesmo com a tela desligada"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Tela desligada, Desbloqueio"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Mais configurações de segurança"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Bloqueio do perfil de trabalho, criptografia e muito mais"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Criptografia, credenciais e muito mais"</string>
@@ -562,7 +567,7 @@
<string name="privacy_header" msgid="5526002421324257007">"Privacidade"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Perfil de trabalho"</string>
<string name="private_space_title" msgid="1752064212078238723">"Espaço privado"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"Mantenha apps particulares bloqueados e ocultos"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"Mantém apps particulares bloqueados e ocultos"</string>
<string name="private_space_description" msgid="4059594203775816136">"Mantenha a privacidade de apps em um espaço separado que você pode ocultar ou bloquear"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Bloqueio do espaço privado"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Você pode desbloquear seu Espaço privado da mesma maneira que desbloqueia seu dispositivo ou escolher um bloqueio diferente"</string>
@@ -1303,10 +1308,10 @@
<string name="dark_ui_summary_on_auto_mode_custom" msgid="2526935680241734784">"Será desativado automaticamente: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="dark_ui_summary_on_auto_mode_custom_bedtime" msgid="1976993025762551246">"Será desativado automaticamente após a hora de dormir"</string>
<string name="dark_ui_summary_on_auto_mode_modes" msgid="7769594183411785087">"Será desativado quando o modo <xliff:g id="ID_1">%1$s</xliff:g> terminar"</string>
- <string name="dark_ui_text" msgid="4392646155331126666">"O tema escuro usa um plano de fundo preto para aumentar a duração da bateria em algumas telas. Ele é ativado apenas depois que a tela for desligada."</string>
+ <string name="dark_ui_text" msgid="4392646155331126666">"O tema escuro usa um plano de fundo preto para ajudar a prolongar a duração da bateria. Só é ativado por Programação depois que a tela for desativada."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"O tema escuro está seguindo sua programação do Modo hora de dormir"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Configurações do Modo hora de dormir"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Os modos também podem ativar o tema escuro}=1{O modo {mode_1} também ativa o tema escuro}=2{Os modos {mode_1} e {mode_2} também ativam o tema escuro}=3{Os modos {mode_1}, {mode_2} e {mode_3} também ativam o tema escuro}one{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}other{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Alguns modos também ativam o tema escuro}=1{O modo {mode_1} também ativa o tema escuro}=2{Os modos {mode_1} e {mode_2} também ativam o tema escuro}=3{Os modos {mode_1}, {mode_2} e {mode_3} também ativam o tema escuro}one{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}other{Os modos {mode_1}, {mode_2} e mais # também ativam o tema escuro}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Configurações de modos"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Ainda mais escuro"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Permitir que o dispositivo fique mais escuro do que o normal"</string>
@@ -1597,7 +1602,7 @@
<string name="tether_settings_summary_usb_and_bluetooth_and_ethernet" msgid="5880591133984166550">"USB, Bluetooth, Ethernet"</string>
<string name="tether_settings_summary_all" msgid="7565193614882005775">"Ponto de acesso, USB, Bluetooth, Ethernet"</string>
<string name="tether_settings_summary_off" msgid="2526164899130351968">"Não está compartilhando a Internet com outros dispositivos"</string>
- <string name="tether_preference_summary_off" msgid="6266799346319794630">"Desativados"</string>
+ <string name="tether_preference_summary_off" msgid="6266799346319794630">"Desativado"</string>
<string name="usb_tethering_button_text" msgid="7364633823180913777">"Tethering USB"</string>
<string name="bluetooth_tether_checkbox_text" msgid="6108398414967813545">"Tethering Bluetooth"</string>
<string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"Tethering Ethernet"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"O teclado ignora pressionamentos rápidos e repetidos da mesma tecla"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Limite da tecla de filtragem"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Escolha por quanto tempo o teclado ignora pressionamentos repetidos"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizado"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valor personalizado"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajusta o tempo que leva para um pressionamento de tecla ser ativado"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Teclas de aderência"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Pressione uma tecla por vez para usar atalhos em vez de manter as teclas pressionadas juntas"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Teclas do mouse"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Usar teclas do mouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Use o teclado para controlar o ponteiro"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Rolagem reversa do mouse"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Deslize para cima para descer na página"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Trocar os botões esquerdo e direito"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Use o botão esquerdo do mouse como o direito"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Teclas do mouse para <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Use as teclas <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> para mover o ponteiro do mouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Use a tecla <xliff:g id="CLICK_LABEL">%s</xliff:g> para clicar no botão principal do mouse"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Use a tecla <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> para tocar e pressionar o botão principal do mouse"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Use a tecla <xliff:g id="RELEASE_LABEL">%s</xliff:g> para soltar o botão principal do mouse"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Use a tecla <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> para trocar o modo de rolagem. Isso vai fazer com que as teclas <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> rolem a visualização para cima, para baixo, para a esquerda ou para a direita"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Use a tecla <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> para clicar no botão secundário do mouse"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Atalhos do teclado"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Mostrar lista de atalhos"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Teclados e ferramentas de perfil de trabalho"</string>
@@ -1999,7 +2014,7 @@
<string name="gesture_summary_go_home" msgid="6409031586904205741">"Deslize para cima com três dedos em qualquer lugar do touchpad"</string>
<string name="gesture_title_go_back" msgid="6619462058488419802">"Voltar"</string>
<string name="gesture_summary_go_back" msgid="4981604277892236888">"Deslize da esquerda ou direita com três dedos"</string>
- <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Conferir os apps recentes"</string>
+ <string name="gesture_title_recent_apps" msgid="6082688963233208761">"Ver os apps recentes"</string>
<string name="gesture_summary_recent_apps" msgid="6643179135202417509">"Deslize para cima com três dedos, segure e depois solte"</string>
<string name="gesture_title_notifications" msgid="791717222472350194">"Abrir notificações e Configurações rápidas"</string>
<string name="gesture_summary_notifications" msgid="8419514601638387255">"Deslize para baixo com três dedos na tela inicial"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Escolha uma nova tecla para <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Acessibilidade do teclado físico"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Teclas de aderência, teclas de filtragem, teclas do mouse"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repetir teclas"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Atraso antes da repetição"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Taxa de repetição"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pressione e segure uma tecla para repetir o caractere dela até que seja liberada"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Layout do <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Padrão"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automático: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2218,7 +2229,7 @@
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"Para iniciar ou interromper a ampliação, toque duas vezes rapidamente com %1$d dedos na tela"</string>
<string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{Para usar esse recurso, deslize de cima para baixo na tela. Depois, encontre o bloco {featureName}.}one{Para usar esse recurso, deslize com # dedo de cima para baixo na tela. Depois, encontre o bloco {featureName}.}other{Para usar esse recurso, deslize com # dedos de cima para baixo na tela. Depois, encontre o bloco {featureName}.}}"</string>
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"Esse atalho vai estar disponível depois que você concluir a configuração do dispositivo."</string>
- <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esse recurso, deslize dois dedos na rela, de baixo para cima.\n\nPara mudar de recurso, deslize dois dedos de baixo para cima da tela e segure."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esse recurso, deslize dois dedos na tela, de baixo para cima.\n\nPara mudar de recurso, deslize dois dedos de baixo para cima da tela e segure."</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{Para usar esse recurso, deslize de baixo para cima na tela}one{Para usar esse recurso, deslize com # dedo de baixo para cima na tela}other{Para usar esse recurso, deslize com # dedos de baixo para cima na tela}}"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esse recurso, deslize de baixo para cima na tela com três dedos.\n\nPara mudar de recurso, deslize de baixo para cima com três dedos, sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para usar um recurso de acessibilidade, deslize de baixo para cima na tela com dois dedos.\n\nPara alternar entre recursos, deslize de baixo para cima com dois dedos, sem soltar."</string>
@@ -2260,7 +2271,7 @@
<string name="accessibility_shortcut_description" msgid="2184693606202133549">"Permitir que o atalho do recurso seja ativado pela tela de bloqueio. Pressione as duas teclas de volume por alguns segundos."</string>
<string name="accessibility_button_title" msgid="5251235485581552614">"Botão de acessibilidade"</string>
<string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botão e gesto de acessibilidade"</string>
- <string name="accessibility_button_intro_text" msgid="80993874471745687">"Acesse rapidamente os recursos de acessibilidade em qualquer tela"</string>
+ <string name="accessibility_button_intro_text" msgid="80993874471745687">"Acesse os recursos de acessibilidade em qualquer tela"</string>
<string name="accessibility_button_about_title" msgid="3581116105084067926">"Sobre o botão de acessibilidade"</string>
<string name="accessibility_button_gesture_about_title" msgid="8468987303602865536">"Sobre o botão e o gesto de acessibilidade"</string>
<string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"Saiba mais sobre o botão e o gesto de acessibilidade"</string>
@@ -2355,7 +2366,7 @@
<string name="accessibility_reduce_bright_colors_auto_added_qs_tooltip_content" msgid="1906588335786328512">"O recurso Mais escuro foi adicionado às Configurações rápidas. Deslize para baixo para ativar ou desativar a qualquer momento."</string>
<string name="accessibility_reduce_bright_colors_qs_tooltip_content" msgid="7522121299176176785">"Também é possível adicionar o recurso Mais escuro às Configurações rápidas na parte de cima da tela"</string>
<string name="accessibility_one_handed_mode_auto_added_qs_tooltip_content" msgid="7914554254280416532">"O modo uma mão foi adicionado às Configurações rápidas. Deslize para baixo para ativar ou desativar a qualquer momento."</string>
- <string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"Também é possível adicionar o modo uma mão às Configurações rápidas na parte de cima da tela"</string>
+ <string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"Também é possível adicionar o modo para uma mão às Configurações rápidas na parte de cima da tela"</string>
<string name="accessibility_font_scaling_auto_added_qs_tooltip_content" msgid="7229921960884718332">"Tamanho da fonte adicionado às Configurações rápidas. Mude o tamanho da fonte a qualquer momento deslizando para baixo."</string>
<string name="accessibility_quick_settings_tooltip_dismiss" msgid="3269120277643884190">"Dispensar"</string>
<string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"Usar correção de cor"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajustar uso de energia"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pacotes incluídos"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Os apps estão funcionando normalmente"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"É recomendável trocar a bateria"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"A capacidade e o desempenho de carregamento estão reduzidos. Recomendamos a troca da bateria."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nível da bateria baixo"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Ativar a Economia de bateria para prolongar a duração da carga"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Melhorar a duração da bateria"</string>
@@ -2769,7 +2782,7 @@
<string name="vpn_settings_multiple_insecure_multiple_total" msgid="1706236062478680488">"<xliff:g id="VPN_COUNT">%d</xliff:g> não segura"</string>
<string name="adaptive_connectivity_title" msgid="7464959640138428192">"Conectividade adaptável"</string>
<string name="adaptive_connectivity_summary" msgid="3648731530666326885">"Aumenta a duração da bateria e melhora o desempenho do dispositivo ao gerenciar suas conexões de rede automaticamente"</string>
- <string name="adaptive_connectivity_switch_on" msgid="3653067561620745493">"Ativado"</string>
+ <string name="adaptive_connectivity_switch_on" msgid="3653067561620745493">"Ativada"</string>
<string name="adaptive_connectivity_switch_off" msgid="5076172560836115265">"Desativada"</string>
<string name="adaptive_connectivity_main_switch_title" msgid="261045483524512420">"Usar Conectividade adaptável"</string>
<string name="cellular_security_title" msgid="5562899485544677941">"Segurança de rede móvel"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Desconectar esta VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Desconectar"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versão"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Esquecer VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Substituir VPN já existente?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Configurar VPN sempre ativa?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Das 9h às 17h em dias de semana\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Eventos da agenda"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} está ativo}=2{{mode_1} e {mode_2} estão ativos}=3{{mode_1}, {mode_2} e {mode_3} estão ativos}one{{mode_1}, {mode_2} e mais # modo estão ativos}other{{mode_1}, {mode_2} e mais # modos estão ativos}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modo pode ser ativado automaticamente}one{# modo pode ser ativado automaticamente}other{# modos podem ser ativados automaticamente}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Não perturbe}=1{{mode_1}}=2{{mode_1} e {mode_2}}one{{mode_1}, {mode_2} e {mode_3}}other{{mode_1}, {mode_2} e {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ATIVADO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Não definido"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Desativado"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Se chegarem muitas notificações em um curto período, o dispositivo vai diminuir o volume e minimizar alertas por até 2 minutos. Isso não afeta ligações, alarmes e conversas prioritárias. \n\nAs notificações recebidas durante a atenuação podem ser encontradas ao deslizar de cima para baixo na tela."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplicar a perfis de trabalho"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplicar em apps do perfil de trabalho"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Serviços de ajuda para RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nenhum app instalado solicitou ser executado como serviço de ajuda para RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Permitir acesso ao serviço de RV para <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -4450,9 +4472,9 @@
<string name="button_navigation_settings_activity_title" msgid="7335636045504461813">"Navegação com botões"</string>
<string name="keywords_gesture_navigation_settings" msgid="667561222717238931">"navegação por gestos, sensibilidade para voltar, gestos de retorno"</string>
<string name="keywords_button_navigation_settings" msgid="7888812253110553920">"navegação, botão home"</string>
- <string name="one_handed_title" msgid="2584414010282746195">"Modo uma mão"</string>
- <string name="one_handed_mode_enabled" msgid="3396864848786359651">"Usar o modo uma mão"</string>
- <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Atalho do modo uma mão"</string>
+ <string name="one_handed_title" msgid="2584414010282746195">"Modo para uma mão"</string>
+ <string name="one_handed_mode_enabled" msgid="3396864848786359651">"Usar o modo para uma mão"</string>
+ <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Atalho do modo para uma mão"</string>
<string name="keywords_one_handed" msgid="969440592493034101">"acesso com uma mão"</string>
<string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Deslizar para baixo para"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"Usar o atalho para"</string>
@@ -5182,7 +5204,7 @@
<string name="all_apps" msgid="3054120149509114789">"Todos os apps"</string>
<string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Não permitir"</string>
<string name="uwb_settings_title" msgid="8578498712312002231">"Banda ultralarga (UWB)"</string>
- <string name="uwb_settings_summary" msgid="3074271396764672268">"Ajuda a identificar a posição relativa de dispositivos com UWB por perto"</string>
+ <string name="uwb_settings_summary" msgid="3074271396764672268">"Identifique a posição relativa de dispositivos com UWB por perto"</string>
<string name="uwb_settings_summary_airplane_mode" msgid="1328864888135086484">"Desative o modo avião para usar a UWB"</string>
<string name="uwb_settings_summary_no_uwb_regulatory" msgid="3465456428217979428">"UWB indisponível no local atual"</string>
<string name="thread_network_settings_title" msgid="4212301030523859220">"Thread"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Ouvir o stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Use o QR code de um stream de áudio para ouvir com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Não é possível editar a senha enquanto compartilha. Para mudar a senha, primeiro desligue o compartilhamento de áudio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"A senha precisa ter de 4 a 16 caracteres e usar apenas letras, números e símbolos"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Leitor de QR code"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Precisa de ajuda?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Pesquisar configurações"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Somente dispositivo"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Os novos contatos não serão sincronizados com uma conta"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Os contatos serão salvos no seu dispositivo e sincronizados com sua conta por padrão"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nenhuma conta padrão configurada"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Erro ao definir a conta padrão"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nenhuma conta padrão configurada"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Somente dispositivo"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Adicione uma conta para começar"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circule para pesquisar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Toque no botão home ou na alça de navegação e pressione para pesquisar usando o conteúdo na tela."</string>
</resources>
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index b1c4771..1872920 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Servietă"</item>
+ <item msgid="184985872234062767">"Clădire clasică"</item>
+ <item msgid="9189550412466785530">"Bloc de locuințe"</item>
+ <item msgid="2142527562511049422">"Balon explicativ"</item>
+ <item msgid="2548100558260478605">"Grup de persoane"</item>
+ <item msgid="2270003903304578284">"Bec"</item>
+ <item msgid="4793496619091161864">"Calendar"</item>
+ <item msgid="5673625795644364100">"Nu deranja"</item>
+ <item msgid="1423820834865831361">"Persoană care aleargă"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Ganteră"</item>
+ <item msgid="2730180105015616518">"Înot"</item>
+ <item msgid="2666922823253345958">"Persoană care face ascensiuni"</item>
+ <item msgid="8234880356472211396">"Persoană care aruncă o minge"</item>
+ <item msgid="4642980625253001443">"Persoană care dă un șut"</item>
+ <item msgid="4324795269518833500">"Controler de jocuri"</item>
+ <item msgid="7789966425125441125">"Paletă de culori pentru artiști"</item>
+ <item msgid="663512680597461570">"Fulg de nea"</item>
+ <item msgid="7952183800501346803">"Umbrelă de plajă"</item>
+ <item msgid="799139025758265891">"Instrumente din atelier"</item>
+ <item msgid="8112685757657659269">"Pian"</item>
+ <item msgid="3861584909935022342">"Bobină de film"</item>
+ <item msgid="5827426100157335512">"Carte"</item>
+ <item msgid="8585828346253128384">"Floare de lotus"</item>
+ <item msgid="8788370542815300188">"Mintea unei persoane"</item>
+ <item msgid="7287354964767553293">"Căști"</item>
+ <item msgid="2530059623783800987">"Televizor"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Mașină"</item>
+ <item msgid="5010405583912314582">"Furculiță și cuțit"</item>
+ <item msgid="8939998598599064900">"Coș de cumpărături"</item>
+ <item msgid="3379605903308731893">"Copil"</item>
+ <item msgid="7808668968550293112">"Labă de animal"</item>
+ <item msgid="1000692647524056504">"Insignă stea"</item>
+ <item msgid="8270261073421676502">"Două persoane"</item>
+ <item msgid="5767782819651505460">"Stea"</item>
+ <item msgid="4368451291862729334">"Inimă"</item>
+ <item msgid="2613199102208419986">"Casă"</item>
+ <item msgid="3022279986430275040">"Semilună"</item>
+ <item msgid="5421089790869483206">"Ceas"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 23095e9..917dce1 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Asociază un nou dispozitiv"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Activează automat mâine"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Dacă dezactivezi Bluetooth, se reactivează a doua zi"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Urechea dreaptă"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Urechea stângă"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Asociază cealaltă ureche"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Dezactivează Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Dezactivează funcția Bluetooth LE Audio dacă dispozitivul acceptă capacitățile de hardware LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modul Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Activează previzualizarea interfeței de utilizare pentru difuzarea prin Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Activează previzualizarea interfeței de utilizare pentru permiterea accesului prin LE Audio, inclusiv permiterea accesului la audio personal și difuzarea privată"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Comutator LE Audio în Detalii dispozitiv"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Omite lista cu acces permis Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Folosește în mod prestabilit LE Audio chiar dacă dispozitivul periferic LE Audio nu a fost confirmat ca respectând criteriile Allowlist."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Setează automat folosind semnalele de rețea și wireless"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Fus orar automat"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Setează automat în funcție de rețelele mobile din apropiere"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Setează automat folosind locația, dacă este disponibilă"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Folosește codul local prestabilit"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Folosește formatul de 24 de ore"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Oră"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Ridică degetul, apoi atinge senzorul din nou"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Nu se poate folosi senzorul de amprentă"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Vizitează un furnizor de servicii de reparații."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Deblocarea cu amprenta când ecranul este oprit"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Folosește Deblocarea cu amprenta chiar și când ecranul este inactiv"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Dezactivează ecranul, deblochează"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Mai multe setări de securitate"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Blocarea profilului de serviciu, criptarea și altele"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Criptarea, datele de conectare și altele"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tastatura ignoră apăsările repetate rapid ale aceleiași taste"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Pragul pentru evitarea apăsării repetate"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Alege durata de timp în care tastatura ignoră apăsările repetate ale tastelor"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 sec."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 sec."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 sec."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Personalizată"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"valoare personalizată"</string>
<string name="slow_keys" msgid="2891452895499690837">"Taste lente"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ajustează timpul necesar pentru activarea unei apăsări de tastă"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Taste adezive"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Apasă câte o tastă pentru comenzile rapide în loc să ții apăsate tastele împreună"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Butoanele mouse-ului"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Folosește tastele pentru mouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Folosește tastatura pentru a controla indicatorul"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Derularea inversă cu mouse-ul"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Derulează în sus pentru a muta pagina în jos"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Schimbă butoanele stâng și drept"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Folosește butonul stâng al mouse-ului ca pe cel drept"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tastele pentru mouse de pe <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Folosește tastele <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> pentru a muta cursorul mouse-ului"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Folosește tasta <xliff:g id="CLICK_LABEL">%s</xliff:g> pentru a da clic pe butonul principal al mouse-ului"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Folosește tasta <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> pentru a apăsa lung butonul principal al mouse-ului"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Folosește tasta <xliff:g id="RELEASE_LABEL">%s</xliff:g> pentru a elibera butonul principal al mouse-ului"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Folosește tasta <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> pentru a activa sau a dezactiva modul de derulare. Astfel, tastele <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> vor derula afișarea în sus, în jos, la stânga sau la dreapta."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Folosește tasta <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> pentru a da clic pe butonul secundar al mouse-ului"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Comenzi rapide de la tastatură"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Afișează lista de comenzi rapide"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastaturi și instrumente pt. profilul de serviciu"</string>
@@ -1970,7 +1985,7 @@
<string name="keyboard_default_layout" msgid="5377811770620422301">"Prestabilit"</string>
<string name="trackpad_settings" msgid="2071131324087677005">"Touchpad"</string>
<string name="trackpad_mouse_settings" msgid="136226693583218429">"Touchpad și mouse"</string>
- <string name="trackpad_settings_summary" msgid="3369855644136760402">"Viteza indicatorului, gesturi"</string>
+ <string name="trackpad_settings_summary" msgid="3369855644136760402">"Viteza cursorului, gesturi"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"Atinge pentru clic"</string>
<string name="trackpad_tap_dragging_title" msgid="798644199582480712">"Tragere prin atingere"</string>
<string name="trackpad_tap_dragging_summary" msgid="5276968646031591058">"Atinge și trage cu degetul pe touchpad ca să muți obiecte"</string>
@@ -1980,7 +1995,7 @@
<string name="trackpad_reverse_scrolling_summary" msgid="6048648562887499036">"Conținutul se deplasează în sus când derulezi în jos"</string>
<string name="trackpad_bottom_right_tap_title" msgid="230337692279220068">"Clic în dreapta jos"</string>
<string name="trackpad_bottom_right_tap_summary" msgid="4467915480282133447">"Dă clic în colțul din dreapta jos pe touchpad pentru opțiuni"</string>
- <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Viteza indicatorului"</string>
+ <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Viteza cursorului"</string>
<string name="pointer_fill_style" msgid="8794616790175016092">"Culoarea cursorului"</string>
<string name="pointer_fill_style_black_button" msgid="4540815366995820960">"Schimbă stilul de umplere în negru"</string>
<string name="pointer_fill_style_green_button" msgid="3731413496528067979">"Schimbă stilul de umplere în verde"</string>
@@ -2031,20 +2046,16 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Alege o nouă tastă pentru <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accesibilitatea tastaturii fizice"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Taste adezive, Taste nerepetate, Butoanele mouse-ului"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Repetă tastele"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Durata până la repetare"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Frecvența de repetare"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Apasă lung o tastă pentru a repeta caracterul respectiv până când o eliberezi"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Aspectul <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Prestabilit"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automat: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Utilizator selectat: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voce"</string>
- <string name="pointer_speed" msgid="7398649279282675718">"Viteza indicatorului"</string>
+ <string name="pointer_speed" msgid="7398649279282675718">"Viteza cursorului"</string>
<string name="pointer_scale" msgid="4941564570571663964">"Mărimea cursorului"</string>
<string name="pointer_scale_decrease_content_description" msgid="4479646756230008068">"Micșorează cursorul"</string>
<string name="pointer_scale_increase_content_description" msgid="1049632123702664450">"Mărește cursorul"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Ajustează utilizarea de energie"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Pachete incluse"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplicațiile rulează normal"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Se recomandă înlocuirea bateriei"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Capacitatea bateriei și performanța de încărcare sunt reduse și se recomandă înlocuirea bateriei."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nivelul bateriei este scăzut"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Activează Economisirea bateriei pentru a mări autonomia bateriei"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Îmbunătățește autonomia bateriei"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vrei să te deconectezi de la această rețea VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Deconectează-te"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versiune"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versiunea <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Elimină profilul VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Înlocuiești rețeaua VPN existentă?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Setezi rețeaua VPN ca activată permanent?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"În zilele lucrătoare între 09:00 și 17:00"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Evenimente din calendar"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} este activ}=2{{mode_1} și {mode_2} sunt active}=3{{mode_1}, {mode_2} și {mode_3} sunt active}few{{mode_1}, {mode_2} și încă # sunt active}other{{mode_1}, {mode_2} și încă # sunt active}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Un mod se poate activa automat}few{# moduri se pot activa automat}other{# de moduri se pot activa automat}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Nu deranja}=1{{mode_1}}=2{{mode_1}, {mode_2}}few{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ACTIVAT"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nesetat"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Dezactivat"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Când primești multe notificări într-un timp scurt, dispozitivul va reduce volumul și va minimiza alertele timp de până la două minute. Apelurile, alarmele și conversațiile prioritare nu vor fi afectate. \n\nPoți accesa notificările primite în perioada de reducere a sunetului dacă tragi în jos din partea de sus a ecranului."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Aplică profilurilor de serviciu"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Aplică pentru aplicațiile din profilul de serviciu"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Servicii de ajutor pentru RV"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nicio aplicație instalată nu a solicitat să fie rulată ca un serviciu de ajutor pentru RV."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Permiți accesul la serviciul RV pentru <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5038,7 +5060,7 @@
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Meniul de pornire:\napasă simultan pe butonul de pornire și pe cel de creștere a volumului"</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"Împiedică sunatul:\napasă pe un buton de volum pentru comanda rapidă"</string>
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"Durata cât ții apăsat"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Ajustează sensibilitatea alegând cât să ții apăsat butonul de pornire"</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Ajustează sensibilitatea alegând durata de apăsare a butonului de pornire"</string>
<string name="power_menu_long_press_for_assist_sensitivity_low_label" msgid="3430099983480845635">"Scurtă"</string>
<string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"Lungă"</string>
<string name="lockscreen_privacy_wallet_setting_toggle" msgid="4188327143734192000">"Afișează Wallet"</string>
@@ -5460,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Ascultă streamul"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Scanează un cod QR de stream audio pentru a-l asculta folosind <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Nu poți edita parola în timpul permiterii accesului. Pentru a schimba parola, mai întâi dezactivează permiterea accesului la audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Parola trebuie să conțină între 4 și 16 caractere și să folosească numai litere, cifre și simboluri"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Scanner de coduri QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Ai nevoie de ajutor?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Caută în setări"</string>
@@ -5468,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Numai pe dispozitiv"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Contactele noi nu se vor sincroniza cu un cont"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Persoanele de contact vor fi salvate pe dispozitiv și sincronizate cu contul în mod prestabilit"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nicio setare prestabilită"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Eroare la setarea contului prestabilit"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nicio setare prestabilită"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Numai pe dispozitiv"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Adaugă un cont pentru a începe"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Încercuiește și caută"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Atinge lung butonul Ecran de pornire sau ghidajul de navigare ca să cauți folosind conținutul de pe ecran."</string>
</resources>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index 6bc3ff7..c06ead6 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -360,7 +360,7 @@
<item msgid="3605616699204153590">"Панель навигации"</item>
</string-array>
<string-array name="accessibility_button_gesture_selector_titles">
- <item msgid="2370918472773154939">"Кнопка"</item>
+ <item msgid="2370918472773154939">"Кнопку"</item>
<item msgid="6922258575853746220">"Жест"</item>
</string-array>
<string-array name="accessibility_button_size_selector_titles">
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Портфель"</item>
+ <item msgid="184985872234062767">"Здание в классическом стиле"</item>
+ <item msgid="9189550412466785530">"Многоквартирный дом"</item>
+ <item msgid="2142527562511049422">"Выноска"</item>
+ <item msgid="2548100558260478605">"Группа людей"</item>
+ <item msgid="2270003903304578284">"Лампочка"</item>
+ <item msgid="4793496619091161864">"Календарь"</item>
+ <item msgid="5673625795644364100">"Не беспокоить"</item>
+ <item msgid="1423820834865831361">"Человек бежит"</item>
+ <item msgid="2037298830718732608">"Гольф"</item>
+ <item msgid="2197835014443491074">"Гантеля для спортзала"</item>
+ <item msgid="2730180105015616518">"Плавание"</item>
+ <item msgid="2666922823253345958">"Человек занимается пешим туризмом"</item>
+ <item msgid="8234880356472211396">"Человек бросает мяч"</item>
+ <item msgid="4642980625253001443">"Человек наносит удар"</item>
+ <item msgid="4324795269518833500">"Игровой контроллер"</item>
+ <item msgid="7789966425125441125">"Палитра художника"</item>
+ <item msgid="663512680597461570">"Снежинка"</item>
+ <item msgid="7952183800501346803">"Пляжный зонт"</item>
+ <item msgid="799139025758265891">"Инструменты в мастерской"</item>
+ <item msgid="8112685757657659269">"Пианино"</item>
+ <item msgid="3861584909935022342">"Кинопленка"</item>
+ <item msgid="5827426100157335512">"Книга"</item>
+ <item msgid="8585828346253128384">"Цветок лотоса"</item>
+ <item msgid="8788370542815300188">"Разум человека"</item>
+ <item msgid="7287354964767553293">"Наушники"</item>
+ <item msgid="2530059623783800987">"Телевизор"</item>
+ <item msgid="5307182323469376758">"Поезд"</item>
+ <item msgid="4903790544026923026">"Автомобиль"</item>
+ <item msgid="5010405583912314582">"Вилка и нож"</item>
+ <item msgid="8939998598599064900">"Корзина"</item>
+ <item msgid="3379605903308731893">"Ребенок"</item>
+ <item msgid="7808668968550293112">"Лапа животного"</item>
+ <item msgid="1000692647524056504">"Звездочка"</item>
+ <item msgid="8270261073421676502">"Два человека"</item>
+ <item msgid="5767782819651505460">"Звездочка"</item>
+ <item msgid="4368451291862729334">"Сердце"</item>
+ <item msgid="2613199102208419986">"Дом"</item>
+ <item msgid="3022279986430275040">"Полумесяц"</item>
+ <item msgid="5421089790869483206">"Часы"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 3fe535d..b82bb4e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Добавить устройство"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Включить автоматически завтра"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Bluetooth снова включится на следующий день после отключения"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Подключить прав. ухо"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Подключить левое ухо"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Подключить другое ухо"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Отключить Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Отключить Bluetooth LE Audio, если доступны аппаратные возможности"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Режим Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Предпросмотр интерфейса для трансляции по Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Разрешить предпросмотр интерфейса для передачи аудио с использованием LE Audio, в том числе для личных трансляций"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Переключатель LE Audio в сведениях об устройстве"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Обходить белый список Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Использовать LE Audio по умолчанию, даже если периферийное устройство LE Audio не соответствует критериям белого списка"</string>
@@ -129,7 +132,7 @@
<string name="connected_device_saved_title" msgid="5607274378851905959">"Сохраненные устройства"</string>
<string name="connected_device_fast_pair_device_title" msgid="543124539265592392">"Связано с аккаунтом"</string>
<string name="connected_device_previously_associated_fast_pair_device_title" msgid="8353405823992023457">"Уже использовались с аккаунтом"</string>
- <string name="connected_device_add_device_summary" msgid="8671009879957120802">"Будет включен Bluetooth"</string>
+ <string name="connected_device_add_device_summary" msgid="8671009879957120802">"Включится Bluetooth"</string>
<string name="connected_device_connections_title" msgid="4164120115341579170">"Настройки подключения"</string>
<string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"Ранее подключенные устройства"</string>
<string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"Модуль Bluetooth включен"</string>
@@ -247,12 +250,11 @@
<string name="roaming_disable" msgid="729512894708689604">"Подключаться к службам передачи данных при роуминге"</string>
<string name="roaming_warning" msgid="7703647889040229013">"Может взиматься плата за роуминг."</string>
<string name="date_time_auto" msgid="1759599045100040686">"Автоматическое определение даты и времени"</string>
- <string name="date_time_auto_summary" msgid="8294938565417729698">"Устанавливать автоматически, используя сеть устройства и беспроводные сигналы"</string>
+ <string name="date_time_auto_summary" msgid="8294938565417729698">"Устанавливать автоматически по сигналам мобильной и беспроводной сетей"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Автоматическое определение часового пояса"</string>
- <string name="zone_auto_title_summary" msgid="6540356783943375071">"Устанавливать автоматически, используя мобильные сети поблизости"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
- <string name="date_time_24hour_auto" msgid="6583078135067804252">"Региональные настройки по умолчанию"</string>
+ <string name="zone_auto_title_summary" msgid="6540356783943375071">"Устанавливать автоматически по мобильным сетям поблизости"</string>
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Устанавливать автоматически, используя геолокацию"</string>
+ <string name="date_time_24hour_auto" msgid="6583078135067804252">"Использовать региональные настройки"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-часовой формат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Время"</string>
<string name="time_format_category_title" msgid="7108616745509689991">"Формат времени"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Поднимите палец и снова приложите его к сканеру."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Невозможно использовать сканер отпечатков пальцев"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Обратитесь в сервисный центр."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Отключенный экран, разблокировка по отпечатку пальца"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Использовать разблокировку по отпечатку пальца, даже если экран отключен"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Отключенный экран, разблокировка"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Дополнительные настройки безопасности"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Блокировка рабочего профиля, шифрование и прочее"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифрование, учетные данные и прочее"</string>
@@ -562,7 +567,7 @@
<string name="privacy_header" msgid="5526002421324257007">"Конфиденциальность"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Рабочий профиль"</string>
<string name="private_space_title" msgid="1752064212078238723">"Частное пространство"</string>
- <string name="private_space_summary" msgid="2274405892301976238">"Приложения в личном пространстве скрыты и доступны только вам"</string>
+ <string name="private_space_summary" msgid="2274405892301976238">"Приложения в частном пространстве скрыты и доступны только вам"</string>
<string name="private_space_description" msgid="4059594203775816136">"Создайте отдельное пространство для личных приложений, которое можно скрыть или защитить с помощью блокировки."</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Блокировка частного пространства"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Для личного пространства можно установить тот же способ разблокировки, который используется для экрана, или выбрать другой."</string>
@@ -850,7 +855,7 @@
<string name="bluetooth_empty_list_bluetooth_off" msgid="7326727272747345476">"Если Bluetooth включен, устройство может обмениваться данными с устройствами Bluetooth поблизости."</string>
<string name="bluetooth_empty_list_bluetooth_off_auto_on_available" msgid="3430864468105204282">"Когда работает Bluetooth, вы можете подключаться к другим устройствам Bluetooth поблизости. Эта технология используется в таких функциях и сервисах, как \"Быстрая отправка\" и \"Найти устройство\"."</string>
<string name="bluetooth_scanning_on_info_message" msgid="786648535600075223">"Функция Bluetooth позволяет устанавливать подключение к устройствам Bluetooth поблизости.\n\nОбратите внимание, что для улучшения работы устройства, например повышения точности геолокации, приложения и сервисы могут искать устройства поблизости, даже если вы отключили Bluetooth. Чтобы запретить им это, отключите поиск устройств Bluetooth."</string>
- <string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"Когда работает Bluetooth, вы можете подключаться к другим устройствам Bluetooth поблизости. Эта технология используется в таких функциях и сервисах, как \"Быстрая отправка\" и \"Найти устройство\".\n\nДаже если функция Bluetooth выключена, приложения и сервисы могут в любой момент искать устройства поблизости. Например, это может понадобиться, чтобы улучшать работу функций и сервисов, использующих данные о местоположении. Вы можете изменить настройки поиска Bluetooth-устройств."</string>
+ <string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"Если вы включите Bluetooth, устройство сможет обмениваться данными с другими Bluetooth-устройствами поблизости. Эта технология используется в таких функциях и сервисах, как \"Быстрая отправка\" и \"Найти устройство\".\n\nДаже если вы отключите Bluetooth, приложения и сервисы смогут в любой момент выполнять поиск устройств поблизости, например для улучшения работы функций и сервисов, использующих данные о местоположении. Вы можете изменить это в настройках поиска Bluetooth-устройств."</string>
<string name="bluetooth_scan_change" msgid="1744636222637390367">"Изменить"</string>
<string name="bluetooth_key_missing_title" msgid="7799054163548353853">"Устройство \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" не подключено"</string>
<string name="bluetooth_key_missing_message" msgid="2388861106663695319">"В целях безопасности удалите это устройство, а затем подключите его ещё раз."</string>
@@ -1646,7 +1651,7 @@
<string name="location_time_zone_detection_not_applicable" msgid="6757964612836952714">"Определение часового пояса с помощью геолокации отключено."</string>
<string name="location_time_zone_detection_not_supported" msgid="3251181656388306501">"Определение часового пояса с помощью геолокации не поддерживается."</string>
<string name="location_time_zone_detection_not_allowed" msgid="8264525161514617051">"Вы не можете изменить настройки определения часового пояса с помощью геолокации."</string>
- <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Если вы включили геолокацию, часовой пояс может устанавливаться на основе данных о местоположении устройства"</string>
+ <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Часовой пояс может определяться по информации о местоположении устройства, если она есть"</string>
<string name="about_settings_summary" msgid="4831942939227432513">"Просмотр юридической информации, состояния планшетного ПК и версии ПО"</string>
<string name="legal_information" msgid="7509900979811934843">"Юридическая информация"</string>
<string name="manual" msgid="3651593989906084868">"Руководство"</string>
@@ -1950,21 +1955,31 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Быстро повторяющиеся нажатия одной клавиши на клавиатуре будут игнорироваться"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Интервал между повторными нажатиями"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Выберите, в течение какого времени будут игнорироваться повторные нажатия клавиши на клавиатуре."</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 сек."</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 сек."</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 сек."</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 сек."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 сек."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 сек."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Свой вариант"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"пользовательское значение"</string>
<string name="slow_keys" msgid="2891452895499690837">"Медленные клавиши"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Настроить длительность интервала между нажатием клавиши и назначенным на нее действием"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Залипание клавиш"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Вместо того чтобы удерживать вместе все клавиши из сочетания, нажимайте их по одной"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Клавиши управления мышью"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Управлять мышью с помощью клавиш"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Управлять указателем с помощью клавиатуры"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Прокручивать мышью в обратном направлении"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Если прокрутить вверх, страница прокрутится вниз"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Поменять местами левую и правую кнопки"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Использовать левую кнопку мыши в качестве правой"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Клавиши управления мышью для устройства \"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>\""</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Для перемещения указателя мыши используйте клавиши <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>."</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Нажатие клавиши <xliff:g id="CLICK_LABEL">%s</xliff:g> соответствует нажатию левой кнопки мыши."</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Нажатие клавиши <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> соответствует нажатию и удержанию левой кнопки мыши."</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Нажатие клавиши <xliff:g id="RELEASE_LABEL">%s</xliff:g> соответствует отпусканию левой кнопки мыши."</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Нажмите клавишу <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>, чтобы включить режим прокрутки. В нем с помощью клавиш <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> можно прокручивать экран вверх, вниз, влево и вправо."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Нажатие клавиши <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> соответствует нажатию правой кнопки мыши."</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Быстрые клавиши"</string>
- <string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Показывать список сочетаний клавиш"</string>
+ <string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Показать список быстрых клавиш"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Клавиатуры и инструменты рабочего профиля"</string>
<string name="virtual_keyboards_for_work_title" msgid="786459157034008675">"Экранная клавиатура для работы"</string>
<string name="keyboard_default_layout" msgid="5377811770620422301">"По умолчанию"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Выберите новую клавишу для <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Специальные возможности для физической клавиатуры"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Залипание клавиш, контроль повторного нажатия, клавиши управления мышью"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Повторный ввод символа"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Задержка перед повторным нажатием"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Скорость повторного ввода"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Повторять ввод символа, пока удерживается клавиша"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Раскладка \"<xliff:g id="IME_LABEL">%s</xliff:g>\""</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"По умолчанию"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автоматически: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2211,7 +2222,7 @@
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"Жест быстрого доступа к специальным возможностям"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Используйте жест специальных возможностей"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Чтобы включить эту функцию, нажмите кнопку специальных возможностей <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> в нижней части экрана.\n\nДля переключения между функциями нажмите и удерживайте эту кнопку."</string>
- <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"Чтобы включить эту функцию, нажмите кнопку специальных возможностей"</string>
+ <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"Чтобы включить эту функцию, нажмите кнопку специальных возможностей."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="3785791536286606664">"Чтобы включить эту функцию, нажмите и удерживайте обе кнопки регулировки громкости"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Чтобы включить или отключить увеличение, трижды нажмите на любую область экрана."</string>
<string name="accessibility_tutorial_dialog_tripletap_instruction" msgid="7549293553589934">"Чтобы включить или отключить увеличение, быстро нажмите на экран %1$d раза"</string>
@@ -2226,7 +2237,7 @@
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"ОК"</string>
<string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Настроить кнопку"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Ещё"</string>
- <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Быстрый запуск функции \"<xliff:g id="SERVICE">%1$s</xliff:g>\""</string>
+ <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Быстрый запуск \"<xliff:g id="SERVICE">%1$s</xliff:g>\""</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"Кнопка специальных возможностей"</string>
<string name="accessibility_shortcut_edit_summary_software_gesture" msgid="7346399253904683940">"Жест специальных возможностей"</string>
<string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"Движение вверх по экрану двумя пальцами"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Режим энергопотребления"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Пакеты"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Приложения работают нормально"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Рекомендуем заменить батарею"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Емкость батареи и эффективность зарядки снижены. Советуем заменить батарею."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Низкий уровень заряда батареи"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Включите режим энергосбережения, чтобы увеличить время работы от батареи."</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Продлите время работы от батареи"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Отключиться от VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Да"</string>
<string name="vpn_version" msgid="6344167191984400976">"Версия"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Версия <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Удалить VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Сменить текущую VPN-сеть?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Настроить постоянную VPN-сеть?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"В будние дни с 09:00 до 17:00\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Мероприятия из календаря"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Включен режим \"{mode_1}\"}=2{Включены режимы \"{mode_1}\" и \"{mode_2}\"}=3{Включены режимы \"{mode_1}\", \"{mode_2}\" и \"{mode_3}\"}one{Включены режимы \"{mode_1}\", \"{mode_2}\" и ещё #}few{Включены режимы \"{mode_1}\", \"{mode_2}\" и ещё #}many{Включены режимы \"{mode_1}\", \"{mode_2}\" и ещё #}other{Включены режимы \"{mode_1}\", \"{mode_2}\" и ещё #}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режим может включаться автоматически}one{# режим может включаться автоматически}few{# режима могут включаться автоматически}many{# режимов могут включаться автоматически}other{# режима могут включаться автоматически}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Не беспокоить}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2} {mode_3}}few{{mode_1}, {mode_2} {mode_3}}many{{mode_1}, {mode_2} {mode_3}}other{{mode_1}, {mode_2} {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ВКЛ."</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Не задано"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Отключено"</string>
@@ -3667,7 +3679,7 @@
<string name="notification_channel_summary_default" msgid="1168420867670390611">"Звонок или вибрация в зависимости от настроек устройства"</string>
<string name="notification_channel_summary_high" msgid="3411637309360617621">"При разблокированном устройстве показывать уведомления в виде баннера в верхней части экрана"</string>
<string name="notification_switch_label" msgid="8029371325967501557">"<xliff:g id="APP_NAME">%1$s</xliff:g>: все уведомления"</string>
- <string name="notification_app_switch_label" msgid="4422902423925084193">"Показывать все уведомления приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
+ <string name="notification_app_switch_label" msgid="4422902423925084193">"<xliff:g id="APP_NAME">%1$s</xliff:g>: все уведомления"</string>
<string name="notifications_sent_daily" msgid="10274479224185437">"{count,plural, =1{Примерно # уведомление в день}one{Примерно # уведомление в день}few{Примерно # уведомления в день}many{Примерно # уведомлений в день}other{Примерно # уведомления в день}}"</string>
<string name="notifications_sent_weekly" msgid="7895656213187555346">"{count,plural, =1{Примерно # уведомление в неделю}one{Примерно # уведомление в неделю}few{Примерно # уведомления в неделю}many{Примерно # уведомлений в неделю}other{Примерно # уведомления в неделю}}"</string>
<string name="notifications_sent_never" msgid="9081278709126812062">"Никогда"</string>
@@ -3689,9 +3701,9 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"Приложение может отвечать на звонки и сообщения, а также временно отключать или закрывать уведомления и нажимать кнопки в них."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Изменять настройки"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Приложение может включать и отключать режим \"Не беспокоить\", а также менять его настройки."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Может активировать режимы, управлять ими и изменять их настройки"</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Приложение может активировать режимы, управлять ими и изменять их настройки."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Если вы отключите доступ к уведомлениям для приложения \"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>\", также может быть отключен доступ к настройкам режима \"Не беспокоить\"."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Если вы отключите доступ к уведомлениям для приложения \"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>\", возможно будет отозван доступ к режимам."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Если вы отключите доступ к уведомлениям для приложения \"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>\", также может быть отключен доступ к режимам."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Отключить"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Отмена"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"В реальном времени"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Если вам будет поступать много уведомлений за короткое время, то устройство на две минуты понизит уровень громкости и сократит количество оповещений. Это не распространяется на звонки, будильники и важные разговоры. \n\nЧтобы увидеть уведомления, полученные в этом режиме, проведите пальцем вниз от верхнего края экрана."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Применить к рабочим профилям"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Применить для приложений в рабочем профиле"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Вспомогательные VR-сервисы"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Установленные приложения не запрашивали доступ для работы в качестве вспомогательного VR-сервиса."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Разрешить VR-сервису доступ к сервису \"<xliff:g id="SERVICE">%1$s</xliff:g>\"?"</string>
@@ -4121,7 +4143,7 @@
<string name="usb_summary_UVC_power" msgid="226810354412154061">"Режим веб-камеры и зарядка"</string>
<string name="background_check_pref" msgid="5304564658578987535">"Фоновая проверка"</string>
<string name="assist_access_context_title" msgid="5201495523514096201">"Использовать текст с экрана"</string>
- <string name="assist_access_context_summary" msgid="6951814413185646275">"Разрешить просматривать содержимое экрана в виде текста"</string>
+ <string name="assist_access_context_summary" msgid="6951814413185646275">"Разрешить приложению-помощнику доступ к содержимому экрана в виде текста"</string>
<string name="assist_access_screenshot_title" msgid="4395902231753643633">"Использовать скриншот"</string>
<string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Разрешить приложению-помощнику доступ к изображению экрана"</string>
<string name="assist_flash_title" msgid="5449512572885550108">"Подсвечивать экран"</string>
@@ -4461,7 +4483,7 @@
<string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"Переместить экран в зону досягаемости"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"Переместить верхнюю часть экрана вниз, ближе к вашему большому пальцу"</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"Показать уведомления"</string>
- <string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"Появятся уведомления и настройки"</string>
+ <string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"Показать уведомления и настройки"</string>
<string name="ambient_display_summary" msgid="2650326740502690434">"Чтобы увидеть время, уведомления и другую информацию, дважды коснитесь экрана"</string>
<string name="ambient_display_wake_screen_title" msgid="7637678749035378085">"Включить экран"</string>
<string name="ambient_display_tap_screen_summary" msgid="4480489179996521405">"Чтобы увидеть время, уведомления и другую информацию, коснитесь экрана"</string>
@@ -5038,14 +5060,14 @@
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Меню кнопки питания\nОдновременно нажмите кнопку питания и кнопку увеличения громкости."</string>
<string name="power_menu_power_prevent_ringing_hint" msgid="1169955014711158873">"Отключение звука звонка\nНажмите кнопку регулировки громкости, чтобы открыть."</string>
<string name="power_menu_long_press_for_assist_sensitivity_title" msgid="1626808509158422185">"Длительность нажатия"</string>
- <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Настройте чувствительность, выбрав длительность нажатия кнопки питания."</string>
+ <string name="power_menu_long_press_for_assist_sensitivity_summary" msgid="7550610071666801935">"Настройте чувствительность, выбрав длительность нажатия кнопки питания"</string>
<string name="power_menu_long_press_for_assist_sensitivity_low_label" msgid="3430099983480845635">"Быстро"</string>
<string name="power_menu_long_press_for_assist_sensitivity_high_label" msgid="2059686170350829156">"Долго"</string>
<string name="lockscreen_privacy_wallet_setting_toggle" msgid="4188327143734192000">"Показывать кошелек"</string>
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"Разрешить доступ к кошельку на заблокированном экране"</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"Показывать сканер QR-кодов"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Разрешить доступ к сканеру QR-кодов на заблокированном экране"</string>
- <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Показывать виджеты управления устройством"</string>
+ <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Показывать виджеты управления устройствами"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"С заблокированного экрана"</string>
<string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Использовать виджеты управления устройствами"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Чтобы использовать эту функцию, включите параметр \"Показывать виджеты управления устройством\""</string>
@@ -5344,7 +5366,7 @@
<string name="about_phone_device_name_warning" msgid="3243226572404472381">"Название устройства доступно установленным приложениям. Его также могут видеть другие пользователи, когда вы подключаетесь к устройствам Bluetooth и сетям Wi-Fi или настраиваете точку доступа Wi-Fi."</string>
<string name="grammatical_gender_title" msgid="8584242850477270828">"Грамматический род"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"Выберите грамматический род"</string>
- <string name="content_protection_preference_title" msgid="5069260032659193074">"Сканировать на наличие приложений, вводящих в заблуждение"</string>
+ <string name="content_protection_preference_title" msgid="5069260032659193074">"Сканирование подозрительных приложений"</string>
<string name="content_protection_preference_summary" msgid="2252393849408445391">"Проверять историю действий в приложении на фишинг"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"Сканировать на наличие вводящих в заблуждение приложений"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"Сканировать на наличие вводящих в заблуждение приложений для работы"</string>
@@ -5461,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Подключиться к потоку"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Отсканируйте QR-код аудиопотока, чтобы воспроизвести его на устройстве \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Нельзя изменить пароль во время отправки аудио. Сначала отключите ее."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Пароль должен содержать от 4 до 16 знаков. Можно использовать только буквы, цифры и символы."</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Сканер QR-кодов"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Нужна помощь?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Поиск по настройкам"</string>
@@ -5469,10 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Только на устройстве"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Новые контакты не будут синхронизироваться с аккаунтом"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Контакты будут по умолчанию сохраняться на устройстве и синхронизироваться с аккаунтом"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Аккаунт по умолчанию не задан"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Не удалось выбрать аккаунт по умолчанию."</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Аккаунт по умолчанию не выбран"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Только на устройстве"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Сначала добавьте аккаунт"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Обвести и найти"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Чтобы запустить поиск по экрану, нажмите и удерживайте кнопку главного экрана или маркер навигации"</string>
</resources>
diff --git a/res/values-si/arrays.xml b/res/values-si/arrays.xml
index 391a9ea..f2278b7 100644
--- a/res/values-si/arrays.xml
+++ b/res/values-si/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"ලිපි කොපුව"</item>
+ <item msgid="184985872234062767">"සම්භාව්ය ගොඩනැඟිල්ල"</item>
+ <item msgid="9189550412466785530">"බද්ධනිවාස ගොඩනැඟිල්ල"</item>
+ <item msgid="2142527562511049422">"කථන බුබුළ"</item>
+ <item msgid="2548100558260478605">"පුද්ගල කණ්ඩායම"</item>
+ <item msgid="2270003903304578284">"විදුලි බුබුළ"</item>
+ <item msgid="4793496619091161864">"දින දර්ශනය"</item>
+ <item msgid="5673625795644364100">"බාධා නොකිරීම"</item>
+ <item msgid="1423820834865831361">"දුවන පුද්ගලයා"</item>
+ <item msgid="2037298830718732608">"ගොල්ෆ්"</item>
+ <item msgid="2197835014443491074">"ජිම් ඩම්බල්"</item>
+ <item msgid="2730180105015616518">"පිහිනීම"</item>
+ <item msgid="2666922823253345958">"කඳු නගින පුද්ගලයා"</item>
+ <item msgid="8234880356472211396">"පන්දුව විසි කරන පුද්ගලයා"</item>
+ <item msgid="4642980625253001443">"පයින් ගසන පුද්ගලයා"</item>
+ <item msgid="4324795269518833500">"ක්රීඩා පාලකය"</item>
+ <item msgid="7789966425125441125">"කලාකරුවන්ගේ වර්ණ තැටිය"</item>
+ <item msgid="663512680597461570">"හිම මල්"</item>
+ <item msgid="7952183800501346803">"වෙරළ කුඩය"</item>
+ <item msgid="799139025758265891">"වැඩමුළු මෙවලම්"</item>
+ <item msgid="8112685757657659269">"පියානෝව"</item>
+ <item msgid="3861584909935022342">"සිනමා පටය"</item>
+ <item msgid="5827426100157335512">"පොත"</item>
+ <item msgid="8585828346253128384">"නෙළුම් මල"</item>
+ <item msgid="8788370542815300188">"පුද්ගලයාගේ මනස"</item>
+ <item msgid="7287354964767553293">"හෙඩ්ෆෝන්"</item>
+ <item msgid="2530059623783800987">"රූපවාහිනිය"</item>
+ <item msgid="5307182323469376758">"දුම්රිය"</item>
+ <item msgid="4903790544026923026">"මෝටර් රථය"</item>
+ <item msgid="5010405583912314582">"ගෑරුප්පුව සහ පිහිය"</item>
+ <item msgid="8939998598599064900">"සාප්පු කරත්තය"</item>
+ <item msgid="3379605903308731893">"ළමයා"</item>
+ <item msgid="7808668968550293112">"සත්ව පාදය"</item>
+ <item msgid="1000692647524056504">"තරු ලාංඡනය"</item>
+ <item msgid="8270261073421676502">"පුද්ගලයින් දෙදෙනෙක්"</item>
+ <item msgid="5767782819651505460">"තරුව"</item>
+ <item msgid="4368451291862729334">"හදවත"</item>
+ <item msgid="2613199102208419986">"මුල් පිටුව"</item>
+ <item msgid="3022279986430275040">"අර්ධ සඳ"</item>
+ <item msgid="5421089790869483206">"ඔරලෝසුව"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 0c60780..bc28a61 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"නව උපාංගය යුගල කරන්න"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"බ්ලූටූත්"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"හෙට ස්වයංක්රීයව ක්රියාත්මක කරන්න"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"දකුණු කණ යුගල කරන්න"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"වම් කණ යුගල කරන්න"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"ඔබගේ අනෙක් කණ යුගල කරන්න"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"බ්ලූටූත් LE ශ්රව්ය අබල කරන්න"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"උපාංගය LE ශ්රව්ය දෘඨාංග හැකියා වෙත සහාය දක්වන්නේ නම් බ්ලූටූත් LE ශ්රව්ය විශේෂාංගය අබල කරයි."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"බ්ලූටූත් LE ශ්රව්ය මාදිලිය"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"බ්ලූටූත් LE ශ්රව්ය විකාශන UI පෙරදසුන සබල කරන්න"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"පුද්ගලික ශ්රව්ය බෙදා ගැනීම සහ පුද්ගලික විකාශනය ඇතුළුව LE ශ්රව්ය බෙදා ගැනීමේ UI පෙරදසුන සබල කරයි"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"උපාංග විස්තරවල LE ශ්රව්ය ටොගල පෙන්වන්න"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"බ්ලූටූත් LE ශ්රව්ය ඉඩ දුන් ලැයිස්තුව මඟහරින්න"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ඉඩ දුන් ලැයිස්තුවේ නිර්ණායක සපුරාලීමට LE ශ්රව්ය පර්යන්තය සත්යාපනය කර නොමැති වුවත් පෙරනිමියෙන් LE ශ්රව්ය භාවිතා කරන්න."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ඔබේ ජාලය සහ රැහැන් රහිත සංඥා භාවිතයෙන් ස්වයංක්රීයව සකසන්න"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ස්වයංක්රීය වේලා කලාපය"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ඔබ අසල ඇති ජංගම ජාල මත පදනම්ව ස්වයංක්රීයව සකසන්න"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"තිබේ නම්, ඔබේ උපාංග ස්ථානය භාවිතයෙන් ස්වයංක්රීයව සකසන්න"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"පෙදෙසි පෙරනිමි භාවිත කරන්න"</string>
<string name="date_time_24hour" msgid="286679379105653406">"පැය 24 ආකාරය භාවිත කරන්න"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"වේලාව"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ඇඟිල්ල ඔසවා, අනතුරුව නැවත සංවේදකය ස්පර්ශ කරන්න"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ඇඟිලි සලකුණු සංවේදකය භාවිත කළ නොහැක"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"අලුත්වැඩියා සැපයුම්කරුවෙකු වෙත පැමිණෙන්න."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"තිරය ක්රියාවිරහිත ඇඟිලි සලකුණු අගුළු හැරීම"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"තිරය ක්රියාවිරහිත වූ විට පවා ඇඟිලි සලකුණු අගුළු හැරීම භාවිත කරන්න"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"තිරය ක්රියාවිරහිතයි, අගුළු ඇරීම"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"තවත් ආරක්ෂක සැකසීම්"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"කාර්යාල පැතිකඩ අගුල, සංකේතනය සහ තවත් දේ"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"සංකේතනය, අක්තපත්ර සහ තවත් දේ"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"යතුරු පුවරුව එකම යතුර ඉක්මනින් නැවත නැවතත් එබීම නොසලකා හරියි"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"උඩ පනින යතුරු සීමාව"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ඔබේ යතුරු පුවරුව නැවත නැවතත් යතුරු එබීම නොසලකා හරින කාල සීමාව තෝරා ගන්න"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"ත0.2"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"ත0.4"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"ත0.6"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"ත0.2"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"ත0.4"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"ත0.6"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"අභිරුචි"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"අභිරුචි අගය"</string>
<string name="slow_keys" msgid="2891452895499690837">"මන්දගාමී යතුරු"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"යතුරු එබීම සක්රිය වීම සඳහා එයට ගතවන කාලය සකසයි"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ඇලෙන යතුරු"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"කෙටිමං සඳහා යතුරු එකට තබා ගැනීම වෙනුවට වරකට යතුරක් ඔබන්න"</string>
<string name="mouse_keys" msgid="6237254627808525540">"මූසික යතුරු"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"මූසික යතුරු භාවිතා කරන්න"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"දර්ශකය පාලනය කිරීමට ඔබේ යතුරු පුවරුව භාවිතා කරන්න"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"මූසික ආපස්සට අනුචලනය"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"පිටුව පහළට ගෙන යාමට ඉහළට අනුචලන කරන්න"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"වම් සහ දකුණු බොත්තම් මාරු කරන්න"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"වම් මූසික බොත්තම ඔබේ දකුණ ලෙස භාවිතා කරන්න"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> සඳහා මූසික යතුරු"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"මූසික දර්ශකය චලනය කිරීමට <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> යතුරු භාවිතා කරන්න"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"මූලික මූසික බොත්තම ක්ලික් කිරීමට <xliff:g id="CLICK_LABEL">%s</xliff:g> යතුර භාවිතා කරන්න"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"මූලික මූසික බොත්තම ඔබාගෙන සිටීමට<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> යතුර භාවිතා කරන්න"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"මූලික මූසික බොත්තම මුදා හැරීමට <xliff:g id="RELEASE_LABEL">%s</xliff:g> යතුර භාවිතා කරන්න"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"අනුචලන ප්රකාරය ටොගල් කිරීමට <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> යතුර භාවිතා කරන්න. මෙය <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> යතුරු දර්ශනය ඉහළට, පහළට, වමට හෝ දකුණට අනුචලනය කරයි"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ද්විතියික මූසික බොත්තම ක්ලික් කිරීමට <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> යතුර භාවිතා කරන්න"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"යතුරු පුවරු කෙටිමං"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"කෙටිමං ලැයිස්තුව පෙන්වන්න"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"කාර්යාල පැතිකඩ යතුරු පුවරු සහ මෙවලම්"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> සඳහා නව යතුරක් තෝරා ගන්න:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"භෞතික යතුරුපුවරු ප්රවේශ්යතාව"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ඇලෙන යතුරු, පනින යතුරු, මූසික යතුරු"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"පුනරාවර්තන යතුරු"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"පුනරාවර්තනයට පෙර ප්රමාදය"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"පුනරාවර්තන අනුපාතය"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"යතුර මුදා හරින තෙක් එහි අනුලකුණ පුනරාවර්තනය කිරීමට යතුරක් ඔබාගෙන සිටින්න"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> පිරිසැලසුම"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"පෙරනිමි"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ස්වයංක්රීය: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"බල භාවිතය සීරුමාරු කරන්න"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"ඇතුළත් පැකේජ"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"යෙදුම් සාමාන්ය පරිදි ධාවනය වේ"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"බැටරි ප්රතිස්ථාපනය නිර්දේශිතයි"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"බැටරි ධාරිතාව සහ ආරෝපණ කාර්ය සාධනය අඩු වන අතර, බැටරිය ප්රතිස්ථාපනය කිරීම නිර්දේශ කරනු ලැබේ."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"බැටරි මට්ටම අඩුය"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"බැටරි ආයු කාලය දීර්ඝ කිරීමට බැටරි සුරැකුම ක්රියාත්මක කරන්න"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"බැටරි ආයු කාලය වැඩි දියුණු කරන්න"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"මෙම VPN එක විසන්ධි කරන්නද?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"විසන්ධි කරන්න"</string>
<string name="vpn_version" msgid="6344167191984400976">"අනුවාදය"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"අනුවාදය <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN අමතක කරන්න"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"පවතින VPN ප්රතිස්ථාපනය කරන්නද?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"සැම විට ක්රියාත්මක VPN සකසන්නද?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"සතියේ දිනවල පෙ.ව. 9 - ප.ව. 5\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"දින දර්ශන සිදුවීම්"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} සක්රියයි}=2{{mode_1} සහ {mode_2} සක්රියයි}=3{{mode_1}, {mode_2}, සහ {mode_3} සක්රියයි}one{{mode_1}, {mode_2}, සහ තව #ක් සක්රියයි}other{{mode_1}, {mode_2}, සහ තව #ක් සක්රියයි}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ප්රකාරයක් ස්වයංක්රීයව ක්රියාත්මක විය හැක}one{ප්රකාර #ක් ස්වයංක්රීයව ක්රියාත්මක විය හැක}other{ප්රකාර #ක් ස්වයංක්රීයව ක්රියාත්මක විය හැක}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{බාධා නොකිරීම}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ක්රියාත්මකයි"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"සකසා නැත"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"අබලයි"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"ඔබට කෙටි කාලයක් තුළ බොහෝ දැනුම්දීම් ලැබෙන විට, ඔබේ උපාංගය එහි ශබ්දය අඩු කර විනාඩි 2ක් දක්වා ඇඟවීම් අවම කරයි. ඇමතුම්, එලාම්, සහ ප්රමුඛතා සංවාදවලට බලපෑමක් නැත. \n\nසන්සුන් කිරීම අතරතුර ලැබෙන දැනුම්දීම් තිරයේ ඉහළ සිට පහළට ඇදීමෙන් සොයා ගත හැක."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"කාර්යාල පැතිකඩ සඳහා යොදන්න"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"කාර්යාල පැතිකඩ යෙදුම්වලට යොදන්න"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR උදවුකරු සේවා"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ස්ථාපිත යෙදුම් කිසිවක් VR උදවුකරු සේවා ලෙස ධාවනය කිරීමට ඉල්ලා නැත."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> සඳහා VR සේවා ප්රවේශය ඉඩ දෙන්නද?"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ප්රවාහයට සවන් දෙන්න"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> සමග සවන් දීමට ශ්රව්ය ප්රවාහ QR කේතයක් ස්කෑන් කරන්න"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"බෙදා ගන්නා අතරේ මුරපදය සංස්කරණය කළ නොහැක. මුරපදය වෙනස් කිරීමට, පළමුව ශ්රව්ය බෙදා ගැනීම ක්රියාවිරහිත කරන්න."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"ඔබේ මුරපදයේ අනුලකුණු 4-16ක් අඩංගු විය යුතු අතර අකුරු, අංක සහ සංකේත පමණක් භාවිතා කළ යුතු යි"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR කේත ස්කෑනරය"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"උදවු අවශ්ය ද?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"සෙවීමේ සැකසීම්"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"උපාංගය පමණි"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"නව සම්බන්ධතා ගිණුමක් සමග සමමුහුර්ත නොවනු ඇත"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"සම්බන්ධතා ඔබේ උපාංගයට සුරකිනු ඇති අතර පෙරනිමියෙන් ඔබේ ගිණුමට සමමුහුර්ත කරනු ලැබේ"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"පෙරනිමි සැකසීමක් නැත"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"පෙරනිමි ගිණුම සැකසීමේ දෝෂයකි"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"පෙරනිමි සැකසීමක් නැත"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"උපාංගය පමණි"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"පටන් ගැනීමට ගිණුමක් එක් කරන්න"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"සෙවීමට කවයසෙවීමට කවය අදින්න"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"ඔබේ තිරයේ ඇති අන්තර්ගතය භාවිතයෙන් සෙවීමට මුල් පිටුව බොත්තම හෝ සංචලන හසුරුව ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string>
</resources>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
index d551fd3..35ca54c 100644
--- a/res/values-sk/arrays.xml
+++ b/res/values-sk/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Kufrík"</item>
+ <item msgid="184985872234062767">"Klasická budova"</item>
+ <item msgid="9189550412466785530">"Bytový dom"</item>
+ <item msgid="2142527562511049422">"Rečová bublina"</item>
+ <item msgid="2548100558260478605">"Skupina ľudí"</item>
+ <item msgid="2270003903304578284">"Žiarovka"</item>
+ <item msgid="4793496619091161864">"Kalendár"</item>
+ <item msgid="5673625795644364100">"Režim bez vyrušení"</item>
+ <item msgid="1423820834865831361">"Bežiaca osoba"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Činka"</item>
+ <item msgid="2730180105015616518">"Plávanie"</item>
+ <item msgid="2666922823253345958">"Osoba na túre"</item>
+ <item msgid="8234880356472211396">"Osoba, ktorá hádže loptu"</item>
+ <item msgid="4642980625253001443">"Osoba, ktorá kope"</item>
+ <item msgid="4324795269518833500">"Herný ovládač"</item>
+ <item msgid="7789966425125441125">"Maliarova paleta farieb"</item>
+ <item msgid="663512680597461570">"Snehová vločka"</item>
+ <item msgid="7952183800501346803">"Plážový slnečník"</item>
+ <item msgid="799139025758265891">"Nástroje v dielni"</item>
+ <item msgid="8112685757657659269">"Klavír"</item>
+ <item msgid="3861584909935022342">"Filmový pásik"</item>
+ <item msgid="5827426100157335512">"Kniha"</item>
+ <item msgid="8585828346253128384">"Lotosový kvet"</item>
+ <item msgid="8788370542815300188">"Ľudská myseľ"</item>
+ <item msgid="7287354964767553293">"Slúchadlá"</item>
+ <item msgid="2530059623783800987">"Televízor"</item>
+ <item msgid="5307182323469376758">"Vlak"</item>
+ <item msgid="4903790544026923026">"Auto"</item>
+ <item msgid="5010405583912314582">"Vidlička a nôž"</item>
+ <item msgid="8939998598599064900">"Nákupný košík"</item>
+ <item msgid="3379605903308731893">"Dieťa"</item>
+ <item msgid="7808668968550293112">"Zvieracia labka"</item>
+ <item msgid="1000692647524056504">"Odznak hviezdičky"</item>
+ <item msgid="8270261073421676502">"Dvaja ľudia"</item>
+ <item msgid="5767782819651505460">"Hviezda"</item>
+ <item msgid="4368451291862729334">"Srdce"</item>
+ <item msgid="2613199102208419986">"Dom"</item>
+ <item msgid="3022279986430275040">"Polmesiac"</item>
+ <item msgid="5421089790869483206">"Hodiny"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 2e7ac3a..a939b74 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Spárovať nové zariadenie"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automaticky zapnúť zajtra"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Spárovať pravé ucho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Spárovať ľavé ucho"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Spárujte si druhé ucho"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Deaktivovať Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Deaktivovať funkciu Bluetooth LE Audio, keď zariadenie podporuje možnosti hardvéru LE Audio"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Režim Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Povoliť ukážku používateľského rozhrania vysielania Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Povolí ukážku používateľského rozhrania zdieľania LE Audio vrátane zdieľania osobného zvuku a súkromného vysielania"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Zobrazovať LE Audio v podr. o zariadení"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Obchádzať zoznam povolených aplikácie Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Používať LE Audio predvolene, aj keď nebolo overené, či periféria LE Audio spĺňa kritériá zoznamu povolených"</string>
@@ -247,11 +251,10 @@
<string name="roaming_disable" msgid="729512894708689604">"Pripájať sa k dátovým službám pri roamingu"</string>
<string name="roaming_warning" msgid="7703647889040229013">"Môžu sa účtovať poplatky za roaming."</string>
<string name="date_time_auto" msgid="1759599045100040686">"Automatický dátum a čas"</string>
- <string name="date_time_auto_summary" msgid="8294938565417729698">"Nastavujte automaticky pomocou sieťových a bezdrôtových signálov"</string>
+ <string name="date_time_auto_summary" msgid="8294938565417729698">"Nastavovať automaticky pomocou sieťových a bezdrôtových signálov"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatické časové pásmo"</string>
- <string name="zone_auto_title_summary" msgid="6540356783943375071">"Nastavujte automaticky na základe mobilných sietí v okolí"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="zone_auto_title_summary" msgid="6540356783943375071">"Nastavovať automaticky na základe mobilných sietí v okolí"</string>
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Nastavovať automaticky pomocou polohy zariadenia, ak je k dispozícii"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Používať miestny predvolený formát"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Používať 24-hodinový formát"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Čas"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Zdvihnite prst, potom sa opäť dotknite senzora"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Senzor odtlačkov prstov nie je možné používať"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Navštívte poskytovateľa opráv."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Odomknutie odtlačkom prsta pri vypnutej obrazovke"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Používajte odomknutie odtlačkom prsta aj keď je obrazovka vypnutá"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Vypnutá obrazovka, odomknutie"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Ďalšie nastavenia zabezpečenia"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Zámka pracovného profilu, šifrovanie a ďalšie"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifrovanie, prihlasovacie údaje a ďalšie"</string>
@@ -563,7 +569,7 @@
<string name="work_profile_category_header" msgid="85707750968948517">"Pracovný profil"</string>
<string name="private_space_title" msgid="1752064212078238723">"Súkromný priestor"</string>
<string name="private_space_summary" msgid="2274405892301976238">"Možnosť uzamknutia a skrytia súkromných aplikácií"</string>
- <string name="private_space_description" msgid="4059594203775816136">"Uchovávajte súkromné aplikácie v samostatnom priestore, ktorý môžete skryť alebo uzamknúť"</string>
+ <string name="private_space_description" msgid="4059594203775816136">"Uchovávajte súkromné aplikácie v samostatnom priestore, ktorý môžete skryť alebo uzamknúť."</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Zámka súkromného priestoru"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Súkromný priestor môžete odomknúť rovnakým spôsobom ako svoje zariadenie, prípadne môžete vybrať inú zámku"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"Používať zámku obrazovky zariadenia"</string>
@@ -625,11 +631,11 @@
<string name="private_space_setup_title" msgid="2272968244329821450">"Súkromný priestor"</string>
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Skryte alebo uzamknite súkromné aplikácie v samostatnom priestore. Zlepšite zabezpečenie použitím vyhradeného účtu Google."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Ako to funguje"</string>
- <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Vytvorte účet Google pre svoj priestor"</b>\n"Ak používate vyhradený účet, pomôže zastaviť zobrazovanie synchronizovaných súborov, fotiek a správ mimo priestoru"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Nastavenie zámky"</b>\n"Uzamknite svoj priestor, aby ho iní ľudia nemohli otvoriť."</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Inštalácia aplikácií"</b>\n"Nainštalujte si aplikácie, ktoré chcete vo svojom priestore ponechať súkromné"</string>
+ <string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Vytvorte si účet Google pre svoj priestor"</b>\n"Ak používate vyhradený účet, pomôže predísť zobrazovaniu synchronizovaných súborov, fotiek a správ mimo priestoru."</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Nastavte si zámku"</b>\n"Uzamknite svoj priestor, aby ho iní ľudia nemohli otvoriť."</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Nainštalujte si aplikácie"</b>\n"Nainštalujte si aplikácie, ktoré chcete vo svojom priestore ponechať súkromné."</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Na čo treba pamätať"</string>
- <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Keď uzamknete svoj priestor, aplikácie sa zastavia"</b>\n"Keď uzamknete svoj priestor, aplikácie v ňom sa zastavia a nebudete z nich dostávať upozornenia"</string>
+ <string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Keď uzamknete svoj priestor, aplikácie sa zastavia"</b>\n"Keď uzamknete svoj priestor, aplikácie v ňom sa zastavia a nebudete z nich dostávať upozornenia."</string>
<string name="private_space_apps_permission_text" msgid="4416201648436201393">"Súkromné priestory nie sú vhodné pre aplikácie, ktoré majú byť spustené na pozadí alebo odosielajú závažné upozornenia. Týka sa to napríklad zdravotníckych aplikácií. Je to tak preto, lebo upozornenia a aktivita na pozadí sa po uzamknutí priestoru zastavia.\n\nKeď je súkromný priestor uzamknutý, aplikácie v ňom sa nezobrazujú v správe povolení, na paneli ochrany súkromia ani v iných nastaveniach.\n\nSúkromný priestor sa nedá preniesť do nového zariadenia. Ak ho chcete používať v inom zariadení, musíte si založiť ďalší.\n\nK vášmu súkromnému priestoru môže získať prístup ktokoľvek, kto pripojí vaše zariadenie k počítaču alebo v ňom nainštaluje škodlivé aplikácie."</string>
<string name="private_space_settings_footer_text" msgid="3742468470394835356">"Súkromné priestory nie sú vhodné pre aplikácie, ktoré majú byť spustené na pozadí alebo odosielajú závažné upozornenia. Týka sa to napríklad zdravotníckych aplikácií. Je to tak preto, lebo upozornenia a aktivita na pozadí sa po uzamknutí priestoru zastavia.\n\nKeď je súkromný priestor uzamknutý, aplikácie v ňom sa nezobrazujú v správe povolení, na paneli ochrany súkromia ani v iných nastaveniach.\n\nSúkromný priestor sa nedá obnoviť v novom zariadení. Ak ho chcete používať v inom zariadení, musíte si založiť ďalší.\n\nK vášmu súkromnému priestoru môže získať prístup ktokoľvek, kto pripojí vaše zariadenie k počítaču alebo v ňom nainštaluje škodlivé aplikácie."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Ďalšie informácie o súkromnom priestore"</string>
@@ -1946,23 +1952,33 @@
<string name="keyboard_options_category" msgid="8040137073401152608">"Možnosti"</string>
<string name="keyboard_a11y_category" msgid="8230758278046841469">"Dostupnosť"</string>
<string name="physical_keyboard_title" msgid="3328134097512350958">"Fyzická klávesnica"</string>
- <string name="bounce_keys" msgid="7419450970351743904">"Klávesy jedného stlačenia"</string>
+ <string name="bounce_keys" msgid="7419450970351743904">"Opakované stlačenia"</string>
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klávesnica ignoruje rýchle opakované stlačenia rovnakého klávesa"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Prah opakovaného stlačenia"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Vyberte, ako dlho má klávesnica ignorovať opakované stláčanie klávesov"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Vlastné"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"vlastná hodnota"</string>
<string name="slow_keys" msgid="2891452895499690837">"Pomalé klávesy"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Upravuje čas aktivácie po stlačení klávesa"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Režim uzamknutia klávesa"</string>
- <string name="sticky_keys_summary" msgid="1844953803625480623">"Používať skratky stlačením jedného klávesa namiesto viacerých"</string>
- <string name="mouse_keys" msgid="6237254627808525540">"Klávesy myši"</string>
+ <string name="sticky_keys_summary" msgid="1844953803625480623">"Namiesto stlačenia viacerých klávesov súčasne aktivovať skratky postupným stlačením jednotlivých klávesov"</string>
+ <string name="mouse_keys" msgid="6237254627808525540">"Myš klávesnicou"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Používať tlačidlá na ovládanie myši"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Ovládajte kurzor pomocou klávesnice"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Obrátené posúvanie myšou"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Prechádzajte po stránke nadol posúvaním myši nahor"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Vymeniť ľavé a pravé tlačidlo"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Používajte ľavé tlačidlo myši ako pravé"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Klávesy klávesnice <xliff:g id="KEYBOARD_NAME">%s</xliff:g> na ovládanie myši"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Klávesmi <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> posuniete kurzor myši"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Klávesom <xliff:g id="CLICK_LABEL">%s</xliff:g> kliknete na hlavné tlačidlo myši"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Klávesom <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> pridržíte hlavné tlačidlo myši"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Klávesom <xliff:g id="RELEASE_LABEL">%s</xliff:g> uvoľníte hlavné tlačidlo myši"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Klávesom <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> prepnete režim posúvania. Potom budete môcť klávesmi <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> posúvať zobrazenie nahor, nadol, doľava alebo doprava."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Klávesom <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> kliknete na sekundárne tlačidlo myši"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Klávesové skratky"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Zobraziť zoznam skratiek"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Klávesnice a nástroje pracovného profilu"</string>
@@ -2019,7 +2035,7 @@
<string name="trackpad_notifications_summary" msgid="7663647367648690040">"Potiahnite troma prstami nadol"</string>
<string name="trackpad_switch_apps_title" msgid="7342032935377284039">"Prepínanie aplikácií"</string>
<string name="trackpad_switch_apps_summary" msgid="9193942041912927440">"Potiahnite štyrmi prstami doľava alebo doprava"</string>
- <string name="modifier_keys_settings" msgid="2537108435032034683">"Klávesy modifikátora"</string>
+ <string name="modifier_keys_settings" msgid="2537108435032034683">"Modifikačné klávesy"</string>
<string name="modifier_keys_settings_summary" msgid="6933143361657444436">"Zmeniť správanie klávesov"</string>
<string name="modifier_keys_reset_title" msgid="948294258402761066">"Resetovať všetky"</string>
<string name="modifier_keys_default_summary" msgid="8701640508670973258">"Predvolené"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Vyberte pre <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> nový kláves:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Dostupnosť fyzickej klávesnice"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Režim uzamknutia klávesa, klávesy jedného stlačenia, klávesy myši"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Opakovať klávesy"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Oneskorenie pred opakovaním"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Miera opakovaní"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pri podržaní klávesa sa bude znak opakovane zadávať, dokým ho neuvoľníte"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Rozloženie <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Predvolené"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automaticky: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2120,7 +2132,7 @@
<string name="color_contrast_preview_email_badge" msgid="4845484039428505392">"Nadviazať?"</string>
<string name="color_contrast_preview_email_title" msgid="198712116139754823">"Hlásenie o obchodnej ceste"</string>
<string name="color_contrast_preview_email_body" msgid="2714343154965937945">"Ak budete potrebovať ďalšiu pomoc, obráťte sa na mňa alebo Helenu. Toto hlásenie bude"</string>
- <string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"Klientské výdavky"</string>
+ <string name="color_contrast_preview_email_attachment_name" msgid="852407311884814746">"Klientske výdavky"</string>
<string name="color_contrast_about_title" msgid="5939566801408667867">"O farebnom kontraste"</string>
<string name="accessibility_turn_screen_darker_title" msgid="5986223133285858349">"Stmavenie obrazovky"</string>
<string name="interaction_control_category_title" msgid="2696474616743882372">"Doplnkové ovládanie"</string>
@@ -2207,7 +2219,7 @@
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"Skratka tlačidiel hlasitosti"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="5529704884360240365">"Skratka trojitého klepnutia"</string>
<string name="accessibility_tutorial_dialog_title_two_finger_double" msgid="5749704453829390283">"Skratka dvojitého klepnutia %1$d prstami"</string>
- <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"Skratka pre rýchle nastavenia"</string>
+ <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"Odkaz v rýchlych nastaveniach"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"Skratka gesta dostupnosti"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Použitie gesta dostupnosti"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"Ak chcete použiť túto funkciu, klepnite na tlačidlo dostupnosti <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> dole na obrazovke.\n\nFunkcie prepnete jeho pridržaním."</string>
@@ -2393,7 +2405,7 @@
<string name="accessibility_hearing_device_connected_title" msgid="3785140037249487287">"Načúvacie zariadenia"</string>
<string name="accessibility_hearing_device_saved_title" msgid="7573926212664909296">"Uložené zariadenia"</string>
<string name="accessibility_hearing_device_control" msgid="2661965917013100611">"Ovládanie načúvacích zariadení"</string>
- <string name="accessibility_hearing_device_shortcut_title" msgid="7645100199603031360">"Skratka načúvacieho zariadenia"</string>
+ <string name="accessibility_hearing_device_shortcut_title" msgid="7645100199603031360">"Aktivácia načúvacieho zariadenia"</string>
<string name="accessibility_hac_mode_title" msgid="2037950424429555652">"Kompatibilita s načúvadlami"</string>
<string name="accessibility_hac_mode_summary" msgid="5198760061256669067">"Zlepšuje kompatibilitu s telecievkami a znižuje úroveň nežiaduceho hluku"</string>
<string name="accessibility_hearing_device_about_title" msgid="7883758309646288250">"Načúvacie zariadenia"</string>
@@ -2415,9 +2427,9 @@
<string name="accessibility_description_state_stopped" msgid="5364752492861199133">"Táto služba nepracuje správne."</string>
<string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"Skratky dostupnosti"</string>
<string name="enable_quick_setting" msgid="6648073323202243604">"Zobraziť v rýchlych nastaveniach"</string>
- <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Červenozelená, deuteranomália"</string>
- <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Červenozelená, protanomália"</string>
- <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Modrá a žltá"</string>
+ <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Červenozelená, slabá zelená"</string>
+ <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Červenozelená, slabá červená"</string>
+ <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Modrožltá"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Odfarbenie"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Intenzita"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"Nie je k dispozícii pre režim odfarbenia alebo keď je úprava farieb vypnutá"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Upraviť spotrebu energie"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Zahrnuté balíčky"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikácie fungujú normálne"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Odporúča sa výmena batérie"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Kapacita batérie a výkon nabíjania sú obmedzené a odporúča sa výmena batérie."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Úroveň batérie je nízka"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Ak chcete predĺžiť výdrž batérie, zapnite šetrič batérie"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Zlepšite výdrž batérie"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Odpojiť tento profil VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Odpojiť"</string>
<string name="vpn_version" msgid="6344167191984400976">"Verzia"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Verzia <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Zabudnúť profil VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Nahradiť existujúcu sieť VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Nastaviť sieť VPN, ktorá je vždy zapnutá?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"Od 9:00 do 17:00 cez pracovné dni"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Udalosti v kalendári"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Režim {mode_1} je aktívny}=2{Režimy {mode_1} a {mode_2} sú aktívne}=3{Režimy {mode_1}, {mode_2} a {mode_3} sú aktívne}few{Režimy {mode_1}, {mode_2} a # ďalšie sú aktívne}many{{mode_1}, {mode_2}, and # more are active}other{Režimy {mode_1}, {mode_2} a # ďalších je aktívnych}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 režim sa môže zapínať automaticky}few{# režimy sa môžu zapínať automaticky}many{# modes can turn on automatically}other{# režimov sa môže zapínať automaticky}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Režim bez vyrušení}=1{{mode_1}}=2{{mode_1}, {mode_2}}few{{mode_1}, {mode_2}, {mode_3}}many{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ZAPNUTÉ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nenastavené"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Deaktivované"</string>
@@ -3466,8 +3479,8 @@
<string name="mode_wallpaper_summary" msgid="665480011615603784">"Filtrovať jas tapety"</string>
<string name="mode_dark_theme_title" msgid="8099007897943513209">"Tmavý motív"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"tmavý motív"</string>
- <string name="mode_dark_theme_summary" msgid="2808149708986602464">"Prepnite motív zariadenia, aby používal tmavé pozadie, pri ktorom sa menej namáhajú oči"</string>
- <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Žiadne zmeny obrazovky}=1{{effect_1}}=2{{effect_1} a {effect_2}}=3{{effect_1}, {effect_2} a {effect_3}}few{{effect_1}, {effect_2} a # ďalšie}many{{effect_1}, {effect_2}, and # more}other{{effect_1}, {effect_2} a # ďalších}}"</string>
+ <string name="mode_dark_theme_summary" msgid="2808149708986602464">"Prepnúť motív zariadenia na tmavé pozadie, pri ktorom sa menej namáhajú oči"</string>
+ <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Žiadne zmeny zobrazenia}=1{{effect_1}}=2{{effect_1} a {effect_2}}=3{{effect_1}, {effect_2} a {effect_3}}few{{effect_1}, {effect_2} a # ďalšie}many{{effect_1}, {effect_2}, and # more}other{{effect_1}, {effect_2} a # ďalších}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"Povoliť všetky upozornenia"</string>
<string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Ľudia, aplikácie a zvuky môžu vyrušiť"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Možnosti zobrazenia filtrovaných upozornení"</string>
@@ -3691,7 +3704,7 @@
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Môže zapnúť alebo vypnúť režim bez vyrušení a zmeniť súvisiace nastavenia."</string>
<string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Umožňuje spravovať a aktivovať režimy a meniť súvisiace nastavenia."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Ak vypnete prístup k upozorneniam pre aplikáciu <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, môžete tým vypnúť aj prístup pre režim bez vyrušení."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ak vypnete prístup položky <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> k upozorneniam, môžete tým vypnúť aj prístup k režimom."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ak aplikácii <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> vypnete prístup k upozorneniam, môžete tým vypnúť aj prístup k režimom."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Vypnúť"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Zrušiť"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Reálny čas"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Keď dostanete v krátkom čase priveľa upozornení, zariadenie až na dve minúty zníži hlasitosť a minimalizuje počet upozornení. Netýka sa to hovorov, budíkov a prioritných konverzácií. \n\nUpozornenia prijaté počas režimu stlmenia zobrazíte potiahnutím zhora obrazovky nadol."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Používať na pracovné profily"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Používať na aplikácie v pracovnom profile"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Pomocné služby VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Žiadne nainštalované aplikácie nežiadali, aby boli spúšťané ako pomocné služby VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Umožniť službe VR prístup do služby <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3762,7 +3785,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategórie"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Iné"</string>
<string name="no_channels" msgid="4716199078612071915">"Táto aplikácia ešte neposlala žiadne upozornenia"</string>
- <string name="no_recent_channels" msgid="5068574296267584043">"Zobrazenie nepoužívaných kategórií"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Zobraziť nepoužívané kategórie"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Ďalšie nastavenia v aplikácii"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Zobraziť nepoužívané kategórie"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Skryť nepoužívané kategórie"</string>
@@ -3798,7 +3821,7 @@
<string name="zen_schedule_rule_type_name" msgid="8071428540221112090">"Čas"</string>
<string name="zen_event_rule_type_name" msgid="1921166617081971754">"Udalosť"</string>
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"Počas udalostí"</string>
- <string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"V ľubovoľnom kalendári"</string>
+ <string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"Ľubovoľný kalendár"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"V prípade odpovede"</string>
<string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"Áno, Možno alebo Bez odpovede"</string>
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"Áno alebo Možno"</string>
@@ -3930,10 +3953,10 @@
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"Informácie a nastavenia v aplikácii <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"Spravované aplikáciou <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"Chcete vypnúť <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Tento režim sa nikdy nezapne, keď bude vypnutý"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"Keď bude tento režim vypnutý, nikdy sa nezapne."</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"Vypnúť"</string>
<string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"Chcete zapnúť <xliff:g id="MODE_NAME">%1$s</xliff:g>?"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Tento režim sa môže zapínať automaticky podľa nastavení"</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"Tento režim sa môže v závislosti od nastavení zapnúť automaticky."</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"Zapnúť"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"Nastavte režim, ktorý bude fungovať podľa pravidelného plánu"</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Nastavte režim tak, aby boli synchronizované udalosti v kalendári a odpovede na pozvánky"</string>
@@ -4155,7 +4178,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Všetky pravidlá režimu bez vyrušení vytvorené touto aplikáciou budú odstránené."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Chcete aplikácii <xliff:g id="APP">%1$s</xliff:g> povoliť prístup k režimom?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Aplikácia bude môcť vypínať a zapínať režim bez vyrušení, spravovať a aktivovať režimy a meniť súvisiace nastavenia."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Chcete zrušiť prístup aplikácie <xliff:g id="APP">%1$s</xliff:g> k sekcii Režimy?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Chcete zrušiť prístup aplikácie <xliff:g id="APP">%1$s</xliff:g> k režimom?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Všetky režimy vytvorené touto aplikáciou budú odstránené."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Neoptimalizovať"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Optimalizovať"</string>
@@ -5461,6 +5484,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Počúvať stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Naskenujte QR kód zvukového streamu a počúvajte pomocou zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Heslo sa nedá upraviť počas zdieľania. Ak ho chcete zmeniť, najprv vypnite zdieľanie zvuku."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Heslo musí mať 4 až 16 znakov a môže obsahovať iba písmená, číslice a symboly"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Skener QR kódov"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Potrebujete pomoc?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Vyhľadávať v nastaveniach"</string>
@@ -5469,10 +5493,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Len senzory zariadenia"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nové kontakty sa s účtom nebudú synchronizovať"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakty sa budú predvolene ukladať do zariadenia a synchronizovať s účtom"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nie je nastavená žiadna predvolená hodnota"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Pri nastavovaní predvoleného účtu sa vyskytla chyba"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nie je nastavená žiadna predvolená hodnota"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Iba zariadenie"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Začnite pridaním účtu"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Vyhľadávanie krúžením"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Ak chcete vyhľadávať pomocou obsahu na obrazovke, pridržte tlačidlo plochy alebo navigačnú rukoväť."</string>
</resources>
diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml
index 9c1723e..06b4053 100644
--- a/res/values-sl/arrays.xml
+++ b/res/values-sl/arrays.xml
@@ -365,7 +365,7 @@
</string-array>
<string-array name="accessibility_button_size_selector_titles">
<item msgid="7482952318152486459">"Majhna"</item>
- <item msgid="1666628329913333563">"Velik"</item>
+ <item msgid="1666628329913333563">"Velika"</item>
</string-array>
<string-array name="vpn_proxy_settings">
<item msgid="7165538292837266997">"Brez"</item>
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Aktovka"</item>
+ <item msgid="184985872234062767">"Klasična stavba"</item>
+ <item msgid="9189550412466785530">"Stanovanjski objekt"</item>
+ <item msgid="2142527562511049422">"Oblaček z govorom"</item>
+ <item msgid="2548100558260478605">"Skupina oseb"</item>
+ <item msgid="2270003903304578284">"Žarnica"</item>
+ <item msgid="4793496619091161864">"Koledar"</item>
+ <item msgid="5673625795644364100">"Ne moti"</item>
+ <item msgid="1423820834865831361">"Oseba teče"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Telovadna utežna ročka"</item>
+ <item msgid="2730180105015616518">"Plavanje"</item>
+ <item msgid="2666922823253345958">"Oseba na pohodu"</item>
+ <item msgid="8234880356472211396">"Oseba meče žogo"</item>
+ <item msgid="4642980625253001443">"Oseba brca"</item>
+ <item msgid="4324795269518833500">"Krmilnik za igre"</item>
+ <item msgid="7789966425125441125">"Barvna paleta umetnika"</item>
+ <item msgid="663512680597461570">"Snežinka"</item>
+ <item msgid="7952183800501346803">"Senčnik"</item>
+ <item msgid="799139025758265891">"Orodja v delavnici"</item>
+ <item msgid="8112685757657659269">"Klavir"</item>
+ <item msgid="3861584909935022342">"Filmski trak"</item>
+ <item msgid="5827426100157335512">"Knjiga"</item>
+ <item msgid="8585828346253128384">"Lotosov cvet"</item>
+ <item msgid="8788370542815300188">"Misli osebe"</item>
+ <item msgid="7287354964767553293">"Slušalke"</item>
+ <item msgid="2530059623783800987">"Televizor"</item>
+ <item msgid="5307182323469376758">"Vlak"</item>
+ <item msgid="4903790544026923026">"Avtomobil"</item>
+ <item msgid="5010405583912314582">"Vilice in nož"</item>
+ <item msgid="8939998598599064900">"Nakupovalni voziček"</item>
+ <item msgid="3379605903308731893">"Otrok"</item>
+ <item msgid="7808668968550293112">"Živalska šapa"</item>
+ <item msgid="1000692647524056504">"Značka zvezdice"</item>
+ <item msgid="8270261073421676502">"Dve osebi"</item>
+ <item msgid="5767782819651505460">"Zvezda"</item>
+ <item msgid="4368451291862729334">"Srce"</item>
+ <item msgid="2613199102208419986">"Hiša"</item>
+ <item msgid="3022279986430275040">"Polmesec"</item>
+ <item msgid="5421089790869483206">"Ura"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index bb538c9..0c284ce 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Seznanitev nove naprave"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Samodejno vklopi jutri"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Če izklopite Bluetooth, se naslednji dan znova vklopi"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Seznani desno uho"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Seznani levo uho"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Seznanite drugo uho"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Onemogoči funkcijo Bluetooth LE zvok"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Onemogoči funkcijo Bluetooth LE zvok, če naprava podpira strojno opremo za LE zvok."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Način Bluetooth LE zvok"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Omogoči predogled uporabniškega vmesnika za oddajanje po protokolu Bluetooth LE zvok"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Omogoči predogled uporabniškega vmesnika za deljenje po protokolu LE zvok, vključno z osebnim deljenjem zvoka in zasebnim oddajanjem"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Pokaži preklopnik za LE zvok v podrobnostih o napravi"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Zaobidenje seznama dovoljenih za funkcijo Bluetooth LE zvok"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Privzeta uporaba funkcije LE zvok, tudi če dodatna oprema LE zvok ni potrjena, da izpolnjuje merila za uvrstitev na seznam dovoljenih."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Samodejna nastavitev na podlagi omrežja in brezžičnih signalov"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Samodejni časovni pas"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Samodejna nastavitev na podlagi mobilnih omrežij v bližini"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Samodejna nastavitev na podlagi lokacije naprave, če je na voljo"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Uporabi privzete območne nastavitve"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Uporabi 24-urni zapis časa"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Ura"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Dvignite prst in se znova dotaknite tipala."</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Tipala prstnih odtisov ni mogoče uporabiti"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Obiščite ponudnika popravil."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Odklepanje s prstnim odtisom pri izklopljenem zaslonu"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Uporaba odklepanja s prstnim odtisom tudi pri izklopljenem zaslonu"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Izklopljen zaslon, odklepanje"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Več varnostnih nastavitev"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Zaklepanje delovnega profila, šifriranje in drugo"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Šifriranje, poverilnice in drugo"</string>
@@ -626,7 +631,7 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Skrijte ali zaklenite zasebne aplikacije v ločenem prostoru. Za dodatno varnost uporabite namenski račun Google."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Kako deluje"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Ustvarite račun Google za zasebni prostor"</b>\n"Če uporabite namenski račun, to omogoča, da se sinhronizirane datoteke, fotografije in e-poštna sporočila ne prikazujejo zunaj zasebnega prostora"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Nastavitev zaklepanja"</b>\n"Zaklenite svoj prostor, da ga druge osebe ne bodo mogle odpreti."</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Nastavite zaklepanje"</b>\n"Zaklenite svoj prostor, da ga druge osebe ne bodo mogle odpreti"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Namestite aplikacije"</b>\n"V zasebnem prostoru namestite aplikacije, za katere želite, da ostanejo zasebne"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Upoštevajte"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacije so ustavljene, ko zaklenete zasebni prostor"</b>\n"Ko zaklenete zasebni prostor, so aplikacije v njem ustavljene in s tem tudi prejemanje njihovih obvestil"</string>
@@ -1646,7 +1651,7 @@
<string name="location_time_zone_detection_not_applicable" msgid="6757964612836952714">"Uporaba lokacije za zaznavanje časovnega pasu je onemogočeno"</string>
<string name="location_time_zone_detection_not_supported" msgid="3251181656388306501">"Uporaba lokacije za zaznavanje časovnega pasu ni podprta"</string>
<string name="location_time_zone_detection_not_allowed" msgid="8264525161514617051">"Spremembe uporabe lokacije za zaznavanje časovnega pasu niso dovoljene"</string>
- <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Če je lokacija naprave na voljo, se lahko uporabi za nastavitev časovnega pasu."</string>
+ <string name="location_time_zone_detection_auto_is_on" msgid="1837317773761632655">"Če je lokacija naprave na voljo, se lahko uporabi za nastavitev časovnega pasu"</string>
<string name="about_settings_summary" msgid="4831942939227432513">"Ogled pravnih informacij, stanja, različice programske opreme"</string>
<string name="legal_information" msgid="7509900979811934843">"Pravne informacije"</string>
<string name="manual" msgid="3651593989906084868">"Ročno"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tipkovnica prezre hitro ponovljene pritiske iste tipke"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Prag za prezrtje pritiskov tipk"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Izberite, kako dolgo tipkovnica prezre ponovljene pritiske tipk"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Po meri"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"vrednost po meri"</string>
<string name="slow_keys" msgid="2891452895499690837">"Daljši pritisk tipk"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Prilagoditev časa, potrebnega za aktiviranje pritiska tipke"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Zaklepanje tipk"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Za bližnjice pritisnite eno tipko hkrati namesto več tipk hkrati"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Tipke za miško"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Uporaba tipk za miško"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Upravljanje kazalke s tipkovnico"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Obratno pomikanje z miško"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Pomaknite se navzgor, če želite premakniti stran navzdol"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Zamenjava levega in desnega gumba"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Uporabljajte levi gumb na miški kot desnega"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tipke za miško na tipkovnici <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Za premikanje kazalca miške uporabite tipke <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Za klik glavnega gumba miške uporabite tipko <xliff:g id="CLICK_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Za pritisk in pridržanje glavnega gumba miške uporabite tipko <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Za sprostitev glavnega gumba miške uporabite tipko <xliff:g id="RELEASE_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Za preklop načina pomikanja uporabite tipko <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>. S tipkami <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> boste lahko pogled pomikali navzgor, navzdol, levo ali desno."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Za klik dodatnega gumba miške uporabite tipko <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Bližnjične tipke"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Prikaz seznama bližnjic"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tipkovnice in orodja delovnega profila"</string>
@@ -2011,7 +2026,7 @@
<string name="gesture_button_done" msgid="6387900351203032188">"Končano"</string>
<string name="trackpad_go_back_title" msgid="5312164160947491440">"Nazaj"</string>
<string name="trackpad_go_back_summary" msgid="4201901101085902768">"Vlečenje v levo ali desno s tremi prsti"</string>
- <string name="trackpad_go_home_title" msgid="2146525662148291552">"Pojdi na začetni zaslon"</string>
+ <string name="trackpad_go_home_title" msgid="2146525662148291552">"Pomik na začetni zaslon"</string>
<string name="trackpad_go_home_summary" msgid="2222744701528360887">"Vlečenje navzgor s tremi prsti"</string>
<string name="trackpad_recent_apps_title" msgid="8195970908411585445">"Nedavne aplikacije"</string>
<string name="trackpad_recent_apps_summary" msgid="2685092851677573794">"Vlečenje navzgor s tremi prsti in pridržanje"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Izberite novo tipko za »<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>«:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Dostopnost fizične tipkovnice"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Zaklepanje tipk, zaznava večkratnih pritiskov tipk, tipke za miško"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Ponavljanje vnosa s tipko"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Zakasnitev pred ponovitvijo"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Hitrost ponavljanja"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pridržite poljubno tipko, da se njen znak ponavlja, dokler je ne spustite"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Postavitev <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Privzeto"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Samodejno: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2242,8 +2253,8 @@
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{S prstom povlecite navzdol z vrha zaslona.}one{Z # prstom povlecite navzdol z vrha zaslona.}two{Z # prstoma povlecite navzdol z vrha zaslona.}few{S # prsti povlecite navzdol z vrha zaslona.}other{S # prsti povlecite navzdol z vrha zaslona.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{S prstom povlecite navzdol z vrha zaslona. Ta bližnjica bo na voljo po dokončani nastavitvi naprave.}one{Z # prstom povlecite navzdol z vrha zaslona. Ta bližnjica bo na voljo po dokončani nastavitvi naprave.}two{Z # prstoma povlecite navzdol z vrha zaslona. Ta bližnjica bo na voljo po dokončani nastavitvi naprave.}few{S # prsti povlecite navzdol z vrha zaslona. Ta bližnjica bo na voljo po dokončani nastavitvi naprave.}other{S # prsti povlecite navzdol z vrha zaslona. Ta bližnjica bo na voljo po dokončani nastavitvi naprave.}}"</string>
<string name="accessibility_feature_shortcut_setting_summary_quick_settings" msgid="7006526933552889373">"Hitre nastavitve"</string>
- <string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"Gumba za glasnost"</string>
- <string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"gumba za glasnost"</string>
+ <string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="844089763968552142">"Tipki za glasnost"</string>
+ <string name="accessibility_shortcut_hardware_keyword" msgid="2483152542320987022">"tipki za glasnost"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pritisnite in pridržite obe tipki za glasnost."</string>
<string name="accessibility_shortcut_edit_screen_title_two_finger_double_tap" msgid="8952595692906527694">"Dvakratni dotik z %1$d prstoma"</string>
<string name="accessibility_shortcut_edit_screen_summary_two_finger_double_tap" msgid="385404127425496362">"Z %1$d prstoma se dvakrat hitro dotaknite zaslona."</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Prilagodi porabo energije"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Vključeni paketi"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikacije delujejo normalno"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Priporočena je zamenjava baterije"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Zmogljivost baterije in zmogljivost polnjenja sta zmanjšani, zato je priporočena zamenjava baterije."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Nizka raven napolnjenosti baterije"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Vklopite varčevanje z energijo baterije, da podaljšate čas delovanja baterije."</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Podaljšanje časa delovanja baterije"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Prekinitev povezave s tem omrežjem VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Prekini povezavo"</string>
<string name="vpn_version" msgid="6344167191984400976">"Različica"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Različica <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Pozabi omrežje VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Želite zamenjati obstoječe omrežje VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Ali želite, da je omrežje VPN stalno vklopljeno?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"»9.00–17.00 ob delavnikih«"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Dogodki na koledarju"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Način {mode_1} je aktiven}=2{Načina {mode_1} in {mode_2} sta aktivna}=3{Načini {mode_1}, {mode_2} in {mode_3} so aktivni}one{Načina {mode_1} in {mode_2} ter še # način so aktivni}two{Načina {mode_1} in {mode_2} ter še # načina so aktivni}few{Načina {mode_1} in {mode_2} ter še # načini so aktivni}other{Načina {mode_1} in {mode_2} ter še # načinov so aktivni}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 način se lahko samodejno vklopi}one{# način se lahko samodejno vklopi}two{# načina se lahko samodejno vklopita}few{# načini se lahko samodejno vklopijo}other{# načinov se lahko samodejno vklopi}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ne moti}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}two{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"VKLOPLJENO"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ni nastavljeno"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Onemogočeno"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Ko v kratkem času prejmete veliko obvestil, naprava zmanjša glasnost in minimira opozorila za največ dve minuti. To ne vpliva na klice, alarme in prednostne pogovore. \n\nObvestila, ki jih prejmete med utišanjem, si lahko ogledate tako, da z vrha zaslona povlečete navzdol."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Uporaba za delovne profile"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Uporabi za aplikacije v delovnem profilu"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Storitve za pomoč za VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Nobena nameščena aplikacija ni zahtevala izvajanja kot storitev za pomoč za VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Dovolite storitvi <xliff:g id="SERVICE">%1$s</xliff:g> dostop do storitve za VR?"</string>
@@ -4268,7 +4290,7 @@
<string name="ota_disable_automatic_update_summary" msgid="7803279951533276841">"Namesti posodobitve ob vnovičnem zagonu naprave."</string>
<string name="usage" msgid="287782903846013936">"Poraba"</string>
<string name="cellular_data_usage" msgid="5874156338825285334">"Prenos mobilnih podatkov"</string>
- <string name="app_cellular_data_usage" msgid="7603292978956033926">"Prenos podatkov aplikacij"</string>
+ <string name="app_cellular_data_usage" msgid="7603292978956033926">"Prenos podatkov v aplikacijah"</string>
<string name="wifi_data_usage" msgid="6868503699134605707">"Preneseni podatki (Wi-Fi)"</string>
<string name="non_carrier_data_usage" msgid="6494603202578414755">"Prenesena količina podatkov zunaj omrežij operaterjev"</string>
<string name="ethernet_data_usage" msgid="4552227880905679761">"Preneseni podatki (ethernet)"</string>
@@ -5045,7 +5067,7 @@
<string name="lockscreen_privacy_wallet_summary" msgid="3984851951621168573">"Dovolite dostop do denarnice na zaklenjenem zaslonu."</string>
<string name="lockscreen_privacy_qr_code_scanner_setting_toggle" msgid="1856477548806618829">"Prikaži optični bralnik kod QR"</string>
<string name="lockscreen_privacy_qr_code_scanner_summary" msgid="4577409244972250235">"Dovoli dostop do optičnega bralnika kod QR pri zaklenjenem zaslonu"</string>
- <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Prikaži kontrolnike naprave"</string>
+ <string name="lockscreen_privacy_controls_setting_toggle" msgid="7445725343949588613">"Prikaz kontrolnikov naprave"</string>
<string name="lockscreen_privacy_controls_summary" msgid="7522918441738915364">"Na zaklenjenem zaslonu"</string>
<string name="lockscreen_trivial_controls_setting_toggle" msgid="2174300719855112358">"Uporaba kontrolnikov naprave"</string>
<string name="lockscreen_trivial_disabled_controls_summary" msgid="7593626010580689155">"Za uporabo najprej vklopite »Prikaži kontrolnike naprave«."</string>
@@ -5461,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Poslušaj pretočno predvajanje"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Optično preberite kodo QR pretočnega predvajanja zvoka, če želite poslušati z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Gesla ni mogoče urejati med deljenjem. Če želite spremeniti geslo, najprej izklopite deljenje zvoka."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Geslo mora vsebovati od 4 do 16 znakov, in sicer samo črke, številke in simbole"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Optični bralnik kod QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Potrebujete pomoč?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Iskanje po nastavitvah"</string>
@@ -5469,10 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Samo v napravi"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Novi stiki ne bodo sinhronizirani z računom"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Stiki bodo privzeto shranjeni v napravi in sinhronizirani z računom"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nastavljen ni noben privzeti račun"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Napaka pri nastavljanju privzetega računa"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nastavljen ni noben privzeti račun"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Samo v napravi"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Za začetek dodajte račun"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Iskanje z obkroževanjem"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Za iskanje po vsebini zaslona pridržite gumb za začetni zaslon ali ročico za pomikanje."</string>
</resources>
diff --git a/res/values-sq/arrays.xml b/res/values-sq/arrays.xml
index 54acf02..2e8a132 100644
--- a/res/values-sq/arrays.xml
+++ b/res/values-sq/arrays.xml
@@ -360,7 +360,7 @@
<item msgid="3605616699204153590">"Shiriti i navigimit"</item>
</string-array>
<string-array name="accessibility_button_gesture_selector_titles">
- <item msgid="2370918472773154939">"Buton"</item>
+ <item msgid="2370918472773154939">"Butoni"</item>
<item msgid="6922258575853746220">"Gjesti"</item>
</string-array>
<string-array name="accessibility_button_size_selector_titles">
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Valixhe"</item>
+ <item msgid="184985872234062767">"Ndërtesë klasike"</item>
+ <item msgid="9189550412466785530">"Ndërtesë me apartamente"</item>
+ <item msgid="2142527562511049422">"Flluskë bisede"</item>
+ <item msgid="2548100558260478605">"Grup personash"</item>
+ <item msgid="2270003903304578284">"Llambë"</item>
+ <item msgid="4793496619091161864">"Kalendar"</item>
+ <item msgid="5673625795644364100">"Mos shqetëso"</item>
+ <item msgid="1423820834865831361">"Person duke vrapuar"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Girë palestre"</item>
+ <item msgid="2730180105015616518">"Not"</item>
+ <item msgid="2666922823253345958">"Person në ekskursion"</item>
+ <item msgid="8234880356472211396">"Person duke hedhur topin"</item>
+ <item msgid="4642980625253001443">"Person duke shkelmuar"</item>
+ <item msgid="4324795269518833500">"Kontrolluesi i lojës"</item>
+ <item msgid="7789966425125441125">"Paleta e ngjyrave e artistit"</item>
+ <item msgid="663512680597461570">"Flok dëbore"</item>
+ <item msgid="7952183800501346803">"Çadër plazhi"</item>
+ <item msgid="799139025758265891">"Vegla punishteje"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Bobina e filmit"</item>
+ <item msgid="5827426100157335512">"Libër"</item>
+ <item msgid="8585828346253128384">"Zambak uji"</item>
+ <item msgid="8788370542815300188">"Mendja e një personi"</item>
+ <item msgid="7287354964767553293">"Kufje"</item>
+ <item msgid="2530059623783800987">"Televizor"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Makinë"</item>
+ <item msgid="5010405583912314582">"Pirun dhe thikë"</item>
+ <item msgid="8939998598599064900">"Karroca e blerjes"</item>
+ <item msgid="3379605903308731893">"Fëmijë"</item>
+ <item msgid="7808668968550293112">"Putër kafshe"</item>
+ <item msgid="1000692647524056504">"Stema e yllit"</item>
+ <item msgid="8270261073421676502">"Dy persona"</item>
+ <item msgid="5767782819651505460">"Yll"</item>
+ <item msgid="4368451291862729334">"Zemër"</item>
+ <item msgid="2613199102208419986">"Shtëpi"</item>
+ <item msgid="3022279986430275040">"Gjysmëhënë"</item>
+ <item msgid="5421089790869483206">"Orë"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 8c5199e..a27d00d 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -65,8 +65,10 @@
<string name="bluetooth_rename_button" msgid="9162500408570289545">"Riemërto"</string>
<string name="bluetooth_disconnect_title" msgid="4581951246357823044">"Të shkëputet pajisja?"</string>
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Çifto pajisjen e re"</string>
- <string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
+ <string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth-i"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Aktivizo automatikisht nesër"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Çifto anën e djathtë"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Çifto anën e majtë"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Çifto anën tjetër"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Çaktivizo Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Çaktivizon veçorinë Bluetooth LE Audio nëse pajisja mbështet aftësitë e harduerit të LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Modaliteti i Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Aktivizo pamjen paraprake të ndërfaqes së përdoruesit për transmetimin me Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Aktivizon pamjen paraprake ë ndërfaqes së përdoruesit për ndarjen me LE Audio, duke përfshirë ndarjen e audios personale dhe transmetimit privat"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Shfaq çelësin për LE Audio te \"Detajet e pajisjes\""</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Anashkalo \"Listën e lejimeve\" të Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Përdor LE Audio si parazgjedhje edhe nëse LE Audio periferike nuk është verifikuar se i ka plotësuar kriteret e \"Listës së lejimeve\"."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Cakto automatikisht duke përdorur sinjalet e rrjetit dhe ato wireless"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Brezi orar automatik"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Cakto automatikisht bazuar në rrjetet celulare pranë teje"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Cakto automatikisht duke përdorur vendndodhjen e pajisjes sate, nëse ofrohet"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Përdor parazgjedhjen e lokalitetit"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Përdor formatin 24-orësh"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Ora"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Ngrije gishtin dhe më pas preke përsëri sensorin"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Sensori i gjurmës së gishtit nuk mund të përdoret"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Vizito një ofrues të shërbimit të riparimit."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"\"Shkyçja me gjurmën e gishtit\" për ekranin joaktiv"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Përdor \"Shkyçjen me gjurmën e gishtit\" edhe kur ekrani është joaktiv"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ekrani joaktiv, shkyç"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Cilësime të tjera të sigurisë"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Kyçja e profilit të punës, enkriptimi dhe të tjera"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Enkriptimi, kredencialet dhe të tjera"</string>
@@ -1583,12 +1589,12 @@
<string name="tether_settings_disabled_on_data_saver" msgid="9054069463426952689">"Nuk mund të ndajë internetin ose të përdorë zonat e qasjes në internet kur \"Kursyesi i të dhënave\" është aktiv"</string>
<string name="tether_settings_summary_hotspot_only" msgid="8529008147731140279">"Vetëm zona e qasjes për internet"</string>
<string name="tether_settings_summary_usb_tethering_only" msgid="6351624505239356221">"Vetëm USB"</string>
- <string name="tether_settings_summary_bluetooth_tethering_only" msgid="1451008625343274930">"Vetëm Bluetooth"</string>
+ <string name="tether_settings_summary_bluetooth_tethering_only" msgid="1451008625343274930">"Vetëm me Bluetooth"</string>
<string name="tether_settings_summary_ethernet_tethering_only" msgid="3582266687537419309">"Vetëm eternet"</string>
<string name="tether_settings_summary_hotspot_and_usb" msgid="5999349643653265016">"Zona e qasjes për internet, USB"</string>
<string name="tether_settings_summary_hotspot_and_bluetooth" msgid="810514646401708557">"Zona e qasjes për internet, Bluetooth"</string>
<string name="tether_settings_summary_hotspot_and_ethernet" msgid="5489192670354277152">"Zona e qasjes së internetit, eternet"</string>
- <string name="tether_settings_summary_usb_and_bluetooth" msgid="1355680331767261967">"USB, Bluetooth"</string>
+ <string name="tether_settings_summary_usb_and_bluetooth" msgid="1355680331767261967">"USB-ja, Bluetooth-i"</string>
<string name="tether_settings_summary_usb_and_ethernet" msgid="2195017679820919905">"USB, Ethernet"</string>
<string name="tether_settings_summary_bluetooth_and_ethernet" msgid="1015253926959211012">"Bluetooth, eternet"</string>
<string name="tether_settings_summary_hotspot_and_usb_and_bluetooth" msgid="2949043525073791732">"Zona e qasjes për internet, USB, Bluetooth"</string>
@@ -1947,30 +1953,32 @@
<string name="keyboard_a11y_category" msgid="8230758278046841469">"Qasshmëria"</string>
<string name="physical_keyboard_title" msgid="3328134097512350958">"Tastiera fizike"</string>
<string name="bounce_keys" msgid="7419450970351743904">"Tastet e përsëritura"</string>
- <!-- no translation found for bounce_keys_summary (7418024428905737729) -->
- <skip />
- <!-- no translation found for bounce_keys_dialog_title (4088646362538368693) -->
- <skip />
- <!-- no translation found for bounce_keys_dialog_subtitle (5640575860258120026) -->
- <skip />
- <!-- no translation found for bounce_keys_dialog_option_200 (7876774697200082558) -->
- <skip />
- <!-- no translation found for bounce_keys_dialog_option_400 (8146580138675322657) -->
- <skip />
- <!-- no translation found for bounce_keys_dialog_option_600 (6166166103942612488) -->
- <skip />
+ <string name="bounce_keys_summary" msgid="7418024428905737729">"Tastiera i shpërfill shtypjet e shpejta të përsëritura të të njëjtit tast"</string>
+ <string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Pragu për tastet e përsëritura"</string>
+ <string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Zgjidh kohëzgjatjen e shpërfilljes së shtypjeve të përsëritura të tasteve nga tastiera jote"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 sek."</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 sek."</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 sek."</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"E personalizuar"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"Vlerë e personalizuar"</string>
<string name="slow_keys" msgid="2891452895499690837">"Tastet e ngadalta"</string>
- <!-- no translation found for slow_keys_summary (2914214326648535377) -->
- <skip />
+ <string name="slow_keys_summary" msgid="2914214326648535377">"Rregullon kohën që duhet për aktivizimin e një shtypjeje tasti"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Tastet e përhershme"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Shtyp vetëm një tast në një moment për shkurtoret në vend që t\'i mbash shtypur bashkë tastet"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Butonat e miut"</string>
- <!-- no translation found for mouse_keys_summary (7030731235143286467) -->
- <skip />
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Përdor tastet e miut"</string>
+ <string name="mouse_keys_summary" msgid="7030731235143286467">"Përdor tastierën për të kontrolluar treguesin"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Lëvizja e miut në të kundërt"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Lëviz lart për ta zhvendosur faqen poshtë"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Ndërro butonin e majtë dhe të djathtë"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Përdor butonin e majtë të miut si buton të djathtë"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Tastet e miut për <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Përdor tastet <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> për të zhvendosur treguesin e miut"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Përdor tastin <xliff:g id="CLICK_LABEL">%s</xliff:g> për të klikuar butonin kryesor të miut"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Përdor tastin <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> për të shtypur dhe mbajtur shtypur butonin kryesor të miut"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Përdor tastin <xliff:g id="RELEASE_LABEL">%s</xliff:g> për të lëshuar butonin kryesor të miut"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Përdor tastin <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> për të aktivizuar/çaktivizuar modalitetin e lëvizjes. Kjo do të bëjë që tastet <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> ta lëvizin pamjen lart, poshtë, majtas ose djathtas"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Përdor tastin <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> për të klikuar te butoni dytësor i miut"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Shkurtoret e tastierës"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Shfaq listën e shkurtoreve"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tastierat dhe veglat e profilit të punës"</string>
@@ -2039,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Zgjidh një çelës të ri për <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Qasshmëria për tastierën fizike"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Tastet e përhershme, tastet e përsëritura, tastet e miut"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Përsërit tastet"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Vonesa përpara përsëritjes"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Shpejtësia e përsëritjes"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Mbaj shtypur një tast për të përsëritur karakterin e tij derisa të lëshohet tasti"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Struktura e <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"E parazgjedhur"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2578,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Rregullo përdorimin e energjisë"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Paketat e përfshira"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Aplikacionet po funksionojnë normalisht"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Rekomandohet zëvendësimi i baterisë"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Kapaciteti i baterisë dhe performanca e karikimit janë reduktuar dhe rekomandohet zëvendësimi i baterisë."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Niveli i baterisë është i ulët"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Aktivizo \"Kursyesin e baterisë\" për të rritur kohëzgjatjen e baterisë"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Përmirëso kohëzgjatjen e baterisë"</string>
@@ -2995,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Shkëpute këtë rrjet VPN"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Shkëpute"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versioni"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versioni <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Harroje rrjetin VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Të zëvendësohet rrjeti ekzistues VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Të caktohet rrjeti VPN gjithmonë aktiv?"</string>
@@ -3403,7 +3408,7 @@
<string name="spatial_summary_on_two" msgid="4526919818832483883">"Aktiv / <xliff:g id="OUTPUT_DEVICE_0">%1$s</xliff:g> dhe <xliff:g id="OUTPUT_DEVICE_1">%2$s</xliff:g>"</string>
<string name="spatial_audio_footer_title" msgid="8775010547623606088">"Mund të aktivizosh po ashtu \"Audion hapësinore\" për pajisjet me Bluetooth."</string>
<string name="spatial_audio_footer_learn_more_text" msgid="3826811708094366301">"Cilësimet e pajisjeve të lidhura"</string>
- <string name="spatial_audio_multi_toggle_title" msgid="6175786400035541273">"Audio hapësinore"</string>
+ <string name="spatial_audio_multi_toggle_title" msgid="6175786400035541273">"Audioja hapësinore"</string>
<string name="spatial_audio_multi_toggle_off" msgid="2086359413991193164">"Joaktiv"</string>
<string name="spatial_audio_multi_toggle_on" msgid="4204808183659033003">"Fikse"</string>
<string name="spatial_audio_multi_toggle_head_tracking_on" msgid="4156440073634867249">"Ndjekja e lëvizjeve të kokës"</string>
@@ -3419,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00 - 17:00 në ditë jave\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Ngjarjet e kalendarit"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Modaliteti \"{mode_1}\" është aktiv}=2{Modalitetet \"{mode_1}\" dhe \"{mode_2}\" janë aktive}=3{Modalitetet \"{mode_1}\", \"{mode_2}\" dhe \"{mode_3}\" janë aktive}other{Modalitetet \"{mode_1}\", \"{mode_2}\" dhe # të tjera janë aktive}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 modalitet mund të aktivizohet automatikisht}other{# modalitete mund të aktivizohen automatikisht}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Mos shqetëso}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AKTIV"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Nuk është caktuar"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Çaktivizuar"</string>
@@ -3445,7 +3450,7 @@
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Kur të aktivizohet automatikisht"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Programi i ngjarjes"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Aktivizo gjatë ngjarjeve për"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Kur përgjigja për ftesën është"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Kur përgjigjja për ftesën është"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"Orari"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Orari"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> orë e <xliff:g id="MINUTES">%2$d</xliff:g> min."</string>
@@ -3697,7 +3702,7 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"Mund t\'u përgjigjet mesazheve dhe të kryejë veprime te butonat në njoftime, duke përfshirë shtyrjen ose heqjen e njoftimeve dhe përgjigjen ndaj telefonatave."</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"Të ndryshojë cilësimet"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Mund të aktivizojë ose çaktivizojë modalitetin \"Mos shqetëso\" dhe të ndryshojë cilësimet që lidhen me të."</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Mund të menaxhojë dhe të aktivizojë modalitetet dhe të ndryshojë cilësimet përkatëse."</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Mund të menaxhojë dhe të aktivizojë modalitetet, si dhe të ndryshojë cilësimet përkatëse."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Nëse çaktivizon qasjen te njoftimet për \"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>\", mund të çaktivizohet edhe qasja te \"Mos shqetëso\"."</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Nëse çaktivizon qasjen te njoftimet për <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, mund të çaktivizohet edhe qasja te modalitetet."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Çaktivizo"</string>
@@ -3723,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kur merr shumë njoftime brenda një kohe të shkurtër, pajisja jote do të ulë volumin dhe do të minimizojë sinjalizimet për deri në 2 minuta. Telefonatat, alarmet dhe bisedat me përparësi nuk do të ndikohen. \n\nNjoftimet e marra gjatë reduktimit mund të gjenden duke tërhequr poshtë nga kreu i ekranit."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Zbato në profilet e punës"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Zbato për aplikacionet e profilit të punës"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Shërbimet e ndihmësit VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Asnjë aplikacion i instaluar nuk ka kërkuar të ekzekutohet si shërbim ndihmësi VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Të lejohet qasja e shërbimit VR për <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3883,7 +3898,7 @@
<string name="zen_mode_apps_category" msgid="4082380323683889391">"Aplikacionet që mund ta ndërpresin"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Aplikacionet e zgjedhura"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Asnjë"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Asnjë aplikacion nuk mund të ndërpresë}=1{{app_1} mund të ndërpresë}=2{{app_1} dhe {app_2} mund të ndërpresin}=3{{app_1}, {app_2} dhe {app_3} mund të ndërpresin}other{{app_1}, {app_2} dhe # aplikacione të tjera mund të ndërpresin}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Asnjë aplikacion nuk mund ta ndërpresë}=1{{app_1} mund ta ndërpresë}=2{{app_1} dhe {app_2} mund ta ndërpresin}=3{{app_1}, {app_2} dhe {app_3} mund ta ndërpresin}other{{app_1}, {app_2} dhe # aplikacione të tjera mund ta ndërpresin}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (Puna)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"Po llogaritet…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"Cilësimet e aplikacioneve"</string>
@@ -4162,7 +4177,7 @@
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"Të anulohet qasja te \"Mos shqetëso\" për <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Të gjitha rregullat e \"Mos shqetëso\" të krijuara nga ky aplikacion do të hiqen."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Të lejohet qasja te modalitietet për <xliff:g id="APP">%1$s</xliff:g>?"</string>
- <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Aplikacioni do të mund të aktivizojë/çaktivizojë opsionin \"Mos shqetëso\", të menaxhojë dhe të aktivizojë modalitetet dhe të bëjë ndryshimet në cilësimet përkatëse."</string>
+ <string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Aplikacioni do të mund të aktivizojë/çaktivizojë opsionin \"Mos shqetëso\", të menaxhojë dhe të aktivizojë modalitetet, si dhe të bëjë ndryshimet në cilësimet përkatëse."</string>
<string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Të revokohet qasja te modalitetet për <xliff:g id="APP">%1$s</xliff:g>?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Të gjitha modalitetet e krijuara nga ky aplikacioni do të hiqen."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Mos optimizo"</string>
@@ -5467,22 +5482,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Dëgjo transmetimin"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skano një kod QR të transmetimit audio për të dëgjuar me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Fjalëkalimi nuk mund të modifikohet gjatë ndarjes. Për të ndryshuar fjalëkalimin, në fillim çaktivizo ndarjen e audios."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Fjalëkalimi yt duhet të përfshijë 4-16 karaktere dhe të përdorë vetëm shkronja, numra dhe simbole"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Skaneri i kodeve QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Ke nevojë për ndihmë?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Kërko te cilësimet"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"kontaktet, ruajtja, llogaria"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"Ruajtja e kontakteve"</string>
- <!-- no translation found for contacts_storage_device_only_preference_label (970250816918108264) -->
+ <string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Vetëm pajisja"</string>
+ <string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Kontaktet e reja nuk do të sinkronizohen me një llogari"</string>
+ <string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontaktet do të ruhen në pajisjen tënde dhe do të sinkronizohen në llogarinë tënde si parazgjedhje"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Gabim gjatë caktimit të llogarisë së parazgjedhur"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Nuk është caktuar asnjë e parazgjedhur"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Vetëm në pajisje"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
<skip />
- <!-- no translation found for contacts_storage_device_only_preference_summary (2339782491812039153) -->
+ <string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Shto një llogari për të filluar"</string>
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for contacts_storage_selection_message (8082077300632059003) -->
- <skip />
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Nuk është caktuar asnjë e parazgjedhur"</string>
- <!-- no translation found for contacts_storage_first_time_add_account_message (5161093169928132323) -->
- <skip />
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
- <skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Qarko për të kërkuar"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Prek dhe mbaj shtypur butonin \"Kreu\" ose emërtimin e navigimit për të kërkuar duke përdorur përmbajtjen në ekranin tënd."</string>
</resources>
diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml
index f1cea2b..c629fee 100644
--- a/res/values-sr/arrays.xml
+++ b/res/values-sr/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Актовка"</item>
+ <item msgid="184985872234062767">"Класична зграда"</item>
+ <item msgid="9189550412466785530">"Стамбена зграда"</item>
+ <item msgid="2142527562511049422">"Облачић"</item>
+ <item msgid="2548100558260478605">"Група људи"</item>
+ <item msgid="2270003903304578284">"Сијалица"</item>
+ <item msgid="4793496619091161864">"Календар"</item>
+ <item msgid="5673625795644364100">"Не узнемиравај"</item>
+ <item msgid="1423820834865831361">"Особа која трчи"</item>
+ <item msgid="2037298830718732608">"Голф"</item>
+ <item msgid="2197835014443491074">"Тег за теретану"</item>
+ <item msgid="2730180105015616518">"Пливање"</item>
+ <item msgid="2666922823253345958">"Особа која пешачи"</item>
+ <item msgid="8234880356472211396">"Особа која баца лопту"</item>
+ <item msgid="4642980625253001443">"Особа која шутира"</item>
+ <item msgid="4324795269518833500">"Контролер за игре"</item>
+ <item msgid="7789966425125441125">"Палета боја уметника"</item>
+ <item msgid="663512680597461570">"Пахуља"</item>
+ <item msgid="7952183800501346803">"Сунцобран"</item>
+ <item msgid="799139025758265891">"Алат из радионице"</item>
+ <item msgid="8112685757657659269">"Клавир"</item>
+ <item msgid="3861584909935022342">"Ролна филма"</item>
+ <item msgid="5827426100157335512">"Књига"</item>
+ <item msgid="8585828346253128384">"Цвет лотоса"</item>
+ <item msgid="8788370542815300188">"Људски мозак"</item>
+ <item msgid="7287354964767553293">"Слушалице"</item>
+ <item msgid="2530059623783800987">"ТВ"</item>
+ <item msgid="5307182323469376758">"Воз"</item>
+ <item msgid="4903790544026923026">"Аутомобил"</item>
+ <item msgid="5010405583912314582">"Виљушка и нож"</item>
+ <item msgid="8939998598599064900">"Колица за куповину"</item>
+ <item msgid="3379605903308731893">"Дете"</item>
+ <item msgid="7808668968550293112">"Шапа животиње"</item>
+ <item msgid="1000692647524056504">"Значка са звездицом"</item>
+ <item msgid="8270261073421676502">"Две особе"</item>
+ <item msgid="5767782819651505460">"Звезда"</item>
+ <item msgid="4368451291862729334">"Срце"</item>
+ <item msgid="2613199102208419986">"Кућа"</item>
+ <item msgid="3022279986430275040">"Полумесец"</item>
+ <item msgid="5421089790869483206">"Сат"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 922dd81..b6df20e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Упарите нови уређај"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Аутоматски укључи сутра"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Ако искључите Bluetooth, поново ће се укључити следећег дана"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Упари десно уво"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Упари лево уво"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Упарите друго уво"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Онемогући Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Онемогућава функцију Bluetooth LE audio ако уређај подржава могућности LE audio хардвера."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio режим"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Омогући преглед корисничког интерфејса за Bluetooth LE Audio емитовање"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Омогућава преглед корисничког интерфејса за Bluetooth LE Audio, укључујући дељење личних аудио снимака и приватно емитовање"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"LE Audio прекидач у детаљима о уређају"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Заобиђи Bluetooth LE Audio листу дозвољених"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Подразумевано користи LE Audio чак и ако није потврђено да LE Audio периферни уређај задовољава критеријуме листе дозвољених."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Аутоматско подешавање помоћу мреже и бежичних сигнала"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Аутоматска временска зона"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Аутоматско подешавање на основу мобилних мрежа у близини"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Аутоматско подешавање помоћу локације уређаја, ако је доступна"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Користи подразумевану вредност за локалитет"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Користи 24-часовни формат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Време"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Подигните прст, па поново додирните сензор"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Не можете да користите сензор за отисак прста"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Посетите добављача за поправке."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Откључавање отиском прста када је екран искључен"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Користите откључавање отиском прста чак и када је екран искључен"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Искључен екран, откључавање"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Још безбедносних подешавања"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Закључавање пословног профила, шифровање и друго"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифровање, акредитиви и друго"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Тастатура занемарује брзе притиске истог тастера који се понављају"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Праг за дужи одзив тастера"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Одаберите колико дуго тастатура занемарује понављане притиске тастера"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 сек"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 сек"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 сек"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 сек"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 сек"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 сек"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Прилагођено"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"прилагођена вредност"</string>
<string name="slow_keys" msgid="2891452895499690837">"Спори тастери"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Прилагодите време за активирање тастера после притиска"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Лепљиви тастери"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Притискајте један по један тастер да бисте користили пречице уместо да истовремено држите тастере"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Тастери миша"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Користите тастере миша"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Контролишите показивач помоћу тастатуре"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Обрнуто скроловање мишем"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Скролујте нагоре да бисте померили страницу надоле"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Замените дугмад налево и надесно"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Користите леви тастер миша као десни"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Тастери миша за: <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Користите тастере <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> да бисте померили показивач миша"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Користите тастер <xliff:g id="CLICK_LABEL">%s</xliff:g> да бисте кликнули на примарно дугме миша"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Користите тастер <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> да бисте притиснули и задржали примарни тастер миша"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Користите тастер <xliff:g id="RELEASE_LABEL">%s</xliff:g> да бисте ослободили примарно дугме миша"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Користите тастер <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> да бисте укључили или искључили режим скроловања. Тако ћете помоћу тастера <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> скроловати приказ нагоре, надоле, улево или удесно"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Користите тастер <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> да бисте кликнули на секундарно дугме миша"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Тастерске пречице"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Приказује листу пречица"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Тастатуре и алатке за пословни профил"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Одаберите нови тастер за <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Приступачност физичке тастатуре"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Лепљиви тастери, дужи одзив тастера, тастери миша"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Понављање тастера"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Одлагање пре понављања"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Брзина понављања"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Притисните и задржите тастер да бисте понављали унос знака све док не пустите тастер"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Распоред <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Подразумевано"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Аутоматски: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2415,8 +2426,8 @@
<string name="accessibility_description_state_stopped" msgid="5364752492861199133">"Ова услуга није исправна."</string>
<string name="accessibility_shortcuts_settings_title" msgid="974740249671825145">"Пречице за приступачност"</string>
<string name="enable_quick_setting" msgid="6648073323202243604">"Прикажи у Брзим подешавањима"</string>
- <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Црвена/зелена, делимично слепило за зелену"</string>
- <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Црвена/зелена, делимично слепило за црвену"</string>
+ <string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"Црвено-зелено, делимично слепило за зелену"</string>
+ <string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"Црвено-зелено, делимично слепило за црвену"</string>
<string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"Плаво-жуто"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Сивило"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Интензитет"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Прилагођавање коришћења напајања"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Садржани пакети"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Апликације раде уобичајено"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Препоручујемо замену батерије"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Капацитет батерије и учинак пуњења су смањени и препоручујемо замену батерије."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Низак ниво напуњености батерије"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Укључите уштеду батерије да бисте продужили трајање батерије"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Продужите трајање батерије"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Желите ли да прекинете везу са овим VPN-ом?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Прекини везу"</string>
<string name="vpn_version" msgid="6344167191984400976">"Верзија"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Верзија <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Заборави VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Желите ли да замените постојећи VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Желите ли да подесите увек укључени VPN?"</string>
@@ -3406,12 +3418,12 @@
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Направите свој режим"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Добијајте обавештења само од важних особа и апликација"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Подесите распоред"</string>
- <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Распоред заснован на"</string>
+ <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"Основа распореда"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"Дан и време"</string>
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"9:00–17:00 радним данима"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Догађаји у календару"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Активан је {mode_1}}=2{Активни су {mode_1} и {mode_2}}=3{Активни су {mode_1}, {mode_2} и {mode_3}}one{Активни су {mode_1}, {mode_2} и још # режим}few{Активни су {mode_1}, {mode_2} и још # режима}other{Активни су {mode_1}, {mode_2} и још # режима}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режим може да се укључује аутоматски}one{# режим може да се укључује аутоматски}few{# режима могу да се укључују аутоматски}other{# режима може да се укључује аутоматски}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Не узнемиравај}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"УКЉУЧЕНО"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Није подешено"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Онемогућено"</string>
@@ -3434,7 +3446,7 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Измени"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Распореди"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Распоред"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Када се искључује аутоматски"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"Када се укључује аутоматски"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"Распоред догађаја"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"Укључите током догађаја за"</string>
<string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"Када је одговор на позив"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Када примите много обавештења у кратком периоду, уређај ће утишати звук и смањити број упозорења на највише два минута. То не утиче на позиве, аларме ни приоритетне конверзације. \n\nОбавештења која добијете током утишавања можете да пронађете повлачењем надоле од врха екрана."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Примени на пословне профиле"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Примените на апликације пословног профила"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Услуге помагача за виртуелну реалност"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Ниједна инсталирана апликација није захтевала да се покрене као услуга помагача за виртуелну реалност."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Дозвољавате приступ услузи виртуелне реалности за <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5460,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Слушајте стрим"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Скенирајте QR кôд аудио стрима да бисте слушали помоћу: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Лозинка не може да се мења током дељења. Да бисте променили лозинку, прво искључите дељење звука."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Лозинка мора да садржи од 4 до 16 знакова и може да садржи само слова, бројеве и симболе"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Скенер QR кода"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Треба вам помоћ?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Подешавања претраге"</string>
@@ -5468,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Само уређај"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Нови контакти се неће синхронизовати са налогом"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Контакти се подразумевано чувају на уређају и синхронизују са налогом"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Није подешен подразумевани налог"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Грешка при подешавању подразумеваног налога"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Није подешен подразумевани налог"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Само уређај"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Додајте налог да бисте започели"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Претрага заокруживањем"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Додирните и задржите дугме Почетак или маркер за кретање да бисте претраживали помоћу садржаја на екрану."</string>
</resources>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index 5878b60..48b1fa6 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Portfölj"</item>
+ <item msgid="184985872234062767">"Klassisk byggnad"</item>
+ <item msgid="9189550412466785530">"Hyreshus"</item>
+ <item msgid="2142527562511049422">"Pratbubbla"</item>
+ <item msgid="2548100558260478605">"En grupp människor"</item>
+ <item msgid="2270003903304578284">"Glödlampa"</item>
+ <item msgid="4793496619091161864">"Kalender"</item>
+ <item msgid="5673625795644364100">"Stör ej"</item>
+ <item msgid="1423820834865831361">"Person som springer"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Gymhantel"</item>
+ <item msgid="2730180105015616518">"Simning"</item>
+ <item msgid="2666922823253345958">"Person som vandrar"</item>
+ <item msgid="8234880356472211396">"Person som kastar boll"</item>
+ <item msgid="4642980625253001443">"Person som sparkar"</item>
+ <item msgid="4324795269518833500">"Spelkontroll"</item>
+ <item msgid="7789966425125441125">"Färgpalett för konstnär"</item>
+ <item msgid="663512680597461570">"Snöflinga"</item>
+ <item msgid="7952183800501346803">"Strandparasoll"</item>
+ <item msgid="799139025758265891">"Verktyg"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Filmrulle"</item>
+ <item msgid="5827426100157335512">"Bok"</item>
+ <item msgid="8585828346253128384">"Lotusblomma"</item>
+ <item msgid="8788370542815300188">"Persons sinne"</item>
+ <item msgid="7287354964767553293">"Hörlurar"</item>
+ <item msgid="2530059623783800987">"Tv"</item>
+ <item msgid="5307182323469376758">"Tåg"</item>
+ <item msgid="4903790544026923026">"Bil"</item>
+ <item msgid="5010405583912314582">"Gaffel och kniv"</item>
+ <item msgid="8939998598599064900">"Kundvagn"</item>
+ <item msgid="3379605903308731893">"Barn"</item>
+ <item msgid="7808668968550293112">"Djurtass"</item>
+ <item msgid="1000692647524056504">"Stjärnmärke"</item>
+ <item msgid="8270261073421676502">"Två personer"</item>
+ <item msgid="5767782819651505460">"Stjärna"</item>
+ <item msgid="4368451291862729334">"Hjärta"</item>
+ <item msgid="2613199102208419986">"House"</item>
+ <item msgid="3022279986430275040">"Halvmåne"</item>
+ <item msgid="5421089790869483206">"Klocka"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 43fa809..75c8135 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Parkoppla en ny enhet"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Aktivera automatiskt i morgon"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Om du stänger av Bluetooth aktiveras det igen nästa dag"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Parkoppla höger"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Parkoppla vänster"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Parkoppla andra örat"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Inaktivera Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Inaktiverar Bluetooth LE Audio-funktionen om enheten har stöd för funktioner för LE Audio-hårdvara."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio-läge"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Aktivera förhandsgranskning av användargränssnittet för Bluetooth LE Audio-sändning"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Aktiverar förhandsgranskningen av användargränssnittet för LE Audio-delning, inklusive delning av personligt ljud och privat sändning"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Visa reglage för LE Audio i Enhetsinfo"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Hoppa över godkännandelistan för Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Använd LE Audio som standard även om LE Audio-kringutrustningen inte har bekräftats uppfylla kraven för godkännandelistan."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Ställ in automatiskt med nätverk och trådlösa signaler"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Automatisk tidszon"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Ställ in automatiskt utifrån mobilnätverk i närheten"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Ställ in automatiskt med enhetens plats, om tillgängligt"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Använd lokal standard"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Använd 24-timmarsformat"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Tid"</string>
@@ -300,7 +302,7 @@
<string name="security_status_title" msgid="6958004275337618656">"Säkerhetsstatus"</string>
<string name="security_dashboard_summary" msgid="7571035662779425918">"Skärmlås, Hitta min enhet, appsäkerhet"</string>
<string name="safety_center_title" msgid="7732397372178774777">"Säkerhet och integritet"</string>
- <string name="safety_center_summary" msgid="3554867379951053869">"Appsäkerhet, enhetslås, behörigheter"</string>
+ <string name="safety_center_summary" msgid="3554867379951053869">"Appsäkerhet, enhetslås och behörigheter"</string>
<string name="security_settings_face_preference_summary" msgid="6675126437396914838">"Ansikte har lagts till"</string>
<string name="security_settings_face_preference_summary_none" msgid="523320857738436024">"Konfigurering krävs"</string>
<string name="security_settings_face_preference_title" msgid="2126625155005348417">"Ansiktslås"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Lyft fingret och nudda sedan sensorn igen"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Det går inte att använda fingeravtryckssensorn"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Besök ett reparationsställe."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Skärmen av, fingeravtryckslås"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Använd fingeravtryckslås även när skärmen är av"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Skärmen av, lås upp"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Fler säkerhetsinställningar"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Lås för jobbprofilen, kryptering med mera"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Kryptering, användaruppgifter med mera"</string>
@@ -561,9 +566,9 @@
<string name="security_header" msgid="961514795852103424">"Säkerhet"</string>
<string name="privacy_header" msgid="5526002421324257007">"Integritet"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Jobbprofil"</string>
- <string name="private_space_title" msgid="1752064212078238723">"Privat område"</string>
+ <string name="private_space_title" msgid="1752064212078238723">"Privat utrymme"</string>
<string name="private_space_summary" msgid="2274405892301976238">"Håll privata appar låsta och dolda"</string>
- <string name="private_space_description" msgid="4059594203775816136">"Ha privata appar i ett separat rum som du kan dölja eller låsa"</string>
+ <string name="private_space_description" msgid="4059594203775816136">"Ha privata appar i ett separat utrymme som du kan dölja eller låsa"</string>
<string name="private_space_lock_title" msgid="7230836881433350526">"Lås privat utrymme"</string>
<string name="private_space_one_lock_summary" msgid="2106513606571219068">"Du kan låsa upp ditt privata utrymme på samma sätt som du låser upp din enhet, eller så väljer du ett annat lås"</string>
<string name="private_space_screen_lock_title" msgid="8679383894967823163">"Använd skärmlåset för enheten"</string>
@@ -613,25 +618,25 @@
<string name="private_space_accounts" msgid="1078277762792056395">"Följande konton tas bort från det privata utrymmet:"</string>
<string name="private_space_delete_button_label" msgid="1256981385318225002">"Radera"</string>
<string name="private_space_confirm_deletion_header" msgid="3468651585498942977">"Raderar privat utrymme …"</string>
- <string name="private_space_deleted" msgid="7692240901492540053">"Privat område har raderats"</string>
+ <string name="private_space_deleted" msgid="7692240901492540053">"Privat utrymme har raderats"</string>
<string name="private_space_delete_failed" msgid="7705795653796174741">"Det gick inte att radera privat utrymme"</string>
- <string name="private_space_unlocked" msgid="9091600948712932046">"Privat område är upplåst"</string>
+ <string name="private_space_unlocked" msgid="9091600948712932046">"Privat utrymme är upplåst"</string>
<string name="no_device_lock_title" msgid="1078223464721029954">"Ställ in skärmlås"</string>
<string name="no_device_lock_summary" msgid="7436025227616244687">"Ställ in ett skärmlås för enheten om du vill använda ditt privata rum."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Konfigurera skärmlås"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Avbryt"</string>
<string name="private_space_cancel_label" msgid="379259667396956886">"Avbryt"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"Ställ in"</string>
- <string name="private_space_setup_title" msgid="2272968244329821450">"Privat område"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Dölj eller lås privata appar i ett separat område. Använd ett dedikerat Google-konto för extra säkerhet."</string>
+ <string name="private_space_setup_title" msgid="2272968244329821450">"Privat utrymme"</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Dölj eller lås privata appar i ett separat utrymme. Använd ett dedikerat Google-konto för extra säkerhet."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Så fungerar det"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Skapa ett Google-konto för ditt privata utrymme"</b>\n"Om du använder ett separat konto förhindrar det att synkroniserade filer, foton och e-postmeddelanden visas utanför det privata utrymmet"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Ställ in ett lås"</b>\n"Lås ditt område så att andra inte kan öppna det"</string>
- <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installera appar"</b>\n"Installera appar som du vill hålla privata i området"</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Ställ in ett lås"</b>\n"Lås ditt utrymme så att andra inte kan öppna det"</string>
+ <string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installera appar"</b>\n"Installera appar som du vill hålla privata i utrymmet"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Viktigt att tänka på"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Appar stoppas när du låser ditt privata utrymme"</b>\n"När du låser ditt privata utrymme stoppas apparna i området och du får inga aviseringar från dem"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privata områden lämpar sig inte för appar som måste köras i bakgrunden eller skicka viktig information, till exempel medicinska appar. Detta beror på att aviseringar och aktivitet i bakgrunden stoppas när du låser området.\n\nAppar som finns i ditt privata utrymme visas inte i behörighetshanteraren, på integritetsöversikten eller i andra inställningar när området är låst.\n\nDet går inte att flytta ditt privata utrymme till en ny enhet. Du måste ställa in ett nytt privat utrymme om du vill använda det på en annan enhet.\n\nAlla som ansluter din enhet till en dator eller installerar skadliga appar på enheten kanske kan få åtkomst till ditt privata utrymme."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privata områden lämpar sig inte för appar som måste köras i bakgrunden eller skicka viktig information, till exempel medicinska appar. Detta beror på att aviseringar och aktivitet i bakgrunden stoppas när du låser området.\n\nAppar som finns i ditt privata utrymme visas inte i behörighetshanteraren, på integritetsöversikten eller i andra inställningar när området är låst.\n\nDet går inte att återställa ditt privata utrymme på en ny enhet. Du måste ställa in ett nytt område om du vill använda det på en annan enhet.\n\nOm någon ansluter din enhet till en dator eller installerar skadliga appar på enheten kan det hända att hen får åtkomst till ditt privata utrymme."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privata utrymmen lämpar sig inte för appar som måste köras i bakgrunden eller skicka viktig information, till exempel medicinska appar. Detta beror på att aviseringar och aktivitet i bakgrunden stoppas när du låser utrymmet.\n\nAppar som finns i ditt privata utrymme visas inte i behörighetshanteraren, på integritetsöversikten eller i andra inställningar när utrymmet är låst.\n\nDet går inte att flytta ditt privata utrymme till en ny enhet. Du måste ställa in ett nytt privat utrymme om du vill använda det på en annan enhet.\n\nAlla som ansluter din enhet till en dator eller installerar skadliga appar på enheten kanske kan få åtkomst till ditt privata utrymme."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privata utrymmen lämpar sig inte för appar som måste köras i bakgrunden eller skicka viktig information, till exempel medicinska appar. Detta beror på att aviseringar och aktivitet i bakgrunden stoppas när du låser utrymmet.\n\nAppar som finns i ditt privata utrymme visas inte i behörighetshanteraren, på integritetsöversikten eller i andra inställningar när utrymmet är låst.\n\nDet går inte att återställa ditt privata utrymme på en ny enhet. Du måste ställa in ett nytt utrymme om du vill använda det på en annan enhet.\n\nOm någon ansluter din enhet till en dator eller installerar skadliga appar på enheten kan det hända att hen får åtkomst till ditt privata utrymme."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Läs mer om privat utrymme"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Detta tar en stund"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Ställer in privat utrymme …"</string>
@@ -851,7 +856,7 @@
<string name="bluetooth_empty_list_bluetooth_off_auto_on_available" msgid="3430864468105204282">"När Bluetooth är aktiverat kan enheten kommunicera med andra Bluetooth-enheter i närheten. Funktioner som Snabbdelning och Hitta min enhet använder Bluetooth."</string>
<string name="bluetooth_scanning_on_info_message" msgid="786648535600075223">"När Bluetooth är aktiverat kan enheten kommunicera med andra Bluetooth-enheter i närheten.\n\nÄven när Bluetooth är inaktiverat kan appar och tjänster när som helst söka efter enheter i närheten för att förbättra användningen av enheten. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster. Du kan ändra inställningen i genomsökningsinställningarna för Bluetooth."</string>
<string name="bluetooth_scanning_on_info_message_auto_on_available" msgid="7792443293031247638">"När Bluetooth är aktiverat kan enheten kommunicera med andra Bluetooth-enheter i närheten. Funktioner som Snabbdelning och Hitta min enhet använder Bluetooth.\n\nAppar och tjänster kan fortfarande söka efter enheter i närheten när som helst, även när Bluetooth är inaktiverat. Detta kan till exempel användas för att förbättra platsbaserade funktioner och tjänster. Du kan ändra detta i inställningarna för Bluetooth-sökning."</string>
- <string name="bluetooth_scan_change" msgid="1744636222637390367">"Ändring"</string>
+ <string name="bluetooth_scan_change" msgid="1744636222637390367">"Ändra"</string>
<string name="bluetooth_key_missing_title" msgid="7799054163548353853">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> är inte ansluten"</string>
<string name="bluetooth_key_missing_message" msgid="2388861106663695319">"Glöm enheten och parkoppla den igen för säkerhets skull"</string>
<string name="bluetooth_key_missing_forget" msgid="4692006517823001013">"Glöm enhet"</string>
@@ -1558,7 +1563,7 @@
<string name="reset_esim_error_title" msgid="6516110227665862295">"Det gick inte att rensa dessa eSIM"</string>
<string name="reset_esim_error_msg" msgid="8459527827897797168">"Något gick fel och dina eSIM rensades inte.\n\nStarta om enheten och försök igen."</string>
<string name="reset_private_space_delete_title" msgid="2555885198282572990">"Radera privat utrymme"</string>
- <string name="reset_private_space_delete_dialog" msgid="2325106559507364385">"Om du har ett privat utrymme på din enhet tas det bort permanent och Google-kontot som lagts till för ditt område att tas bort. \n\nAlla appar i ditt område och tillhörande data tas bort från telefonens "<b>"interna lagringsutrymme"</b>"."</string>
+ <string name="reset_private_space_delete_dialog" msgid="2325106559507364385">"Om du har ett privat utrymme på din enhet tas det bort permanent och Google-kontot som lagts till för ditt utrymme att tas bort. \n\nAlla appar i ditt utrymme och tillhörande data tas bort från telefonens "<b>"interna lagringsutrymme"</b>"."</string>
<string name="main_clear_title" msgid="277664302144837723">"Rensa all data (återställ standardinst.)"</string>
<string name="main_clear_short_title" msgid="4752094765533020696">"Rensa all data (återställ standardinst.)"</string>
<string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"musik"</li>\n<li>"foton"</li>\n<li>"annan användardata"</li></string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Tangentbordet ignorerar snabbt upprepade tryck på samma tangent"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Gräns för studsande tangent"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Välj hur länge tangentbordet ska ignorera upprepade tangenttryckningar"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Anpassat"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"anpassat värde"</string>
<string name="slow_keys" msgid="2891452895499690837">"Långsamma tangenter"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Justerar tiden det tar innan ett tryck på en tangent aktiveras"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Låstangentsläge"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Tryck ned en tangent i taget för kortkommandon i stället för att hålla ned flera tangenter samtidigt"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Musknappar"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Använd mustangenter"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Använd tangentbordet för att styra pekaren"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Omvänd scrollning på musen"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Scrolla uppåt för att flytta sidan nedåt"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Byt plats på vänster och höger knapp"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Använd vänster musknapp som höger"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Mustangenter för <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Använd tangenterna <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> för att flytta muspekaren"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Använd tangenten <xliff:g id="CLICK_LABEL">%s</xliff:g> för att klicka med den primära musknappen"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Använd tangenten <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> för att hålla den primära musknappen nedtryckt"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Använd tangenten <xliff:g id="RELEASE_LABEL">%s</xliff:g> för att släppa den primära musknappen"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Använd tangenten <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> för att aktivera och inaktivera scrollningsläget. Då scrollar tangenterna <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> vyn uppåt, nedåt, åt vänster och åt höger"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Använd tangenten <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> för att klicka med den sekundära musknappen"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Kortkommandon"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Visa en lista över genvägar"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Tangentbord och verktyg för jobbprofilen"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Välj en ny tangent för <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Tillgänglighet för fysiskt tangentbord"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Låstangentsläge, studsande tangenter, musknappar"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Upprepa tangenter"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Fördröjning före upprepning"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Upprepningsfrekvens"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Håll ned en tangent för att upprepa tecknet tills du släpper tangenten"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Layouten <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Standard"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Automatiskt: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2097,7 +2108,7 @@
<string name="usage_time_label" msgid="9105343335151559883">"Användningstid"</string>
<string name="accessibility_settings" msgid="4713215774904704682">"Tillgänglighet"</string>
<string name="accessibility_settings_title" msgid="6739115703615065716">"Tillgänglighetsinställningar"</string>
- <string name="accessibility_settings_summary" msgid="2366627644570558503">"Skärm, interaktion, ljud"</string>
+ <string name="accessibility_settings_summary" msgid="2366627644570558503">"Skärm, interaktion och ljud"</string>
<string name="vision_settings_title" msgid="8919983801864103069">"Syninställningar"</string>
<string name="vision_settings_description" msgid="7614894785054441991">"Du kan anpassa enheten efter dina behov. Tillgänglighetsfunktionerna kan ändras senare under Inställningar."</string>
<string name="vision_settings_suggestion_title" msgid="4689275412658803919">"Ändra teckenstorlek"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Justera strömförbrukningen"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Inkluderade paket"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Appar körs som vanligt"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Batteribyte rekommenderas"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Batterikapaciteten och laddningsprestandan har minskat och ett batteribyte rekommenderas."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Låg batterinivå"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Förläng batteritiden genom att aktivera batterisparläget"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Förbättra batteritiden"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vill du koppla från VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Koppla från"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Glöm VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Vill du byta ut befintligt VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Vill du ställa in Alltid på-VPN?"</string>
@@ -3216,10 +3228,10 @@
<string name="sim_selection_channel_title" msgid="3193666315607572484">"Val av SIM"</string>
<string name="dashboard_title" msgid="5660733037244683387">"Inställningar"</string>
<string name="network_dashboard_title" msgid="788543070557731240">"Nätverk och internet"</string>
- <string name="network_dashboard_summary_mobile" msgid="7750924671970583670">"Mobil, wifi, surfzon"</string>
+ <string name="network_dashboard_summary_mobile" msgid="7750924671970583670">"Mobil, wifi och surfzon"</string>
<string name="network_dashboard_summary_no_mobile" msgid="4022575916334910790">"Wifi, surfzon"</string>
<string name="connected_devices_dashboard_title" msgid="19868275519754895">"Anslutna enheter"</string>
- <string name="connected_devices_dashboard_default_summary" msgid="7211769956193710397">"Bluetooth, parkoppling"</string>
+ <string name="connected_devices_dashboard_default_summary" msgid="7211769956193710397">"Bluetooth och parkoppling"</string>
<string name="connected_devices_dashboard_summary" msgid="6927727617078296491">"Bluetooth, körläge, NFC"</string>
<string name="connected_devices_dashboard_no_nfc_summary" msgid="8424794257586524040">"Bluetooth, körläge"</string>
<string name="connected_devices_dashboard_no_driving_mode_summary" msgid="7155882619333726331">"Bluetooth, NFC"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"”Vardagar kl. 9.00–17.00”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Kalenderhändelser"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} är aktivt}=2{{mode_1} och {mode_2} är aktiva}=3{{mode_1}, {mode_2} och {mode_3} är aktiva}other{{mode_1}, {mode_2} och # till är aktiva}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 läge kan aktiveras automatiskt}other{# lägen kan aktiveras automatiskt}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Stör ej}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"PÅ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Inte angivet"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Inaktiverat"</string>
@@ -3526,7 +3538,7 @@
<string name="zen_category_behavior" msgid="3214056473947178507">"Vad får avbryta Stör ej"</string>
<string name="zen_category_people" msgid="8252926021894933047">"Personer"</string>
<string name="zen_category_apps" msgid="1167374545618451925">"Appar"</string>
- <string name="zen_category_exceptions" msgid="1316097981052752811">"Alarm och andra störningsmoment"</string>
+ <string name="zen_category_exceptions" msgid="1316097981052752811">"Alarm och andra avbrott"</string>
<string name="zen_category_schedule" msgid="2003707171924226212">"Scheman"</string>
<string name="zen_category_duration" msgid="7515850842082631460">"Varaktighet för snabbinställningar"</string>
<string name="zen_settings_general" msgid="2704932194620124153">"Allmänt"</string>
@@ -3547,7 +3559,7 @@
<string name="work_sync_dialog_yes" msgid="5785488304957707534">"Bekräfta"</string>
<string name="work_sync_dialog_message" msgid="5066178064994040223">"Samma ljud används för både jobbprofilen och den privata profilen"</string>
<string name="configure_notification_settings" msgid="1492820231694314376">"Aviseringar"</string>
- <string name="notification_dashboard_summary" msgid="7530169251902320652">"Aviseringshistorik, konversationer"</string>
+ <string name="notification_dashboard_summary" msgid="7530169251902320652">"Aviseringshistorik och konversationer"</string>
<string name="conversation_notifs_category" msgid="2549844862379963273">"Konversation"</string>
<string name="general_notification_header" msgid="3669031068980713359">"Hantera"</string>
<string name="app_notification_field" msgid="3208079070539894909">"Appaviseringar"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"När du får många aviseringar på kort tid kommer enheten att sänka volymen och minimera aviseringar i upp till två minuter. Samtal, alarm och prioriterade konversationer påverkas inte. \n\nDu kan hitta aviseringarna som tas emot under den gradvisa sänkningen genom att dra nedåt från skärmens överkant."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Använd för jobbprofiler"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Tillämpa på jobbprofilappar"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Hjälptjänster för VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Inga installerade appar har begärt att få köras som hjälptjänster för VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Vill du tillåta att tjänsten för VR får tillgång till <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3857,7 +3879,7 @@
<string name="zen_mode_alarms_list_first" msgid="2780418316613576610">"Alarm"</string>
<string name="zen_mode_media" msgid="885017672250984735">"Medieljud"</string>
<string name="zen_mode_media_summary" msgid="7174081803853351461">"Ljud från videor, spel och annan media"</string>
- <string name="zen_mode_media_list" msgid="2006413476596092020">"ljud från video"</string>
+ <string name="zen_mode_media_list" msgid="2006413476596092020">"media"</string>
<string name="zen_mode_media_list_first" msgid="7824427062528618442">"Media"</string>
<string name="zen_mode_system" msgid="7301665021634204942">"Ljud vid tryck"</string>
<string name="zen_mode_system_summary" msgid="7225581762792177522">"Ljud från tangentbordet och andra knappar"</string>
@@ -3874,7 +3896,7 @@
<string name="zen_mode_apps_title" msgid="1691010857014041183">"Appar"</string>
<string name="zen_mode_apps_category" msgid="4082380323683889391">"Appar som får störa dig"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Valda appar"</string>
- <string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ingen"</string>
+ <string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Inga"</string>
<string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Inga appar får avbryta}=1{{app_1} får avbryta}=2{{app_1} och {app_2} får avbryta}=3{{app_1}, {app_2} och {app_3} får avbryta}other{{app_1}, {app_2} och # till får avbryta}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (jobbet)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"Beräknar …"</string>
@@ -3921,7 +3943,7 @@
<string name="zen_mode_new_custom_title" msgid="7513785385574267851">"Skapa ett läge"</string>
<string name="zen_mode_new_custom_default_name" msgid="2778307946775085105">"Anpassat läge"</string>
<string name="zen_mode_edit_name_hint" msgid="4584652062167540536">"Lägesnamn"</string>
- <string name="zen_mode_edit_name_empty_error" msgid="5788063278827188275">"Namnet på läget får inte vara tomt"</string>
+ <string name="zen_mode_edit_name_empty_error" msgid="5788063278827188275">"Du måste ange ett lägesnamn"</string>
<string name="zen_mode_edit_choose_icon_title" msgid="6452801577128788362">"Välj en ikon"</string>
<string name="zen_mode_trigger_title_schedule_calendar" msgid="9206609438617550331">"Kalenderhändelser"</string>
<string name="zen_mode_trigger_title_bedtime" msgid="3287241454965736913">"Läggdagsrutin"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Lyssna på streamen"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skanna QR-koden för en ljudstream om du vill lyssna med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Det går inte att redigera lösenordet medan delning pågår. Om du vill byta lösenord måste du först stänga av ljuddelningen."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Lösenordet måste innehålla 4–16 tecken och endast bokstäver, siffror och symboler"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-skanner"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Behöver du hjälp?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Sökinställningar"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Endast enheten"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Nya kontakter synkroniseras inte med ett konto"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kontakter sparas på enheten och synkroniseras med kontot som standard"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ingen standardinställning har angetts"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Det gick inte att ställa in standardkontot"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Inget standardkonto har angetts"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Endast enheten"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Lägg till ett konto för att komma igång"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Tryck länge på hemknappen eller navigeringshandtaget för att söka med innehållet på skärmen."</string>
</resources>
diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml
index f1aa49e..c393fc12 100644
--- a/res/values-sw/arrays.xml
+++ b/res/values-sw/arrays.xml
@@ -361,7 +361,7 @@
</string-array>
<string-array name="accessibility_button_gesture_selector_titles">
<item msgid="2370918472773154939">"Kitufe"</item>
- <item msgid="6922258575853746220">"Ishara"</item>
+ <item msgid="6922258575853746220">"Mguso"</item>
</string-array>
<string-array name="accessibility_button_size_selector_titles">
<item msgid="7482952318152486459">"Kidogo"</item>
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Mkoba"</item>
+ <item msgid="184985872234062767">"Jengo la zamani"</item>
+ <item msgid="9189550412466785530">"Jengo la fleti"</item>
+ <item msgid="2142527562511049422">"Kiputo cha maneno"</item>
+ <item msgid="2548100558260478605">"Kikundi cha watu"</item>
+ <item msgid="2270003903304578284">"Balbu ya umeme"</item>
+ <item msgid="4793496619091161864">"Kalenda"</item>
+ <item msgid="5673625795644364100">"Usinisumbue"</item>
+ <item msgid="1423820834865831361">"Mtu anayekimbia"</item>
+ <item msgid="2037298830718732608">"Gofu"</item>
+ <item msgid="2197835014443491074">"Vyuma vya mazoezi"</item>
+ <item msgid="2730180105015616518">"Kuogelea"</item>
+ <item msgid="2666922823253345958">"Mtu anayekwea mlima"</item>
+ <item msgid="8234880356472211396">"Mtu anayerusha mpira"</item>
+ <item msgid="4642980625253001443">"Mtu anayepiga teke"</item>
+ <item msgid="4324795269518833500">"Kidhibiti cha mchezo"</item>
+ <item msgid="7789966425125441125">"Safu ya rangi ya msanii"</item>
+ <item msgid="663512680597461570">"Kipande kidogo sana cha theluji"</item>
+ <item msgid="7952183800501346803">"Mwamvuli wa ufukweni"</item>
+ <item msgid="799139025758265891">"Zana za karakana"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Ukanda wa filamu"</item>
+ <item msgid="5827426100157335512">"Kitabu"</item>
+ <item msgid="8585828346253128384">"Ua la yungiyungi"</item>
+ <item msgid="8788370542815300188">"Mawazo ya mtu"</item>
+ <item msgid="7287354964767553293">"Vipokea sauti vya kichwani"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Treni"</item>
+ <item msgid="4903790544026923026">"Gari"</item>
+ <item msgid="5010405583912314582">"Uma na kisu"</item>
+ <item msgid="8939998598599064900">"Kikapu"</item>
+ <item msgid="3379605903308731893">"Mtoto"</item>
+ <item msgid="7808668968550293112">"Wayo wa mnyama mwenye makucha"</item>
+ <item msgid="1000692647524056504">"Beji ya nyota"</item>
+ <item msgid="8270261073421676502">"Watu wawili"</item>
+ <item msgid="5767782819651505460">"Nyota"</item>
+ <item msgid="4368451291862729334">"Moyo"</item>
+ <item msgid="2613199102208419986">"Nyumba"</item>
+ <item msgid="3022279986430275040">"Nusu-mwezi"</item>
+ <item msgid="5421089790869483206">"Saa"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 6f3e3de..3d9d2d0 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Unganisha kifaa kipya"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Washa kesho kiotomatiki"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Unganisha kisaidizi cha kulia"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Unganisha kisaidizi cha kushoto"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Unganisha kisaidizi cha sikio jingine"</string>
@@ -114,12 +116,14 @@
<string name="bluetooth_disable_a2dp_hw_offload" msgid="5942913792817797541">"Zima upakiaji wa maunzi kwa Bluetooth A2DP"</string>
<string name="bluetooth_disable_le_audio_hw_offload" msgid="4656853795514691257">"Zima upakiaji wa maunzi kwa kipengele cha Bluetooth LE audio"</string>
<string name="bluetooth_disable_hw_offload_dialog_title" msgid="6001142380445276918">"Ungependa Kuzima kisha Uwashe Kifaa?"</string>
- <string name="bluetooth_disable_hw_offload_dialog_message" msgid="1524373895333698779">"Unahitaji uwashe upya kifaa chako ili ubadilishe mipangilio hii."</string>
+ <string name="bluetooth_disable_hw_offload_dialog_message" msgid="1524373895333698779">"Unafaa kuwasha upya kifaa chako ili kubadilisha mipangilio hii."</string>
<string name="bluetooth_disable_hw_offload_dialog_confirm" msgid="5594859658551707592">"Zima kisha uwashe"</string>
<string name="bluetooth_disable_hw_offload_dialog_cancel" msgid="3663690305043973720">"Ghairi"</string>
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Zima Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Huzima kipengele cha Bluetooth LE audio ikiwa kifaa kinatumia maunzi yenye uwezo wa kutumia LE audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Hali ya Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Washa mipangilio ya toleo tangulizi la kiolesura cha Arifa ya Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Huwasha mipangilio ya toleo tangulizi la kiolesura cha LE Audio ya kusikiliza pamoja ikijumuisha kusikiliza pamoja na arifa za faragha"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Onyesha LE Audio kwenye Maelezo ya Kifaa"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Kwepa Faili Zilizoruhusiwa za Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Tumia LE Audio kwa chaguomsingi hata ikiwa kifaa cha LE Audio hakijathibitishwa kuwa kimetimiza masharti."</string>
@@ -250,9 +254,8 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Weka mipangilio otomatiki ukitumia mtandao wako na mawimbi ya simu za mkononi"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Mipangilio otomatiki ya saa za eneo"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Weka mipangilio otomatiki kulingana na mitandao ya simu iliyo karibu nawe"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
- <string name="date_time_24hour_auto" msgid="6583078135067804252">"Tumia chaguomsingi la eneo"</string>
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Weka mipangilio kiotomatiki ukitumia data ya mahali kilipo kifaa chako, ikiwa inapatikana"</string>
+ <string name="date_time_24hour_auto" msgid="6583078135067804252">"Tumia chaguomsingi la lugha"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Tumia mpangilio wa saa 24"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Saa"</string>
<string name="time_format_category_title" msgid="7108616745509689991">"Mfumo wa saa"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Inua kidole, kisha gusa kitambuzi tena"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Imeshindwa kutumia kitambuzi cha alama ya kidole"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Tembelea mtoa huduma za urekebishaji."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Kufungua Skrini Iliyozima kwa Alama ya Kidole"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Tumia kipengele cha Kufungua kwa Alama ya Kidole hata wakati skrini imezimwa"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Skrini imezima, Fungua"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Mipangilio zaidi ya usalama"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Ufungaji wa wasifu wa kazini, usimbaji fiche na zaidi"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Usimbaji fiche, vitambulisho na zaidi"</string>
@@ -607,7 +613,7 @@
<string name="private_space_hide_dialog_message" msgid="618693520130744836">"Ili ufikie sehemu ya faragha, iweke kwenye upau wa kutafutia katika orodha ya programu."</string>
<string name="private_space_hide_dialog_button" msgid="4157191429310035457">"Nimeelewa"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Mfumo"</string>
- <string name="private_space_delete_title" msgid="636873505724100006">"Futa nafasi ya faragha"</string>
+ <string name="private_space_delete_title" msgid="636873505724100006">"Futa sehemu ya faragha"</string>
<string name="private_space_delete_header" msgid="4594429153176776184">"Ungependa kufuta sehemu ya faragha?"</string>
<string name="private_space_delete_summary" msgid="7507302208399543921">"Sehemu yako ya faragha itafutwa kabisa kwenye kifaa chako. \n\nProgramu zote zilizo kwenye sehemu yako na data iliyomo pia zitafutwa kabisa kwenye "<b>"hifadhi ya mfumo"</b>" ya simu yako."</string>
<string name="private_space_accounts" msgid="1078277762792056395">"Akaunti zifuatazo zitaondelewa kwenye sehemu yako ya faragha:"</string>
@@ -1306,7 +1312,7 @@
<string name="dark_ui_text" msgid="4392646155331126666">"Mandhari meusi hutumia mandharinyuma meusi ili kuboresha muda wa matumizi ya betri kwenye baadhi ya skrini. Ratiba za Mandhari meusi hujiwasha hadi skrini ya simu yako inapozima."</string>
<string name="dark_ui_bedtime_footer_summary" msgid="5576501833145170581">"Kwa sasa mandhari meusi yanafuata ratiba yako ya hali tuli"</string>
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Mipangilio ya Hali tuli"</string>
- <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Hali zinaweza pia kuwezesha mandhari meusi}=1{{mode_1} huwezesha pia mandhari meusi}=2{{mode_1} na {mode_2} huwezesha pia mandhari meusi}=3{{mode_1}, {mode_2} na {mode_3} huwezesha pia mandhari meusi}other{{mode_1}, {mode_2} na nyingine # huwezesha pia mandhari meusi}}"</string>
+ <string name="dark_ui_modes_footer_summary" msgid="1041117250408363391">"{count,plural,offset:2 =0{Hali pia zinaweza kuwezesha mandhari meusi}=1{{mode_1} pia huwasha mandhari meusi}=2{{mode_1} na {mode_2} pia huwasha mandhari meusi}=3{{mode_1}, {mode_2} na {mode_3} pia huwasha mandhari meusi}other{{mode_1}, {mode_2} na nyingine # pia huwasha mandhari meusi}}"</string>
<string name="dark_ui_modes_footer_action" msgid="80671811848446248">"Mipangilio ya hali"</string>
<string name="even_dimmer_display_title" msgid="6731255736830410149">"Mwangaza uliofifia zaidi"</string>
<string name="even_dimmer_display_summary" msgid="120301078873242172">"Ruhusu mwangaza wa kifaa hiki ufifie kuliko kawaida"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Kibodi hupuuza vitendo vya kurudia kubonyeza kitufe kimoja haraka mara nyingi"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Upeo wa mibofyo inayopuuzwa"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Chagua kipindi cha muda ambao kibodi yako itapuuza vitendo vya kurudia kubonyeza kitufe kimoja"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"sekunde 0.2"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"sekunde 0.4"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"sekunde 0.6"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"sek 0.2"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"sek 0.4"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"sek 0.6"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Maalum"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"thamani maalum"</string>
<string name="slow_keys" msgid="2891452895499690837">"Vitufe vya polepole"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Hurekebisha muda unaochukua kitendo cha kubonyeza kitufe kuwasha"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Vitufe vinavyonata"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Bonyeza kitufe kimoja baada ya kingine ili upate njia za mkato badala ya kubonyeza na kushikilia vitufe kwa pamoja"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Vitufe vya kipanya"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Tumia vitufe vya kipanya"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Tumia kibodi yako kudhibiti kielekezi"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Kubadilisha mwelekeo wa kipanya"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Sogeza juu ili usogeze ukurasa chini"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Kubadilisha utendaji wa vitufe vya kulia na kushoto"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Tumia kitufe cha kushoto cha kipanya kutekeleza majukumu ya kitufe cha kulia"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Vitufe vya kipanya vya <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Tumia vitufe vya <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> kusogeza kielekezi cha kipanya"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Tumia kitufe cha <xliff:g id="CLICK_LABEL">%s</xliff:g> kubofya kitufe cha msingi cha kipanya"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Tumia kitufe cha <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> kubonyeza na kushikilia kitufe cha msingi cha kipanya"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Tumia kitufe cha <xliff:g id="RELEASE_LABEL">%s</xliff:g> kuachilia kitufe cha msingi cha kipanya"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Tumia kitufe cha <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> kuwasha au kuzima hali ya kusogeza. Hii itafanya vitufe vya <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> kusogeza juu, chini, kushoto au kulia"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Tumia kitufe cha <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> kubofya kitufe mbadala cha kipanya"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Mikato ya kibodi"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Onyesha orodha ya njia za mkato"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Zana na kibodi za wasifu wa kazini"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Chagua kitufe kipya cha kurekebisha cha <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Zana za ufikivu kwenye kibodi halisi"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Vitufe vinavyonata, Vitufe vinavyodunda, Vitufe vya kipanya"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Vitufe vya Kurudia Herufi"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Kawia kabla ya kurudia"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Kasi ya Kurudia Herufi"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Bonyeza na ushikilie kitufe ili herufi ijirudie hadi utakapoachilia kitufe hicho"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Muundo wa <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Chaguomsingi"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Otomatiki: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2224,7 +2236,7 @@
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Ili utumie kipengele cha ufikivu, telezesha vidole viwili juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole viwili juu na ushikilie."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Ili utumie kipengele cha ufikivu, telezesha vidole vitatu juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole vitatu juu na ushikilie."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Nimeelewa"</string>
- <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Kitufe cha kuweka mapendeleo"</string>
+ <string name="accessibility_tutorial_dialog_link_button" msgid="13364319079385020">"Badili kitufe upendavyo"</string>
<string name="accessibility_tutorial_dialog_configure_software_shortcut_type" msgid="8041105223988170653">"Chaguo zaidi"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"Njia mkato ya <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="48978719406821294">"kitufe cha zana za ufikivu"</string>
@@ -2358,7 +2370,7 @@
<string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"Pia unaweza kuweka hali ya kutumia kwa mkono mmoja kwenye Mipangilio ya Haraka katika upande wa juu wa skrini yako"</string>
<string name="accessibility_font_scaling_auto_added_qs_tooltip_content" msgid="7229921960884718332">"Ukubwa wa fonti umewekwa katika Mipangilio ya Haraka. Telezesha kidole chini ili ubadilishe ukubwa wa fonti muda wowote."</string>
<string name="accessibility_quick_settings_tooltip_dismiss" msgid="3269120277643884190">"Ondoa"</string>
- <string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"Tumia kipengele cha usahihishaji wa rangi"</string>
+ <string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"Tumia usahihishaji wa rangi"</string>
<string name="accessibility_daltonizer_shortcut_title" msgid="7480360363995502369">"Njia ya mkato ya usahihishaji wa rangi"</string>
<string name="accessibility_daltonizer_about_title" msgid="6063650804116981287">"Kuhusu usahihishaji wa rangi"</string>
<string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"Pata maelezo zaidi kuhusu usahihishaji wa rangi"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Rekebisha utumiaji wa nishati"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Furushi zilizojumuishwa"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Programu zinatumia chaji kama kawaida"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Tunapendekeza ubadilishe betri"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Uwezo wa betri na utendaji wa kuchaji umepungua. Tunapendekeza ubadilishe betri."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Chaji ya betri imepungua"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Washa Kiokoa Betri ili uongeze muda wa matumizi ya betri"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Boresha muda wa matumizi ya betri"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Ungependa kuondoa VPN hii?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Kata muungnisho"</string>
<string name="vpn_version" msgid="6344167191984400976">"Toleo"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Toleo la <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Ondoa VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Ungependa kubadilisha VPN iliyopo?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Ungependa kuweka VPN iliyowashwa kila mara?"</string>
@@ -3089,8 +3102,8 @@
<string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Ungependa kufuta shughuli za mgeni?"</string>
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Programu na data kutoka kwenye kipindi hiki cha mgeni itafutwa sasa na kila shughuli ya mgeni ya baadaye itafutwa kila mara unapofunga matumizi ya wageni"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"futa, mgeni, shughuli, ondoa, data, anayetembelea"</string>
- <string name="enable_guest_calling" msgid="4620657197834392094">"Ruhusu wageni kupiga simu"</string>
- <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Rekodi ya simu zilizopigwa itashirikiwa na mtumiaji mgeni"</string>
+ <string name="enable_guest_calling" msgid="4620657197834392094">"Ruhusu wageni wapige simu"</string>
+ <string name="enable_guest_calling_summary" msgid="4748224917641204782">"Mtumiaji mgeni atafikia rekodi ya simu zilizopigwa"</string>
<string name="user_enable_calling_sms" msgid="8546430559552381324">"Washa kipengele cha SMS na kupiga simu"</string>
<string name="user_grant_admin" msgid="5942118263054572074">"Mruhusu mtumiaji huyu awe msimamizi"</string>
<string name="user_remove_user" msgid="8468203789739693845">"Futa mtumiaji"</string>
@@ -3245,7 +3258,7 @@
<string name="cloned_app_created_summary" msgid="7277912971544890710">"Imenakiliwa"</string>
<string name="cloned_app_creation_toast_summary" msgid="3854494347144867870">"Inaunda nakala ya <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
<string name="cloned_app_created_toast_summary" msgid="755225403495544163">"Imeunda nakala ya <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
- <string name="system_dashboard_summary" msgid="7400745270362833832">"Lugha, ishara, saa, hifadhi nakala"</string>
+ <string name="system_dashboard_summary" msgid="7400745270362833832">"Lugha, miguso, saa, hifadhi nakala"</string>
<string name="languages_setting_summary" msgid="2650807397396180351">"Lugha za mfumo, lugha za programu, mapendeleo ya kimaeneo, matamshi"</string>
<string name="keywords_wifi" msgid="8156528242318351490">"wifi, wi-fi, mtandao, muunganisho wa mtandao, intaneti, pasiwaya, data,"</string>
<string name="keywords_wifi_notify_open_networks" msgid="6580896556389306636">"Arifa ya Wi-Fi, arifa ya wifi"</string>
@@ -3297,7 +3310,7 @@
<string name="keywords_profile_challenge" msgid="5135555521652143612">"mashindano kazini, kazi, wasifu"</string>
<string name="keywords_unification" msgid="2677472004971453468">"wasifu wa kazini, wasifu uliodhibitiwa, unganisha, uunganishaji, kazi, wasifu"</string>
<string name="keywords_fold_lock_behavior" msgid="6278990772113341581">"kuamka, kulala, kutofunga, kutofunga skrini ukiwa umekunja kifaa, kukunja, kufunga, kunja, funga, skrini imezimwa"</string>
- <string name="keywords_gesture" msgid="3456930847450080520">"ishara"</string>
+ <string name="keywords_gesture" msgid="3456930847450080520">"miguso"</string>
<string name="keywords_wallet" msgid="3757421969956996972">"Pochi"</string>
<string name="keywords_payment_settings" msgid="6268791289277000043">"lipa, gusa, malipo"</string>
<string name="keywords_backup" msgid="707735920706667685">"hifadhi rudufu, hifadhi nakala"</string>
@@ -3402,7 +3415,7 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Hamna}=1{Pana ratiba moja}other{Pana ratiba #}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Usinisumbue"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"Hali"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"Punguza usumbufu na udhibiti umakini wako ukitumia hali za kulala, kufanya kazi, kuendesha gari na nyinginezo."</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"Punguza usumbufu, dhibiti umakini wako ukitumia hali za kulala, kufanya kazi, kuendesha gari na nyinginezo."</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Anzisha hali yako mwenyewe"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Pata arifa za watu na programu muhimu pekee"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Weka ratiba"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"Saa 3 Asubuhi - Saa 11 Jioni siku za wiki\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Matukio ya kalenda"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} inatumika}=2{{mode_1} na {mode_2} zinatumika}=3{{mode_1}, {mode_2} na {mode_3} zinatumika}other{{mode_1}, {mode_2} na nyingine # zinatumika}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Hali 1 inaweza kuwashwa kiotomatiki}other{Hali # zinaweza kuwashwa kiotomatiki}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Usinisumbue}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"IMEWASHWA"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Haijawekwa"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Imezimwa"</string>
@@ -3424,7 +3437,7 @@
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Zuia usumbufu na kukatizwa"</string>
<string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Weka mipangilio ya <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Washa kipengele cha Usinisumbue"</string>
- <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Sauti za kengele na maudhui zinaweza kukatiza"</string>
+ <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Kengele na maudhui yanaweza kukatiza"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Ratiba"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Futa kanuni"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Futa"</string>
@@ -3691,7 +3704,7 @@
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"Inaweza kuwasha au kuzima kipengele cha Usinisumbue na kubadilisha mipangilio inayohusiana nacho."</string>
<string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"Inaweza kudhibiti na kuwasha Hali na kubadilisha mipangilio inayohusiana."</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Ukizima ufikiaji wa arifa katika <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, huenda hali hii pia ikazima ufikiaji wa kipengee cha Usinisumbue."</string>
- <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ukizima uwezo wa <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> wa kufikia arifa, ufikiaji wa Hali unaweza pia kuzimwa."</string>
+ <string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"Ukizima uwezo wa <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> kufikia arifa, ufikiaji wa Hali unaweza pia kuzimwa."</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"Zima"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"Ghairi"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"Muda halisi"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Unapopokea arifa nyingi ndani ya muda mfupi, kifaa chako kitapunguza sauti na arifa kwa hadi dakika 2. Hali hii haitaathiri simu, kengele na mazungumzo ya kipaumbele. \n\nUnaweza kupata arifa ulizopokea wakati wa kutulizwa kwa arifa kwa kutelezesha kidole chini kutoka sehemu ya juu ya skrini."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Tumia kwenye wasifu wa kazini"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Tumia kwenye programu za wasifu wa kazini"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Huduma za kisaidizi cha Uhalisia Pepe"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Hakuna programu zilizosakinishwa ambazo zinaweza kutekeleza huduma za kisaidizi cha Uhalisia Pepe."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Ungependa kuruhusu huduma za Uhalisia Pepe katika <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3860,7 +3883,7 @@
<string name="zen_mode_media_list" msgid="2006413476596092020">"maudhui"</string>
<string name="zen_mode_media_list_first" msgid="7824427062528618442">"Maudhui"</string>
<string name="zen_mode_system" msgid="7301665021634204942">"Sauti inapoguswa"</string>
- <string name="zen_mode_system_summary" msgid="7225581762792177522">"Sauti kutoka kwa kibodi na vitufe vingine"</string>
+ <string name="zen_mode_system_summary" msgid="7225581762792177522">"Sauti kutoka kwenye kibodi na vitufe vingine"</string>
<string name="zen_mode_system_list" msgid="2256218792042306434">"sauti inapoguswa"</string>
<string name="zen_mode_system_list_first" msgid="8590078626001067855">"Sauti inapoguswa"</string>
<string name="zen_mode_reminders" msgid="1970224691551417906">"Vikumbusho"</string>
@@ -3994,7 +4017,7 @@
<string name="app_launch_open_domain_urls_title" msgid="4805388403977096285">"Fungua viungo vinavyoweza kutumika"</string>
<string name="app_launch_open_in_app" msgid="2208182888681699512">"Kwenye programu"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"Kwenye kivinjari chako"</string>
- <string name="app_launch_top_intro_message" msgid="9037324384325518290">"Chagua jinsi ya kufungua viungo vya wavuti vya programu hii"</string>
+ <string name="app_launch_top_intro_message" msgid="9037324384325518290">"Chagua jinsi ya kufungua viungo vya wavuti kwa programu hii"</string>
<string name="app_launch_links_category" msgid="2380467163878760037">"Viungo vya kufunguka katika programu hii"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"Viungo vinavyoweza kutumika"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"Mapendeleo mengine chaguomsingi"</string>
@@ -4155,7 +4178,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"Itaondoa sheria zote za Usinisumbue ambazo zimetengenezwa na programu hii."</string>
<string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"Ungependa kuruhusu <xliff:g id="APP">%1$s</xliff:g> ifikie Hali?"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"Programu itaweza kuwasha au kuzima kipengele cha Usinisumbue, kudhibiti na kuwasha Hali na kufanya mabadiliko kwenye mipangilio inayohusiana."</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Ungependa kubatilisha uwezo wa <xliff:g id="APP">%1$s</xliff:g> wa kufikia Hali?"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"Ungependa kubatilisha uwezo wa <xliff:g id="APP">%1$s</xliff:g> kufikia Hali?"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"Hali zote zilizobuniwa na programu hii zitaondolewa."</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"Usiboreshe"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"Boresha"</string>
@@ -4419,7 +4442,7 @@
<string name="automatic_storage_manager_days_title" msgid="5077286114860539367">"Ondoa picha na video"</string>
<string name="automatic_storage_manager_preference_title" msgid="3483357910142595444">"Kidhibiti cha hifadhi"</string>
<string name="automatic_storage_manager_primary_switch_title" msgid="9131959126462101994">"Tumia Kidhibiti cha hifadhi"</string>
- <string name="gesture_preference_title" msgid="8291899281322647187">"Ishara"</string>
+ <string name="gesture_preference_title" msgid="8291899281322647187">"Miguso"</string>
<string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"Fungua kamera haraka"</string>
<string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"Ili ufungue kamera haraka, bofya kitufe cha kuwasha/kuzima mara mbili. Hufanya kazi katika skrini yoyote."</string>
<string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"Geuza kamera ili upige selfi"</string>
@@ -4435,7 +4458,7 @@
<string name="legacy_navigation_summary" msgid="5905301067778326433">"Rudi nyuma, Skrini ya kwanza na ubadilishe programu ukitumia vitufe vilivyo sehemu ya chini ya skrini yako."</string>
<string name="nav_tutorial_button_description" msgid="6880450051535137024">"Kitufe cha kuanza mafunzo ya usogezaji kwa kutumia ishara. Gusa mara mbili ili uanze kutumia."</string>
<string name="keywords_system_navigation" msgid="3131782378486554934">"usogezaji kwenye mfumo, usogezaji kwa kutumia vitufe 2, usogezaji kwa kutumia vitufe 3, usogezaji kwa kutumia ishara, telezesha kidole"</string>
- <string name="assistant_gesture_category_title" msgid="2478251256585807920">"Mratibu dijitali"</string>
+ <string name="assistant_gesture_category_title" msgid="2478251256585807920">"Kiratibu dijitali"</string>
<string name="assistant_corner_gesture_title" msgid="1895061522687002106">"Telezesha kidole ili uombe programu ya mratibu dijitali"</string>
<string name="assistant_corner_gesture_summary" msgid="5012534700233017955">"Telezesha kidole juu kutoka kona ya chini ili uombe programu ya mratibu dijitali"</string>
<string name="assistant_long_press_home_gesture_title" msgid="4865972278738178753">"Shikilia kitufe cha Mwanzo ili uombe Mratibu"</string>
@@ -4457,7 +4480,7 @@
<string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Telezesha kidole chini uweze"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"Tumia njia ya mkato kutekeleza"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"Vuta chini nusu ya sehemu ya juu ya skrini yako ili ufanye iwe rahisi kufikia kwa mkono mmoja"</string>
- <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"Jinsi ya kutumia kipengele cha hali ya kutumia kwa mkono mmoja"</b>\n" • Hakikisha kwamba usogezaji kwa kutumia ishara umechaguliwa katika mipangilio ya usogezaji kwenye mfumo\n • Telezesha kidole chini karibu na ukingo wa chini wa skrini"</string>
+ <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"Jinsi ya kutumia kipengele cha hali ya kutumia kwa mkono mmoja"</b>\n" • Hakikisha kwamba usogezaji kwa kutumia mguso umechaguliwa katika mipangilio ya usogezaji kwenye mfumo\n • Telezesha kidole chini karibu na ukingo wa chini wa skrini"</string>
<string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"Kusogeza skrini karibu nawe"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"Utaweza kufikia sehemu ya juu ya skrini ukitumia kidole gumba chako."</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"Kuonyesha arifa"</string>
@@ -5031,8 +5054,8 @@
<string name="power_menu_setting_name" msgid="2394440932633137229">"Bonyeza na ushikilie kitufe cha kuwasha/kuzima"</string>
<string name="power_menu_long_press_category_title" msgid="1051146091093775002">"Bonyeza na ushikilie kitufe cha kuwasha au kuzima ili ufikie"</string>
<string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"Menyu ya kuzima au kuwasha"</string>
- <string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Mratibu dijitali"</string>
- <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Fikia mratibu dijitali"</string>
+ <string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"Kiratibu dijitali"</string>
+ <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"Kufikia kiratibu dijitali"</string>
<string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"Fikia menyu ya kuzima/kuwasha"</string>
<string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"Ili utumie, weka mbinu ya kufunga skrini kwanza"</string>
<string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"Menyu ya kuzima/kuwasha:\nBonyeza kitufe cha kuwasha/kuzima na kitufe cha kuongeza sauti kwa wakati mmoja"</string>
@@ -5342,7 +5365,7 @@
<string name="about_phone_device_name_warning" msgid="3243226572404472381">"Jina la kifaa chako litaonekana kwa programu ambazo umesakinisha. Huenda likaonekana pia na watu wengine unapooanisha na vifaa vyenye Bluetooth, unapounganisha kwenye mtandao wa Wi-Fi au unapoweka mipangilio ya mtandao pepe wa Wi-Fi."</string>
<string name="grammatical_gender_title" msgid="8584242850477270828">"Jinsia ya kisarufi"</string>
<string name="grammatical_gender_dialog_title" msgid="8754048592099871587">"Chagua Jinsia ya kisarufi"</string>
- <string name="content_protection_preference_title" msgid="5069260032659193074">"Inatafuta programu hasidi"</string>
+ <string name="content_protection_preference_title" msgid="5069260032659193074">"Tafuta programu hasidi"</string>
<string name="content_protection_preference_summary" msgid="2252393849408445391">"Kagua shughuli kwenye programu ili kubaini iwapo kuna wizi wa data binafsi"</string>
<string name="content_protection_preference_user_consent_switch_title" msgid="1797782616799594426">"Kagua ili ugundue programu za kilaghai"</string>
<string name="content_protection_preference_user_consent_work_profile_switch_title" msgid="3004347470520916069">"Kagua ili ugundue programu za kilaghai za kazini"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Sikiliza mtiririko"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Changanua msimbo wa QR wa mtiririko wa maudhui ya sauti ili usikilize kupitia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Huwezi kubadilisha nenosiri mposikiliza pamoja. Ili ubadilishe nenosiri, zima kwanza kipengele cha kusikiliza pamoja."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Nenosiri lako lazima liwe na herufi 4-16 na litumie herufi, namba na alama pekee"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Kichanganuzi cha msimbo wa QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Je, unahitaji usaidizi?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Mipangilio ya Utafutaji"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Kifaa tu"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Anwani mpya hazitasawazishwa kwenye akaunti"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Anwani zitahifadhiwa kwenye kifaa chako na kusawazishwa kwenye akaunti yako kwa chaguomsingi"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Hujaweka akaunti chaguomsingi"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Hitilafu imetokea wakati wa kuweka akaunti chaguomsingi"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Hujaweka akaunti chaguomsingi"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Kifaa tu"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Weka akaunti ili uanze"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Chora Mviringo ili Kutafuta"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Gusa na ushikilie Kitufe cha ukurasa wa mwanzo au ncha ya kusogezea ili utafute ukitumia maudhui yaliyo kwenye skrini yako."</string>
</resources>
diff --git a/res/values-ta/arrays.xml b/res/values-ta/arrays.xml
index 9f13ca2..e04eb88 100644
--- a/res/values-ta/arrays.xml
+++ b/res/values-ta/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"பெட்டி"</item>
+ <item msgid="184985872234062767">"பழங்காலக் கட்டடம்"</item>
+ <item msgid="9189550412466785530">"அடுக்குமாடிக் கட்டடம்"</item>
+ <item msgid="2142527562511049422">"பேச்சுக் குமிழ்"</item>
+ <item msgid="2548100558260478605">"குழு"</item>
+ <item msgid="2270003903304578284">"பல்பு"</item>
+ <item msgid="4793496619091161864">"கேலெண்டர்"</item>
+ <item msgid="5673625795644364100">"தொந்தரவு செய்ய வேண்டாம்"</item>
+ <item msgid="1423820834865831361">"ஒருவர் ஓடுகிறார்"</item>
+ <item msgid="2037298830718732608">"கோல்ஃப்"</item>
+ <item msgid="2197835014443491074">"ஜிம் டம்பெல்"</item>
+ <item msgid="2730180105015616518">"நீச்சல்"</item>
+ <item msgid="2666922823253345958">"ஒருவர் மலையேறுகிறார்"</item>
+ <item msgid="8234880356472211396">"ஒரு நபர் பந்து வீசுகிறார்"</item>
+ <item msgid="4642980625253001443">"ஒருவர் உதைக்கிறார்"</item>
+ <item msgid="4324795269518833500">"கேம் கண்ட்ரோலர்"</item>
+ <item msgid="7789966425125441125">"கலைஞரின் வண்ணத் தட்டு"</item>
+ <item msgid="663512680597461570">"பனித்துகள்"</item>
+ <item msgid="7952183800501346803">"கடற்கரைக் குடை"</item>
+ <item msgid="799139025758265891">"பணிமனைக் கருவிகள்"</item>
+ <item msgid="8112685757657659269">"பியானோ"</item>
+ <item msgid="3861584909935022342">"திரைப்பட ரீல்"</item>
+ <item msgid="5827426100157335512">"புத்தகம்"</item>
+ <item msgid="8585828346253128384">"தாமரைப் பூ"</item>
+ <item msgid="8788370542815300188">"மனித மூளை"</item>
+ <item msgid="7287354964767553293">"ஹெட்ஃபோன்கள்"</item>
+ <item msgid="2530059623783800987">"டிவி"</item>
+ <item msgid="5307182323469376758">"ரயில்"</item>
+ <item msgid="4903790544026923026">"கார்"</item>
+ <item msgid="5010405583912314582">"முட்கரண்டியும் கத்தியும்"</item>
+ <item msgid="8939998598599064900">"ஷாப்பிங் கார்ட்"</item>
+ <item msgid="3379605903308731893">"பிள்ளை"</item>
+ <item msgid="7808668968550293112">"விலங்கின் பாதம்"</item>
+ <item msgid="1000692647524056504">"ஸ்டார் பேட்ஜ்"</item>
+ <item msgid="8270261073421676502">"இரண்டு நபர்கள்"</item>
+ <item msgid="5767782819651505460">"நட்சத்திரம்"</item>
+ <item msgid="4368451291862729334">"இதயம்"</item>
+ <item msgid="2613199102208419986">"வீடு"</item>
+ <item msgid="3022279986430275040">"பாதி நிலவு"</item>
+ <item msgid="5421089790869483206">"கடிகாரம்"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 3467edd..478cb7e 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"புதிய சாதனத்தை இணை"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"புளூடூத்"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"தானாகவே நாளை இயக்குதல்"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"வலதுபுற கருவியை இணை"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"இடதுபுற கருவியை இணை"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"மற்றொரு கருவியை இணைத்தல்"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"புளூடூத் LE ஆடியோவை முடக்கு"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"LE ஆடியோ ஹார்டுவேர்களை சாதனம் ஆதரித்தால் புளூடூத் LE ஆடியோ அம்சத்தை முடக்கும்."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"புளூடூத் LE ஆடியோ பயன்முறை"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"புளூடூத் LE ஆடியோ பிராட்காஸ்ட் UI மாதிரிக்காட்சியை இயக்குதல்"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"தனிப்பட்ட ஆடியோ பகிர்வு மற்றும் தனிப்பட்ட பிராட்காஸ்ட் உட்பட LE ஆடியோ பகிர்வு UI மாதிரிக்காட்சியை இயக்கும்"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"சாதன விவரங்களில் LE ஆடியோ டாகிளை காட்டு"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"புளூடூத் LE ஆடியோ ஏற்புப் பட்டியலை பைபாஸ் செய்தல்"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ஏற்புப் பட்டியல் நிபந்தனைகளை LE ஆடியோ வெளிப்புறச் சாதனம் பூர்த்திசெய்கிறதா என்று சரிபார்க்கப்படவில்லை என்றாலும் LE ஆடியோவை இயல்பாகப் பயன்படுத்தும்."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"உங்கள் நெட்வொர்க்கையும் வயர்லெஸ் சிக்னல்களையும் பயன்படுத்தி தானாகவே அமைக்கும்"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"நேர மண்டலத்தைத் தானாகவே கண்டறிதல்"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"உங்களுக்கு அருகிலுள்ள மொபைல் நெட்வொர்க்குகளின் அடிப்படையில் தானாகவே அமைக்கும்"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"உங்கள் சாதன இருப்பிடம் கிடைத்தால், அதைப் பயன்படுத்தி தானாகவே அமைக்கும்"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"உள்ளூர் நேர வடிவத்தைப் பயன்படுத்து"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-மணிநேர வடிவமைப்பு"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"நேரம்"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"விரலை எடுத்துவிட்டு, மீண்டும் சென்சாரைத் தொடவும்"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"கைரேகை சென்சாரைப் பயன்படுத்த முடியவில்லை"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"பழுதுபார்ப்புச் சேவை வழங்குநரைத் தொடர்புகொள்ளவும்."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"திரை ஆஃப் கைரேகை அன்லாக்"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"திரை ஆஃப் செய்யப்பட்டிருக்கும்போதும் கைரேகை அன்லாக்கைப் பயன்படுத்தும்"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"திரை ஆஃப், அன்லாக்"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"கூடுதல் பாதுகாப்பு அமைப்புகள்"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"பணிக் கணக்குப் பூட்டு, என்க்ரிப்ஷன் மற்றும் பல"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"என்க்ரிப்ஷன், அனுமதிச் சான்றுகள் மற்றும் பல"</string>
@@ -822,7 +828,7 @@
<string name="manage_device_admin" msgid="1044620606203916275">"சாதனநிர்வாகி ஆப்ஸ்"</string>
<string name="number_of_device_admins_none" msgid="152926922020437312">"ஆப்ஸ் எதுவும் செயலில் இல்லை"</string>
<string name="number_of_device_admins" msgid="3402909995362162876">"{count,plural, =1{# ஆப்ஸ் செயலில் உள்ளது}other{# ஆப்ஸ் செயலில் உள்ளன}}"</string>
- <string name="manage_trust_agents" msgid="6410149930029992356">"நம்பக ஏஜென்ட்கள்"</string>
+ <string name="manage_trust_agents" msgid="6410149930029992356">"நம்பகமான ஏஜென்ட்"</string>
<string name="disabled_because_no_backup_security" msgid="4998095356607488854">"பயன்படுத்த, முதலில் திரைப்பூட்டை அமைக்கவும்"</string>
<string name="manage_trust_agents_summary" msgid="6423843123607674286">"ஏதுமில்லை"</string>
<string name="manage_trust_agents_summary_on" msgid="3302574418419446146">"{count,plural, =1{1 நம்பகமான ஏஜென்ட் செயலில் உள்ளது }other{# நம்பகமான ஏஜென்ட்டுகள் செயலில் உள்ளன }}"</string>
@@ -1335,7 +1341,7 @@
<string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"தொடங்க வேண்டிய நேரம்"</string>
<string name="lift_to_wake_title" msgid="8994218158737714046">"விரலை எடுக்கும் போது இயங்கு"</string>
<string name="ambient_display_screen_title" msgid="8615947016991429325">"சூழல்சார் திரை"</string>
- <string name="ambient_display_category_triggers" msgid="1216640141609270011">"காட்டுவதற்கான நேரம்"</string>
+ <string name="ambient_display_category_triggers" msgid="1216640141609270011">"எப்போது காட்டுவது"</string>
<string name="doze_title" msgid="1523090408230862316">"அறிவிப்பிற்கு திரை விழித்தல்"</string>
<string name="doze_summary" msgid="8252867381522942804">"திரை டார்க்காக இருக்கும்போது புதிய அறிவிப்புகளுக்கு இது ஆன் ஆகும்"</string>
<string name="doze_always_on_title" msgid="7326245192352868477">"நேரம் & தகவலை எப்போதும் காட்டு"</string>
@@ -1386,7 +1392,7 @@
<string name="module_version" msgid="1787518340082046658">"Google Play சிஸ்டம் புதுப்பிப்பு"</string>
<string name="battery_info" msgid="7873528123969546728">"பேட்டரி தொடர்பான தகவல்கள்"</string>
<string name="device_info_not_available" msgid="4804474466616712326">"கிடைக்கவில்லை"</string>
- <string name="storage_settings" msgid="7472188817781592677">"சேமிப்பிடம்"</string>
+ <string name="storage_settings" msgid="7472188817781592677">"சேமிப்பகம்"</string>
<string name="storage_settings_for_app" msgid="229425418984637483">"சேமிப்பகம் & தற்காலிக நினைவகம்"</string>
<string name="storage_settings_title" msgid="486118156723194815">"சேமிப்பிட அமைப்பு"</string>
<string name="status_eid" msgid="3588471107671992684">"EID"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ஒரே பட்டனைத் தொடர்ச்சியாக அழுத்துவதைக் கீபோர்டு விரைவாகப் புறக்கணிக்கிறது"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"பவுன்ஸ் பட்டன் வரம்பு"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"தொடர்ச்சியாகப் பட்டன் அழுத்தப்படுவதைக் கீபோர்டு புறக்கணிப்பதற்கான கால அளவைத் தேர்வுசெய்யுங்கள்"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 வினாடி"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 வினாடி"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 வினாடி"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 வினாடி"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 வினாடி"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 வினாடி"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"பிரத்தியேகம்"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"பிரத்தியேகமான மதிப்பு"</string>
<string name="slow_keys" msgid="2891452895499690837">"ஸ்லோ கீஸ்"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ஒரு பட்டனை அழுத்துவதற்கு எடுக்கும் நேரத்தை மாற்றலாம்"</string>
<string name="sticky_keys" msgid="7317317044898161747">"ஸ்டிக்கி கீஸ்"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"ஷார்ட்கட்களுக்கு பட்டன்களை ஒன்றாகப் பிடிப்பதற்குப் பதிலாக ஒரு நேரத்தில் ஒரு பட்டனை அழுத்தலாம்"</string>
<string name="mouse_keys" msgid="6237254627808525540">"மவுஸ் பட்டன்கள்"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"மவுஸ் பட்டன்களைப் பயன்படுத்துங்கள்"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"பாயிண்ட்டரைக் கட்டுப்படுத்த உங்கள் கீபோர்டைப் பயன்படுத்தலாம்"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"மவுஸ் ரிவர்ஸ் ஸ்க்ரோலிங்"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"பக்கத்தை மேலிருந்து கீழே நகர்த்த மவுஸை முன்னோக்கி ஸ்க்ரோல் செய்யலாம்"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"இடதுபுற மற்றும் வலதுபுற பட்டன்களை மாற்றுதல்"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"இடதுபுற மவுஸ் பட்டனை வலதுபுற பட்டனாகப் பயன்படுத்தலாம்"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>க்கான மவுஸ் பட்டன்கள்"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"மவுஸ் பாயிண்ட்டரை நகர்த்த <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> பட்டன்களைப் பயன்படுத்துங்கள்"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"முதன்மை மவுஸ் பட்டனைக் கிளிக் செய்ய <xliff:g id="CLICK_LABEL">%s</xliff:g> பட்டனைப் பயன்படுத்துங்கள்"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"முதன்மை மவுஸ் பட்டனை அழுத்திப் பிடிக்க <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> பட்டனைப் பயன்படுத்துங்கள்"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"முதன்மை மவுஸ் பட்டனை விடுவிக்க <xliff:g id="RELEASE_LABEL">%s</xliff:g> பட்டனைப் பயன்படுத்துங்கள்"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"நகர்த்துதல் பயன்முறையை நிலைமாற்ற <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> பட்டனைப் பயன்படுத்துங்கள். இதன்மூலம் <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> பட்டன்களைப் பயன்படுத்தி காட்சியை மேலே, கீழே, இடதுபுறம் அல்லது வலதுபுறம் நகர்த்தலாம்"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"இரண்டாவது மவுஸ் பட்டனைக் கிளிக் செய்ய <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> பட்டனைப் பயன்படுத்துங்கள்"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"கீபோர்டு ஷார்ட்கட்கள்"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"ஷார்ட்கட்களின் பட்டியலைக் காட்டும்"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"பணிக் கணக்கிற்கான கீபோர்டுகள் & கருவிகள்"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>க்கு புதிய விசையை தேர்வுசெய்யலாம்:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"கீபோர்டுக்கான மாற்றுத்திறன் வசதி"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"ஸ்டிக்கி கீஸ், பவுன்ஸ் கீஸ், மவுஸ் கீஸ்"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"ரிப்பீட் பட்டன்கள்"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"தொடர்ச்சியான எழுத்துகளுக்கு இடையிலான நேர இடைவெளி"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"ரிப்பீட் விகிதம்"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"ஒரு பட்டனை அழுத்திப் பிடித்திருந்து அதை விடுவிக்கும்வரை அதிலுள்ள எழுத்து தொடர்ச்சியாக டைப் செய்யப்படும்"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> தளவமைப்பு"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"இயல்பு"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"தானியங்கு: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2108,7 +2120,7 @@
<string name="general_category_title" msgid="6298579528716834157">"பொது"</string>
<string name="display_category_title" msgid="6638191682294461408">"திரை அமைப்பு"</string>
<string name="accessibility_color_and_motion_title" msgid="2323301706545305874">"கலர் மற்றும் மோஷன்"</string>
- <string name="accessibility_pointer_and_touchpad_title" msgid="8719482393177273831">"பாயிண்டர் & டச்பேட்டுக்கான மாற்றுத்திறன் வசதி"</string>
+ <string name="accessibility_pointer_and_touchpad_title" msgid="8719482393177273831">"பாயிண்டர் & டச்பேடுக்கான மாற்றுத்திறன் வசதி"</string>
<string name="accessibility_pointer_and_touchpad_summary" msgid="6089872217234956258">"பாயிண்டரின் வண்ணம், பாயிண்டரின் அளவு & பல"</string>
<string name="accessibility_pointer_color_customization_title" msgid="3376392766113189508">"பாயிண்டர் வண்ணத்தைப் பிரத்தியேகமாக்குதல்"</string>
<string name="accessibility_color_contrast_title" msgid="5757724357142452378">"வண்ண மாறுபாடு"</string>
@@ -2233,7 +2245,7 @@
<string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"மூன்று விரல்கள் மூலம் மேல்நோக்கி ஸ்வைப் செய்தல்"</string>
<string name="accessibility_shortcut_edit_dialog_title_software" msgid="6505512764022389951">"அணுகல்தன்மை பட்டன்"</string>
<string name="accessibility_shortcut_edit_dialog_summary_floating_button" msgid="6266489864614886247">"மிதக்கும் பட்டனைத் தட்டவும்"</string>
- <string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"அணுகல்தன்மை சைகை"</string>
+ <string name="accessibility_shortcut_edit_dialog_title_software_by_gesture" msgid="4775049370625630546">"மாற்றுத்திறன் சைகை"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"திரையின் கீழ்ப்பகுதியில் உள்ள அணுகல்தன்மை பட்டனை <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> தட்டுங்கள். அம்சங்களுக்கு இடையே மாற, அணுகல்தன்மை பட்டனைத் தொட்டுப் பிடியுங்கள்."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்யுங்கள். அம்சங்களுக்கு இடையே மாற, மேல்நோக்கி ஸ்வைப் செய்து பிடியுங்கள்.}other{உங்கள் திரையின் கீழ்ப்பகுதியில் இருந்து # விரல்களால் மேல்நோக்கி ஸ்வைப் செய்யுங்கள். அம்சங்களுக்கு இடையே மாற, # விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடியுங்கள்.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"கூடுதல் விருப்பங்கள்"</annotation></string>
@@ -2268,7 +2280,7 @@
<string name="accessibility_button_summary" msgid="8510939012631455831">"அணுகல்தன்மை அம்சங்களை விரைவாக அணுகலாம்"</string>
<string name="accessibility_button_gesture_description" msgid="1141723096904904336">"<b>தொடங்க</b><br/> {0,number,integer}. அணுகல்தன்மை அமைப்புகளுக்குச் செல்லவும்<br/> {1,number,integer}. ஓர் அம்சத்தைத் தேர்ந்தெடுத்து ஷார்ட்கட்டைத் தட்டவும்<br/> {2,number,integer}. அம்சத்தை அணுக பட்டனைப் பயன்படுத்த விரும்புகிறீர்களா சைகையைப் பயன்படுத்த விரும்புகிறீர்களா என்பதைத் தேர்வுசெய்யவும்<br/>"</string>
<string name="accessibility_button_description" msgid="7669538706120092399">"<b>தொடங்க</b><br/> {0,number,integer}. அணுகல்தன்மை அமைப்புகளுக்குச் செல்லவும்<br/> {1,number,integer}. ஓர் அம்சத்தைத் தேர்ந்தெடுத்து ஷார்ட்கட்டைத் தட்டவும்<br/> {2,number,integer}. அம்சத்தை அணுகுவதற்கான பட்டனைத் தேர்வுசெய்யவும்<br/>"</string>
- <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"பட்டனையோ சைகையையோ பயன்படுத்துதல்"</string>
+ <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"பட்டன்/சைகை எதைப் பயன்படுத்துவது"</string>
<string name="accessibility_button_location_title" msgid="7182107846092304942">"இடம்"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"அளவு"</string>
<string name="accessibility_button_fade_title" msgid="8081993897680588829">"பயன்படுத்தாதபோது மங்கலாகிவிடும்"</string>
@@ -2443,7 +2455,7 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"முன்னோட்டம்"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"நிலையான விருப்பங்கள்"</string>
<string name="captioning_locale" msgid="5533303294290661590">"மொழி"</string>
- <string name="captioning_text_size" msgid="5764254558945371745">"வ்சன எழுத்து வடிவ அளவு"</string>
+ <string name="captioning_text_size" msgid="5764254558945371745">"வசன எழுத்து வடிவ அளவு"</string>
<string name="captioning_preset" msgid="4174276086501638524">"வசனத்தின் நடை"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"பிரத்தியேக விருப்பங்கள்"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"பின்புல வண்ணம்"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ஆற்றல் பயன்பாட்டைச் சரிசெய்க"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"உள்ளடங்கும் தொகுப்புகள்"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ஆப்ஸ் வழக்கம்போல் இயங்குகின்றன"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"பேட்டரியை மாற்றும்படி பரிந்துரைக்கப்படுகிறது"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"பேட்டரி திறனும் சார்ஜிங் செயல்திறனும் குறைந்துள்ளன. பேட்டரியை மாற்றும்படி பரிந்துரைக்கப்படுகிறது."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"குறைவான பேட்டரி அளவு"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"பேட்டரி ஆயுளை நீட்டிக்க பேட்டரி சேமிப்பானை இயக்குக"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"பேட்டரி ஆயுளை மேம்படுத்துதல்"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"VPNஐத் துண்டிக்கவா?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"தொடர்பைத் துண்டி"</string>
<string name="vpn_version" msgid="6344167191984400976">"பதிப்பு"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"பதிப்பு <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPNஐ நீக்கு"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"தற்போதுள்ள VPNஐ மாற்றியமைக்கவா?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"எப்போதும் இயங்கும் VPNஐ அமைக்கவா?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"வாரநாட்களில் காலை 9 மணி முதல் மாலை 5 மணி வரை\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"கேலெண்டர் நிகழ்வுகள்"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} செயலில் உள்ளது}=2{{mode_1} மற்றும் {mode_2} செயலில் உள்ளன}=3{{mode_1}, {mode_2} மற்றும் {mode_3} செயலில் உள்ளன}other{{mode_1}, {mode_2} மற்றும் கூடுதலாக # பயன்முறைகள் செயலில் உள்ளன}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 பயன்முறை தானாக இயங்கலாம்}other{# பயன்முறைகள் தானாக இயங்கலாம்}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{தொந்தரவு செய்ய வேண்டாம்}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ஆன்"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"அமைக்கப்படவில்லை"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"முடக்கப்பட்டுள்ளது"</string>
@@ -3436,8 +3449,8 @@
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"திட்ட அட்டவணை"</string>
<string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"எப்போது தானாகவே இயக்குவது"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"நிகழ்வு அட்டவணை"</string>
- <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"நிகழ்வுகளின் போது இயக்குங்கள்"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"அழைப்புக்கான பதிலுள்ள இடத்தில்"</string>
+ <string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"இந்த நிகழ்வுகளின் போது இயங்கு"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"அழைப்பு பதில் இப்படியெனில்"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"நேரத் திட்ட அட்டவணை"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"திட்டமிடுங்கள்"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> ம.நே <xliff:g id="MINUTES">%2$d</xliff:g> நிமி"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"குறுகிய காலத்தில் பல அறிவிப்புகளைப் பெறும்போது, 2 நிமிடங்கள் வரை உங்கள் சாதனம் அதன் ஒலியளவைக் குறைத்து விழிப்பூட்டல்கள் பெறுவதை நிறுத்திவைக்கும். அழைப்புகள், அலாரங்கள் மற்றும் முக்கியமான உரையாடல்கள் பாதிக்கப்படாது. \n\nதிரையின் மேலிருந்து கீழே இழுப்பதன் மூலம் குறைந்த ஒலியளவில் இருக்கும்போது பெற்ற அறிவிப்புகளைப் பார்க்கலாம்."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"பணிக் கணக்குகளுக்குப் பயன்படுத்துதல்"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"பணிக் கணக்கு ஆப்ஸுக்குப் பயன்படுத்தும்"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR உதவிச் சேவைகள்"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"நிறுவப்பட்ட ஆப்ஸ்களில் எதுவும் VR உதவிச் சேவைகளாக இயங்குவதற்காகக் கோரவில்லை"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> ஆனது VR சேவையை அணுக அனுமதிக்கவா?"</string>
@@ -3761,7 +3784,7 @@
<string name="app_notifications_not_send_desc" msgid="5683060986735070528">"இந்த ஆப்ஸ் அறிவிப்புகளை அனுப்பாது"</string>
<string name="notification_channels" msgid="1502969522886493799">"வகைகள்"</string>
<string name="notification_channels_other" msgid="18159805343647908">"மற்றவை"</string>
- <string name="no_channels" msgid="4716199078612071915">"இந்த ஆப்ஸ் எந்த அறிவிப்புகளையும் இடுகையிடவில்லை"</string>
+ <string name="no_channels" msgid="4716199078612071915">"இந்த ஆப்ஸிலிருந்து எந்த அறிவிப்பும் வரவில்லை"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"பயன்படுத்தப்படாத வகைகளைக் காட்டு"</string>
<string name="app_settings_link" msgid="6725453466705333311">"ஆப்ஸில் உள்ள கூடுதல் அமைப்புகள்"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"பயன்படுத்தப்படாத வகைகளைக் காட்டு"</string>
@@ -3942,7 +3965,7 @@
<string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"கவனம் செலுத்த, உங்கள் சாதனத்தில் இருந்து ஏற்படும் கவனச்சிதறல்களையோ இடையூறுகளையோ தடைசெய்தல்"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"அமைதியான சூழலைப் பெற, கவனச்சிதறல்கள் அனைத்தையும் தவிர்த்தல்"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"வெவ்வேறு பயனர்களுக்கான சாதன அனுபவத்தையும் அமைப்புகளையும் பிரத்தியேகப்படுத்துதல்"</string>
- <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"முக்கியமான நபர்களும் ஆப்ஸும் மட்டுமே உங்களைத் தொடர்புகொள்ள அனுமதிப்பதன் மூலம் இடையூறுகளைக் குறைத்தல்"</string>
+ <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"முக்கியமான நபர்களும் ஆப்ஸும் மட்டுமே உங்களைத் தொடர்புகொள்ள அனுமதிப்பதன் மூலம் இடையூறுகளைக் குறைக்கலாம்"</string>
<string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"வழக்கமான திட்ட அட்டவணையைப் பின்பற்றும் பயன்முறையை அமையுங்கள்"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"உங்கள் அன்றாட நிகழ்வுகளுடன் சாதனத்தை ஒத்திசைத்து வைத்திருங்கள்"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"100% உற்சாகத்துடன் கண்விழியுங்கள்"</string>
@@ -3994,7 +4017,7 @@
<string name="app_launch_open_domain_urls_title" msgid="4805388403977096285">"ஆதரிக்கப்படும் இணைப்புகளைத் திறத்தல்"</string>
<string name="app_launch_open_in_app" msgid="2208182888681699512">"ஆப்ஸில்"</string>
<string name="app_launch_open_in_browser" msgid="766170191853009756">"உங்கள் பிரவுசரில்"</string>
- <string name="app_launch_top_intro_message" msgid="9037324384325518290">"இந்த ஆப்ஸில் வலை இணைப்புகளைத் திறக்கும் முறையைத் தேர்வுசெய்க"</string>
+ <string name="app_launch_top_intro_message" msgid="9037324384325518290">"இந்த ஆப்ஸ் இணைய இணைப்பைத் திறக்கும் முறையைத் தேர்வுசெய்க"</string>
<string name="app_launch_links_category" msgid="2380467163878760037">"இந்த ஆப்ஸில் திறக்கப்பட வேண்டிய இணைப்புகள்"</string>
<string name="app_launch_supported_domain_urls_title" msgid="5088779668667217369">"ஆதரிக்கப்படும் இணைப்புகள்"</string>
<string name="app_launch_other_defaults_title" msgid="5674385877838735586">"பிற இயல்பான விருப்பத்தேர்வுகள்"</string>
@@ -4458,7 +4481,7 @@
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"ஷார்ட்கட்டை இதற்குப் பயன்படுத்து:"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"உங்கள் திரையின் மேற்பாதியைக் கீழே இழுக்கவும். இதன் மூலம் ஒரு கையால் எளிதாகப் பயன்படுத்தலாம்"</string>
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"ஒற்றைக் கைப் பயன்முறையை எவ்வாறு பயன்படுத்துவது?"</b>\n" • சிஸ்டம் வழிசெலுத்தல் அமைப்புகளில் \'சைகை வழிசெலுத்தல்\' தேர்ந்தெடுக்கப்பட்டிருப்பதை உறுதிசெய்துகொள்ளவும்\n • திரையின் கீழ் முனைக்கு அருகில் கீழ்நோக்கி ஸ்வைப் செய்யவும்"</string>
- <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"விரும்பும் இடத்திற்குத் திரையை இழுத்தல்"</string>
+ <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"பெருவிரலுக்கு அருகே திரையை இழுத்தல்"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"திரையின் மேற்பகுதி உங்கள் பெருவிரலுக்கு எட்டும் இடத்திற்கு மாறும்."</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"அறிவிப்புகளைக் காட்டு"</string>
<string name="one_handed_action_show_notification_summary" msgid="8281689861222000436">"அறிவிப்புகளும் அமைப்புகளும் தோன்றும்."</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ஸ்ட்ரீமைக் கேளுங்கள்"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> மூலம் கேட்க ஆடியோ ஸ்ட்ரீமின் QR குறியீட்டை ஸ்கேன் செய்யுங்கள்"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"பகிரும்போது கடவுச்சொல்லை மாற்ற முடியாது. கடவுச்சொல்லை மாற்ற, முதலில் ஆடியோ பகிர்வை முடக்கவும்."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"கடவுச்சொல் 4-16 எழுத்துகளைக் கொண்டிருக்க வேண்டும். அதில் எழுத்துகள், எண்கள், குறியீடுகளை மட்டுமே பயன்படுத்த வேண்டும்."</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR குறியீடு ஸ்கேனர்"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"உதவி தேவையா?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"அமைப்புகளைத் தேடுங்கள்"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"சாதனம் மட்டும்"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"புதிய தொடர்புகளை ஒரு கணக்குடன் ஒத்திசைக்க முடியாது"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"இயல்பாகவே தொடர்புகள் உங்கள் சாதனத்தில் சேமிக்கப்படும், உங்கள் கணக்குடன் ஒத்திசைக்கப்படும்"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"இயல்புநிலையாக எதுவும் அமைக்கப்படவில்லை"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"இயல்புக் கணக்கை அமைப்பதில் பிழை"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"இயல்புக் கணக்கு அமைக்கப்படவில்லை"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"சாதனம் மட்டும்"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"தொடங்குவதற்கு ஒரு கணக்கைச் சேருங்கள்"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"வட்டமிட்டுத் தேடல்"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"முகப்பு பட்டனைத் தொட்டுப் பிடித்திருக்கவும் அல்லது திரையில் உள்ள உள்ளடக்கத்தைப் பயன்படுத்தித் தேடுவதற்கு ஹேண்டிலுக்குச் செல்லவும்."</string>
</resources>
diff --git a/res/values-te/arrays.xml b/res/values-te/arrays.xml
index 92b9732..55b418e 100644
--- a/res/values-te/arrays.xml
+++ b/res/values-te/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"బ్రీఫ్కేస్"</item>
+ <item msgid="184985872234062767">"క్లాసికల్ బిల్డింగ్"</item>
+ <item msgid="9189550412466785530">"అపార్ట్మెంట్ బిల్డింగ్"</item>
+ <item msgid="2142527562511049422">"స్పీచ్ బబుల్"</item>
+ <item msgid="2548100558260478605">"వ్యక్తుల గ్రూప్"</item>
+ <item msgid="2270003903304578284">"లైట్ బల్బ్"</item>
+ <item msgid="4793496619091161864">"క్యాలెండర్"</item>
+ <item msgid="5673625795644364100">"అంతరాయం కలిగించవద్దు"</item>
+ <item msgid="1423820834865831361">"పరుగెడుతున్న వ్యక్తి"</item>
+ <item msgid="2037298830718732608">"గోల్ఫ్"</item>
+ <item msgid="2197835014443491074">"జిమ్ డంబెల్"</item>
+ <item msgid="2730180105015616518">"స్విమ్మింగ్"</item>
+ <item msgid="2666922823253345958">"హైకింగ్ చేస్తున్న వ్యక్తి"</item>
+ <item msgid="8234880356472211396">"బంతిని విసిరేస్తున్న వ్యక్తి"</item>
+ <item msgid="4642980625253001443">"కికింగ్ చేస్తున్న వ్యక్తి"</item>
+ <item msgid="4324795269518833500">"గేమ్ కంట్రోలర్"</item>
+ <item msgid="7789966425125441125">"ఆర్టిస్ట్ రంగుల పాలెట్"</item>
+ <item msgid="663512680597461570">"స్నోఫ్లేక్"</item>
+ <item msgid="7952183800501346803">"బీచ్ గొడుగు"</item>
+ <item msgid="799139025758265891">"వర్క్షాప్ టూల్స్"</item>
+ <item msgid="8112685757657659269">"పియానో"</item>
+ <item msgid="3861584909935022342">"ఫిల్మ్ రీల్"</item>
+ <item msgid="5827426100157335512">"పుస్తకం"</item>
+ <item msgid="8585828346253128384">"తామర పువ్వు"</item>
+ <item msgid="8788370542815300188">"వ్యక్తి మైండ్"</item>
+ <item msgid="7287354964767553293">"హెడ్ఫోన్స్"</item>
+ <item msgid="2530059623783800987">"టీవీ"</item>
+ <item msgid="5307182323469376758">"రైలు"</item>
+ <item msgid="4903790544026923026">"కారు"</item>
+ <item msgid="5010405583912314582">"ఫోర్క్, కత్తి"</item>
+ <item msgid="8939998598599064900">"షాపింగ్ కార్ట్"</item>
+ <item msgid="3379605903308731893">"చైల్డ్"</item>
+ <item msgid="7808668968550293112">"జంతువుల పాదముద్ర"</item>
+ <item msgid="1000692647524056504">"స్టార్ బ్యాడ్జ్"</item>
+ <item msgid="8270261073421676502">"ఇద్దరు వ్యక్తులు"</item>
+ <item msgid="5767782819651505460">"స్టార్"</item>
+ <item msgid="4368451291862729334">"హార్ట్"</item>
+ <item msgid="2613199102208419986">"హౌస్"</item>
+ <item msgid="3022279986430275040">"అర్ధ చంద్రాకారం"</item>
+ <item msgid="5421089790869483206">"గడియారం"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index c7d392b..1925b68 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"కొత్త పరికరాన్ని పెయిర్ చేయండి"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"బ్లూటూత్"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"రేపు ఆటోమేటిక్గా ఆన్ చేయండి"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"కుడి చెవి పెయిర్"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"ఎడమ చెవి పెయిర్"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"మీ మరో చెవిని పెయిర్ చేయి"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"బ్లూటూత్ LE ఆడియోను డిజేబుల్ చేయండి"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"పరికరం గనుక LE ఆడియో హార్డ్వేర్ సామర్థ్యాలను సపోర్ట్ చేస్తే బ్లూటూత్ LE ఆడియో ఫీచర్ను డిజేబుల్ చేస్తుంది."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"బ్లూటూత్ LE ఆడియో మోడ్"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"బ్లూటూత్ LE ఆడియో ప్రసార UI ప్రివ్యూను ఎనేబుల్ చేయండి"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"వ్యక్తిగత ఆడియో షేరింగ్, ప్రైవేట్ ప్రసారంతో పాటు LE ఆడియో షేరింగ్ UI ప్రివ్యూను ఎనేబుల్ చేస్తుంది"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"పరికర వివరాలలో LE ఆడియో టోగుల్ను చూపండి"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"బ్లూటూత్ LE ఆడియో వైట్లిస్ట్ను బైపాస్ చేయండి"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"వైట్లిస్ట్ ప్రమాణాలకు అనుగుణంగా LE ఆడియో పెరిఫెరల్ వెరిఫై చేయబడనప్పటికీ ఆటోమేటిక్గా LE ఆడియోను ఉపయోగించండి."</string>
@@ -164,7 +168,7 @@
<string name="skip_label" msgid="6380034601349015895">"స్కిప్ చేయండి"</string>
<string name="next_label" msgid="1248293387735652187">"తర్వాత"</string>
<string name="language_picker_title" msgid="4271307478263345133">"భాషలు"</string>
- <string name="language_picker_category_title" msgid="1792199453060454565">"ప్రాధాన్య భాషా క్రమం"</string>
+ <string name="language_picker_category_title" msgid="1792199453060454565">"ప్రాధాన్య భాషా క్రమం (ప్రిఫర్డ్ లాంగ్వేజ్ ఆర్డర్)"</string>
<string name="desc_current_default_language" msgid="1901157141663662859">"సిస్టమ్ భాష"</string>
<string name="locale_remove_menu" msgid="3521546263421387474">"తీసివేయండి"</string>
<string name="add_a_language" msgid="2126220398077503271">"భాషను జోడించండి"</string>
@@ -180,7 +184,7 @@
<string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ఈ యాప్ కోసం భాష ఎంపిక సెట్టింగ్లలో అందుబాటులో లేదు."</string>
<string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"యాప్లో అందుబాటులో ఉన్న భాషలకు భాష భిన్నంగా ఉండవచ్చు. కొన్ని యాప్లు ఈ సెట్టింగ్కు సపోర్ట్ చేయకపోవచ్చు."</string>
<string name="desc_app_locale_selection_supported" msgid="6744909281573556379">"ఒక్కో యాప్నకు ఒక్కో భాషను సెట్ చేయండి."</string>
- <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"మీ ప్రాధాన్య భాషల లిస్ట్ నుండి సపోర్ట్ చేసే మొదటి భాషను మీ పరికరం, సిస్టమ్, యాప్లు, వెబ్సైట్లు ఉపయోగిస్తాయి.\n\nచాలా యాప్లు తేదీలను, నంబర్లను, యూనిట్లను ఫార్మాట్ చేయడానికి మీ ప్రాధాన్య భాష నుండి ప్రాంతాన్ని కూడా ఉపయోగిస్తాయి. మీ ప్రాంతాన్ని మార్చడానికి, భాషను జోడించి, ఆపై మీ ప్రాధాన్య ప్రాంతాన్ని ఎంచుకోండి."</string>
+ <string name="desc_introduction_of_language_picker" msgid="4012265379885200083">"మీ పరికరం, సిస్టమ్, యాప్లు, వెబ్సైట్లు మీ ప్రాధాన్య భాషల (ప్రిఫర్డ్ లాంగ్వేజ్) లిస్ట్లో సపోర్ట్ ఉన్న మొదటి భాషను ఉపయోగిస్తాయి.\n\nచాలా యాప్లు తేదీలను, నంబర్లను, యూనిట్లను ఫార్మాట్ చేయడానికి మీ ప్రాధాన్య భాష ఉన్న ప్రాంతాన్ని కూడా ఉపయోగిస్తాయి. మీ ప్రాంతాన్ని మార్చడానికి, భాషను జోడించి, ఆపై మీ ప్రాధాన్య ప్రాంతాన్ని (ప్రిఫర్డ్ రీజియన్ను) ఎంచుకోండి."</string>
<string name="desc_notice_of_language_picker" msgid="3449290526457925447">"ప్రతి యాప్ కోసం భాషను ఎంచుకోవడానికి, యాప్ భాష సెట్టింగ్లకు వెళ్లండి."</string>
<string name="desc_locale_helper_footer_general" msgid="6112153921151780303">"యాప్ భాషల గురించి మరింత తెలుసుకోండి"</string>
<string name="title_change_system_locale" msgid="8589844586256566951">"సిస్టమ్ భాషను %sకు మార్చాలా?"</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"మీ నెట్వర్క్, వైర్లెస్ సిగ్నల్స్ను ఉపయోగించి ఆటోమేటిక్గా సెట్ చేయండి"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"ఆటోమేటిక్ టైమ్ జోన్"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"మీకు దగ్గరలో ఉన్న మొబైల్ నెట్వర్క్ల ఆధారంగా ఆటోమేటిక్గా సెట్ చేయబడింది"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"అందుబాటులో ఉంటే, మీ పరికర లొకేషన్తో ఆటోమేటిక్గా సెట్ చేయండి"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ఈ భాషలో వాడే ఫార్మాట్ను ఆటోమేటిక్ సెట్టింగ్గా ఉపయోగించండి"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-గంటల ఫార్మాట్ను ఉపయోగించండి"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"సమయం"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"వేలిని పైకి ఎత్తి, ఆపై మళ్లీ సెన్సార్ను తాకండి"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"వేలిముద్ర సెన్సార్ను ఉపయోగించడం సాధ్యం కాదు"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"రిపెయిర్ ప్రొవైడర్ను చూడండి."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"స్క్రీన్-ఆఫ్ వేలిముద్ర అన్లాక్ చేయండి"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"స్క్రీన్ ఆఫ్లో ఉన్నప్పుడు కూడా వేలిముద్ర అన్లాక్ ఫీచర్ను ఉపయోగించండి"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"స్క్రీన్-ఆఫ్, అన్లాక్ చేయండి"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"మరిన్ని సెక్యూరిటీ సెట్టింగ్లు"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"వర్క్ ప్రొఫైల్ లాక్, ఎన్క్రిప్షన్, మరిన్ని"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"ఎన్క్రిప్షన్, ఆధారాలు, మరిన్ని"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"ఏదైనా ఒక కీని వేగంగా మళ్లీ మళ్లీ నొక్కుతుంటే, కీబోర్డ్ దాన్ని విస్మరిస్తుంది"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"బౌన్స్ కీ పరిమితి"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"ఏదైనా ఒక కీని మళ్లీ మళ్లీ నొక్కుతుంటే మీ కీబోర్డ్ దాన్ని ఎంత సమయం పాటు విస్మరించాలో ఎంచుకోండి"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 సెకన్లు"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 సెకన్లు"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 సెకన్లు"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 సెకన్లు"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 సెకన్లు"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 సెకన్లు"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"అనుకూలంగా మార్చుకోండి"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"అనుకూల విలువ"</string>
<string name="slow_keys" msgid="2891452895499690837">"నిదానంగా పనిచేసే కీలు"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ఒక కీని నొక్కితే, అది యాక్టివేట్ అయ్యేందుకు పట్టే సమయాన్ని సర్దుబాటు చేస్తుంది"</string>
<string name="sticky_keys" msgid="7317317044898161747">"స్టిక్కీ కీలు"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"షార్ట్కట్ల కోసం కీలను కలిపి హోల్డ్ చేయడానికి బదులు ఒకసారి ఒక కీని నొక్కండి"</string>
<string name="mouse_keys" msgid="6237254627808525540">"మౌస్ కీలు"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"మౌస్ కీలను ఉపయోగించండి"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"మీ కీబోర్డ్ను ఉపయోగించి పాయింటర్ను కంట్రోల్ చేయండి"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"మౌస్ రివర్స్ స్క్రోలింగ్"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"పేజీని కిందికి కదిలించడానికి పైకి స్క్రోల్ చేయండి"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"ఎడమ, కుడి బటన్లను మార్చండి"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ఎడమ మౌస్ బటన్ను, కుడి బటన్గా ఉపయోగించండి"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> కోసం మౌస్ కీలు"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"మౌస్ పాయింటర్ను తరలించడానికి <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> కీలను ఉపయోగించండి"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ప్రైమరీ మౌస్ బటన్ను క్లిక్ చేయడానికి <xliff:g id="CLICK_LABEL">%s</xliff:g> కీని ఉపయోగించండి"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ప్రైమరీ మౌస్ బటన్ను నొక్కి & పట్టుకోవడానికి <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> కీని ఉపయోగించండి"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ప్రైమరీ మౌస్ బటన్ను రిలీజ్ చేయడానికి <xliff:g id="RELEASE_LABEL">%s</xliff:g> కీని ఉపయోగించండి"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"స్క్రోల్ మోడ్ను టోగుల్ చేయడానికి <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> కీని ఉపయోగించండి. ఇది <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> కీలకు సంబంధించిన వీక్షణను పైకి, కిందకి, ఎడమ లేదా కుడి వైపునకు స్క్రోల్ చేస్తుంది"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"సెకండరీ మౌస్ బటన్ను క్లిక్ చేయడానికి <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> కీని ఉపయోగించండి"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"కీబోర్డ్ షార్ట్కట్లు"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"షార్ట్కట్ల లిస్ట్ను చూడండి"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"కార్యాలయ ప్రొఫైల్ కీబోర్డ్లు & సాధనాలు"</string>
@@ -1992,7 +2008,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"తెలుపు రంగు"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"నలుపు రంగు"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"ఏదీ వద్దు"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"టచ్ప్యాడ్ సంజ్ఞ గూర్చి తెలుసుకోండి"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"టచ్ప్యాడ్ సంజ్ఞలను తెలుసుకోండి"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"ట్రాక్ప్యాడ్, ట్రాక్ ప్యాడ్, మౌస్, కర్సర్, స్క్రోల్, స్వైప్, కుడి క్లిక్, క్లిక్, పాయింటర్"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"కుడి క్లిక్, ట్యాప్"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"మొదటి ట్యాబ్కు వెళ్లండి"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> కొసం కొత్త కీని ఎంచుకోండి:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"ఫిజికల్ కీబోర్డ్ యాక్సెసిబిలిటీ"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"స్టిక్కీ కీలు, బౌన్స్ కీలు, మౌస్ కీలు"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"కీలను రిపీట్ చేయండి"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"రిపీట్ చేయడానికి ముందు జరిగిన ఆలస్యం"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"రిపీట్ రేటు"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"కీని వదిలేంత వరకు దాని క్యారెక్టర్ను రిపీట్ చేయడానికి ఆ కీని నొక్కి పట్టుకోండి"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> లేఅవుట్"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ఆటోమేటిక్"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"ఆటోమేటిక్: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2112,7 +2124,7 @@
<string name="accessibility_pointer_and_touchpad_summary" msgid="6089872217234956258">"పాయింటర్ రంగు, పాయింటర్ సైజు & మరిన్ని"</string>
<string name="accessibility_pointer_color_customization_title" msgid="3376392766113189508">"పాయింటర్ రంగు అనుకూలీకరణ"</string>
<string name="accessibility_color_contrast_title" msgid="5757724357142452378">"కలర్ కాంట్రాస్ట్"</string>
- <string name="accessibility_color_contrast_intro" msgid="7795090401101214930">"బటన్లు, చిహ్నాలను అధిక కాంట్రాస్ట్ టెక్స్ట్ మరింత ప్రత్యేకంగా చేస్తుంది. మీకు ఉత్తమంగా కనిపించే కాంట్రాస్ట్ను ఎంచుకోండి."</string>
+ <string name="accessibility_color_contrast_intro" msgid="7795090401101214930">"అధిక కాంట్రాస్ట్ టెక్స్ట్ వల్ల బటన్లు, చిహ్నాలు మరింత ప్రత్యేకంగా కనబడతాయి. మీకు ఏ స్థాయి కాంట్రాస్ట్ ఉత్తమంగా కనిపిస్తుందో దానిని ఎంచుకోండి."</string>
<string name="color_contrast_note" msgid="7592686603372566198">"కొన్ని యాప్లు అన్ని రంగు, టెక్స్ట్ కాంట్రాస్ట్ సెట్టింగ్లకు సపోర్ట్ చేయకపోవచ్చు"</string>
<string name="color_contrast_preview" msgid="6791430227535363883">"ప్రివ్యూ"</string>
<string name="color_contrast_preview_sender_name" msgid="8641943417589238147">"హెలెన్, ఆడమ్"</string>
@@ -2537,7 +2549,7 @@
<string name="power_usage_level_and_status" msgid="821521456989429593">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATUS">%2$s</xliff:g>"</string>
<string name="power_discharge_remaining" msgid="6997529817917076536">"<xliff:g id="REMAIN">%1$s</xliff:g> ఉంది"</string>
<string name="power_charge_remaining" msgid="7046064326172265116">"<xliff:g id="UNTIL_CHARGED">%1$s</xliff:g>లోపు ఛార్జ్ చేయాలి"</string>
- <string name="power_usage_detail_screen_time" msgid="6027274749498485283">"పరికర వినియోగ వ్యవధి"</string>
+ <string name="power_usage_detail_screen_time" msgid="6027274749498485283">"స్క్రీన్ టైమ్"</string>
<string name="power_usage_detail_background_time" msgid="3661437083554322691">"బ్యాక్గ్రౌండ్ సమయం"</string>
<string name="low_battery_summary" msgid="4458925347316501953">"బ్యాటరీ తక్కువ ఉంది"</string>
<string name="background_activity_summary" msgid="3817376868497046016">"బ్యాక్గ్రౌండ్లో అమలు కావడానికి యాప్ను అనుమతించండి"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"శక్తి వినియోగాన్ని సర్దుబాటు చేయండి"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"చేర్చబడిన ప్యాకేజీలు"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"యాప్లు సాధారణంగా అమలు అవుతున్నాయి"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"బ్యాటరీని రీప్లేస్ చేయమని సిఫార్సు చేయబడింది"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"బ్యాటరీ సామర్థ్యం, ఛార్జింగ్ పనితీరు తగ్గింది, బ్యాటరీని రీప్లేస్ చేయమని సిఫార్సు చేయబడింది."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"బ్యాటరీ స్థాయి తక్కువగా ఉంది"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"బ్యాటరీ జీవితకాలాన్ని పెంచడానికి బ్యాటరీ సేవర్ను ఆన్ చేయండి"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"బ్యాటరీ జీవితకాలాన్ని మెరుగుపరుచుకోండి"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ఈ VPNను డిస్కనెక్ట్ చేయాలా?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"డిస్కనెక్ట్ చేయండి"</string>
<string name="vpn_version" msgid="6344167191984400976">"వెర్షన్"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"వెర్షన్ <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPNని విస్మరించు"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"ఇప్పటికే ఉన్న VPNని భర్తీ చేయాలా?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ఎల్లప్పుడూ ఆన్లో ఉండే VPNని సెట్ చేయాలా?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 AM - 5 PM వారపు రోజులు\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"క్యాలెండర్ ఈవెంట్లు"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} యాక్టివ్గా ఉంది}=2{{mode_1}, {mode_2} యాక్టివ్గా ఉన్నాయి}=3{{mode_1}, {mode_2}, {mode_3} యాక్టివ్గా ఉన్నాయి}other{{mode_1}, {mode_2}, మరో # యాక్టివ్గా ఉన్నాయి}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 మోడ్ ఆటోమేటిక్గా ఆన్ అవుతుంది}other{# మోడ్లు ఆటోమేటిక్గా ఆన్ అవుతాయి}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{అంతరాయం కలిగించవద్దు}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ఆన్ అయింది"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"సెట్ చేసి లేదు"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"డిజేబుల్ చేయబడింది"</string>
@@ -3434,10 +3447,10 @@
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"ఎడిట్"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"షెడ్యూళ్లు"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"షెడ్యూల్"</string>
- <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"ఆటోమేటిక్ ఎప్పుడు ఆన్ అవ్వాలి"</string>
+ <string name="zen_mode_automatic_trigger_title" msgid="6223547583969661361">"ఆటోమేటిక్ ఆన్ ఎప్పుడు అవ్వాలి"</string>
<string name="zen_mode_set_calendar_title" msgid="609741570346510347">"ఈవెంట్ షెడ్యూల్"</string>
<string name="zen_mode_set_calendar_which_calendar" msgid="7520289688350942687">"ఈ ఈవెంట్ల సమయంలో ఆన్ చేయండి"</string>
- <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"ఆహ్వాన రిప్లయి ఎక్కడ ఉంది"</string>
+ <string name="zen_mode_set_calendar_which_reply" msgid="3136872740890390233">"ఆహ్వానానికి రిప్లయి ఏమిటి"</string>
<string name="zen_mode_set_schedule_title" msgid="8767170965922472951">"టైమ్ షెడ్యూల్"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"షెడ్యూల్ చేయండి"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> గం., <xliff:g id="MINUTES">%2$d</xliff:g> నిమి."</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"తక్కువ వ్యవధిలో మీరు పలు నోటిఫికేషన్లను పొందినప్పుడు, 2 నిమిషాలకు మీ పరికర వాల్యూమ్ను తగ్గించి, అలర్ట్లను కుదిస్తుంది. కాల్స్, అలారాలు, ప్రాధాన్య సంభాషణలు ప్రభావితం కావు. \n\nకూల్డౌన్ సమయంలో అందుకున్న నోటిఫికేషన్లను, స్క్రీన్ను పై నుండి కిందికి లాగడం ద్వారా కనుగొనవచ్చు."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"వర్క్ ప్రొఫైల్లకు వర్తింపజేయండి"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"వర్క్ ప్రొఫైల్ యాప్లకు వర్తింపజేయండి"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR సహాయక సర్వీసులు"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"ఇన్స్టాల్ చేసిన యాప్లేవీ వాటిని VR సహాయక సర్వీసులుగా రన్ చేయాల్సిందిగా రిక్వెస్ట్ చేయలేదు."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> కోసం VR సేవ యాక్సెస్ను అనుమతించాలా?"</string>
@@ -3800,9 +3823,9 @@
<string name="zen_mode_event_rule_calendar" msgid="6279460374929508907">"వీటి సంబంధిత ఈవెంట్ల సమయంలో"</string>
<string name="zen_mode_event_rule_calendar_any" msgid="5152139705998281205">"ఏదైనా క్యాలెండర్"</string>
<string name="zen_mode_event_rule_reply" msgid="6099405414361340225">"రిప్లయి ఇలా ఉంటే"</string>
- <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"అవును, కావచ్చు లేదా రిప్లయి ఇవ్వకున్నా"</string>
- <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"అవును లేదా కావచ్చు అని తెలిపితే"</string>
- <string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"హాజరు అవుతాము అన్నవి"</string>
+ <string name="zen_mode_event_rule_reply_any_except_no" msgid="4672746760505346596">"అవును, అవకాశం ఉంది, లేదా రిప్లయి లేదు"</string>
+ <string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="6584448788100186574">"అవును, అవకాశం ఉంది"</string>
+ <string name="zen_mode_event_rule_reply_yes" msgid="7812120982734551236">"అవును"</string>
<string name="zen_mode_rule_not_found_text" msgid="5303667326973891036">"నిబంధన కనుగొనబడలేదు."</string>
<string name="zen_mode_rule_summary_enabled_combination" msgid="1183604368083885789">"ఆన్ / <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_rule_summary_provider_combination" msgid="785343032708491365">"<xliff:g id="PACKAGE">%1$s</xliff:g>\n<xliff:g id="SUMMARY">%2$s</xliff:g>"</string>
@@ -4457,7 +4480,7 @@
<string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"ఈ కింది దాని కోసం స్వైప్ చేయండి"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"దీని కోసం షార్ట్కట్ను ఉపయోగించండి"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"మీ స్క్రీన్ పైభాగాన్ని కిందకి లాగండి, తద్వారా ఒక చేత్తో సులభంగా ఆపరేట్ చేయవచ్చు"</string>
- <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"వన్-హ్యాండెడ్ మోడ్ను ఎలా ఉపయోగించాలి"</b>\n" • సిస్టమ్ నావిగేషన్ సెట్టింగ్లలో సంజ్ఞ నావిగేషన్ ఎంచుకోబడిందని నిర్ధారించుకోండి\n • స్క్రీన్ దిగువ అంచు దగ్గర కిందకు స్వయిప్ చేయండి"</string>
+ <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"వన్-హ్యాండెడ్ మోడ్ను ఎలా ఉపయోగించాలి"</b>\n" • సిస్టమ్ నావిగేషన్ సెట్టింగ్లలో సంజ్ఞ నావిగేషన్ ఎంచుకోబడిందని నిర్ధారించుకోండి\n • స్క్రీన్ దిగువ అంచు దగ్గర కిందకు స్వైప్ చేయండి"</string>
<string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"బొటన వేలు చేరే వరకు స్క్రీన్ను లాగండి"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"స్క్రీన్ పైభాగం మీ బొటనవేలు పైభాగానికి చేరుకుంటుంది."</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"నోటిఫికేషన్లను చూపండి"</string>
@@ -5149,7 +5172,7 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"యాప్ను పిన్ చేయడాన్ని ఉపయోగించండి"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"డెవలపర్ ఆప్షన్లను ఉపయోగించండి"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"ప్రింట్ సర్వీస్ను ఉపయోగించండి"</string>
- <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"యూజర్ స్విచ్ను అనుమతించండి"</string>
+ <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"యూజర్లు మారేందుకు అనుమతించండి"</string>
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"అనుమతించు, బహుళ, యూజర్, అనుమతి, అనేకం"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"పలు, యూజర్లు, ప్రొఫైళ్లు, వ్యక్తులు, ఖాతాలు, మారడం, చాలా"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"వైర్లెస్ డీబగ్గింగ్ ఫీచర్ను ఉపయోగించండి"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"స్ట్రీమ్ వినండి"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో వినడానికి ఆడియో స్ట్రీమ్ QR కోడ్ను స్కాన్ చేయండి"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"షేర్ చేస్తున్నప్పుడు పాస్వర్డ్ను ఎడిట్ చేయడం సాధ్యం కాదు. పాస్వర్డ్ మార్చడానికి, ముందుగా ఆడియో షేరింగ్ను ఆఫ్ చేయండి."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"మీ పాస్వర్డ్ తప్పనిసరిగా 4-16 క్యారెక్టర్లను కలిగి ఉండాలి, ఇంకా అక్షరాలు, నంబర్లు, లేదా చిహ్నాలను మాత్రమే ఉపయోగించాలి"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR కోడ్ స్కానర్"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"సహాయం కావాలా?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"సెట్టింగ్లలో సెర్చ్ చేయండి"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"పరికరం మాత్రమే"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"కొత్త కాంటాక్ట్లు ఖాతాతో సింక్ అవ్వవు"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"కాంటాక్ట్లు మీ పరికరంలో సేవ్ అయ్యి, ఆటోమేటిక్గా మీ ఖాతాకు సింక్ అవుతాయి"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ఆటోమేటిక్ సెట్టింగ్ సెట్ చేయబడలేదు"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ఆటోమేటిక్ ఖాతాను సెట్ చేయడంలో ఎర్రర్ ఏర్పడింది"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ఆటోమేటిక్ సెట్టింగ్ సెట్ చేయబడలేదు"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"పరికరం మాత్రమే"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"ప్రారంభించడానికి ఒక ఖాతాను జోడించండి"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"సెర్చ్ చేయడానికి సర్కిల్ గీయండి"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"మీ స్క్రీన్పై ఉన్న కంటెంట్ను ఉపయోగించి సెర్చ్ చేయడానికి హోమ్ బటన్ లేదా నావిగేషన్ హ్యాండిల్ను నొక్కి, పట్టుకోండి."</string>
</resources>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index b517a84..665a87a 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"กระเป๋าเอกสาร"</item>
+ <item msgid="184985872234062767">"อาคารคลาสสิก"</item>
+ <item msgid="9189550412466785530">"อาคารอพาร์ตเมนต์"</item>
+ <item msgid="2142527562511049422">"ลูกโป่งคำพูด"</item>
+ <item msgid="2548100558260478605">"กลุ่มคน"</item>
+ <item msgid="2270003903304578284">"หลอดไฟ"</item>
+ <item msgid="4793496619091161864">"ปฏิทิน"</item>
+ <item msgid="5673625795644364100">"ห้ามรบกวน"</item>
+ <item msgid="1423820834865831361">"คนกำลังวิ่ง"</item>
+ <item msgid="2037298830718732608">"กอล์ฟ"</item>
+ <item msgid="2197835014443491074">"ดัมเบลล์ในยิม"</item>
+ <item msgid="2730180105015616518">"ว่ายน้ำ"</item>
+ <item msgid="2666922823253345958">"คนกำลังปีนเขา"</item>
+ <item msgid="8234880356472211396">"คนขว้างบอล"</item>
+ <item msgid="4642980625253001443">"คนทำท่าเตะ"</item>
+ <item msgid="4324795269518833500">"เกมคอนโทรลเลอร์"</item>
+ <item msgid="7789966425125441125">"จานสีของศิลปิน"</item>
+ <item msgid="663512680597461570">"เกล็ดหิมะ"</item>
+ <item msgid="7952183800501346803">"ร่มชายหาด"</item>
+ <item msgid="799139025758265891">"เครื่องมือเวิร์กช็อป"</item>
+ <item msgid="8112685757657659269">"เปียโน"</item>
+ <item msgid="3861584909935022342">"ม้วนฟิล์ม"</item>
+ <item msgid="5827426100157335512">"หนังสือ"</item>
+ <item msgid="8585828346253128384">"ดอกบัว"</item>
+ <item msgid="8788370542815300188">"คนกำลังครุ่นคิด"</item>
+ <item msgid="7287354964767553293">"หูฟัง"</item>
+ <item msgid="2530059623783800987">"ทีวี"</item>
+ <item msgid="5307182323469376758">"รถไฟ"</item>
+ <item msgid="4903790544026923026">"รถยนต์"</item>
+ <item msgid="5010405583912314582">"ส้อมและมีด"</item>
+ <item msgid="8939998598599064900">"รถเข็นสินค้า"</item>
+ <item msgid="3379605903308731893">"บุตร"</item>
+ <item msgid="7808668968550293112">"อุ้งเท้าสัตว์"</item>
+ <item msgid="1000692647524056504">"ป้ายดาว"</item>
+ <item msgid="8270261073421676502">"คน 2 คน"</item>
+ <item msgid="5767782819651505460">"ดาว"</item>
+ <item msgid="4368451291862729334">"หัวใจ"</item>
+ <item msgid="2613199102208419986">"บ้าน"</item>
+ <item msgid="3022279986430275040">"พระจันทร์ครึ่งดวง"</item>
+ <item msgid="5421089790869483206">"นาฬิกา"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 874825f..5c3bb47 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"จับคู่อุปกรณ์ใหม่"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"บลูทูธ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"เปิดอัตโนมัติในวันพรุ่งนี้"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"หากปิดบลูทูธ อุปกรณ์จะเปิดอีกครั้งในวันถัดไป"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"จับคู่หูฟังข้างขวา"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"จับคู่หูฟังข้างซ้าย"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"จับคู่หูฟังอีกข้าง"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"ปิดใช้ Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"ปิดใช้ฟีเจอร์ Bluetooth LE Audio หากอุปกรณ์รองรับความสามารถของฮาร์ดแวร์ LE Audio"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"โหมด Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"เปิดใช้ตัวอย่าง UI ที่เกี่ยวข้องกับการออกอากาศผ่าน Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"เปิดใช้ตัวอย่าง UI ที่เกี่ยวข้องกับการแชร์ LE Audio ซึ่งรวมถึงการแชร์เสียงส่วนตัวและการออกอากาศส่วนตัว"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"แสดงปุ่มสลับ LE Audio ในรายละเอียดอุปกรณ์"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"ข้ามรายการที่อนุญาต Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"ใช้ LE Audio โดยค่าเริ่มต้นแม้ว่าอุปกรณ์ต่อพ่วง LE Audio จะไม่ได้รับการยืนยันว่าเป็นไปตามเกณฑ์รายการที่อนุญาตก็ตาม"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"ตั้งค่าอัตโนมัติโดยใช้เครือข่ายและสัญญาณไร้สาย"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"เขตเวลาอัตโนมัติ"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"ตั้งค่าโดยอัตโนมัติตามเครือข่ายมือถือที่อยู่ใกล้คุณ"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"ตั้งค่าโดยอัตโนมัติโดยใช้ตำแหน่งของอุปกรณ์ หากมี"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"ใช้รูปแบบเริ่มต้นในท้องถิ่น"</string>
<string name="date_time_24hour" msgid="286679379105653406">"ใช้รูปแบบ 24 ชั่วโมง"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"เวลา"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"ยกนิ้วขึ้น แล้วแตะเซ็นเซอร์อีกครั้ง"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"ใช้เซ็นเซอร์ลายนิ้วมือไม่ได้"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"โปรดติดต่อผู้ให้บริการซ่อม"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"การปลดล็อกด้วยลายนิ้วมือเมื่อหน้าจอปิด"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"ใช้การปลดล็อกด้วยลายนิ้วมือแม้หน้าจอจะปิดอยู่"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"ปิดหน้าจอ ปลดล็อก"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"การตั้งค่าการรักษาความปลอดภัยเพิ่มเติม"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"ล็อกโปรไฟล์งาน การเข้ารหัส และอื่นๆ"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"การเข้ารหัส ข้อมูลเข้าสู่ระบบ และอื่นๆ"</string>
@@ -1950,23 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"แป้นพิมพ์จะละเว้นการกดปุ่มเดียวกันซ้ำๆ อย่างรวดเร็ว"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"เกณฑ์คีย์ตีกลับ"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"เลือกระยะเวลาที่แป้นพิมพ์จะละเว้นการกดปุ่มซ้ำ"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 วินาที"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 วินาที"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 วินาที"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 วินาที"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 วินาที"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 วินาที"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"กำหนดเอง"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"ค่าที่กำหนดเอง"</string>
<string name="slow_keys" msgid="2891452895499690837">"เพิ่มระยะเวลาในการกดปุ่ม"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"ปรับเวลาที่ใช้ในการกดปุ่มเพื่อเปิดใช้งาน"</string>
<string name="sticky_keys" msgid="7317317044898161747">"คีย์ติดหนึบ"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"กดทีละปุ่มเพื่อใช้แป้นพิมพ์ลัดแทนการกดปุ่มค้างไว้พร้อมกัน"</string>
<string name="mouse_keys" msgid="6237254627808525540">"แป้นเมาส์"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ใช้แป้นเมาส์"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"ใช้แป้นพิมพ์เพื่อควบคุมตัวชี้"</string>
- <!-- no translation found for mouse_reverse_vertical_scrolling (154907817154779952) -->
- <skip />
- <!-- no translation found for mouse_reverse_vertical_scrolling_summary (3386655598642587942) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button (3028204969091057207) -->
- <skip />
- <!-- no translation found for mouse_swap_primary_button_summary (3276638019321067902) -->
- <skip />
+ <string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"การเลื่อนเมาส์แบบกลับด้าน"</string>
+ <string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"เลื่อนขึ้นเพื่อเลื่อนหน้าลง"</string>
+ <string name="mouse_swap_primary_button" msgid="3028204969091057207">"สลับปุ่มซ้ายและขวา"</string>
+ <string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"ใช้ปุ่มเมาส์ด้านซ้ายเป็นปุ่มขวา"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"แป้นเมาส์สำหรับ <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ใช้แป้น <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> เพื่อเลื่อนเคอร์เซอร์เมาส์"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"ใช้แป้น <xliff:g id="CLICK_LABEL">%s</xliff:g> เพื่อคลิกปุ่มหลักของเมาส์"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"ใช้แป้น <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> เพื่อกดปุ่มหลักของเมาส์ค้างไว้"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"ใช้แป้น <xliff:g id="RELEASE_LABEL">%s</xliff:g> เพื่อปล่อยปุ่มหลักของเมาส์"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"ใช้แป้น <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> เพื่อเปิด/ปิดโหมดเลื่อน ซึ่งจะทำให้แป้น <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> เลื่อนมุมมองขึ้น ลง ไปทางซ้าย หรือขวา"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ใช้แป้น <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> เพื่อคลิกปุ่มรองของเมาส์"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"แป้นพิมพ์ลัด"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"แสดงรายการแป้นพิมพ์ลัด"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"แป้นพิมพ์และเครื่องมือของโปรไฟล์งาน"</string>
@@ -2035,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"เลือกคีย์ใหม่สำหรับ <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"การช่วยเหลือพิเศษด้วยแป้นพิมพ์จริง"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"คีย์ติดหนึบ คีย์ตีกลับ แป้นเมาส์"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"แป้นพิมพ์ซ้ำ"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"หน่วงเวลาก่อนพิมพ์ซ้ำ"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"อัตราการพิมพ์ซ้ำ"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"กดแป้นค้างไว้เพื่อพิมพ์อักขระซ้ำจนกว่าจะปล่อยแป้น"</string>
<string name="ime_label_title" msgid="8994569521516807168">"เลย์เอาต์ <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ค่าเริ่มต้น"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"อัตโนมัติ: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2220,7 +2227,7 @@
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"หากต้องการเริ่มหรือหยุดการขยาย ให้แตะ 3 ครั้งที่ใดก็ได้บนหน้าจอ"</string>
<string name="accessibility_tutorial_dialog_tripletap_instruction" msgid="7549293553589934">"หากต้องการเริ่มและหยุดการขยาย ให้แตะหน้าจอเร็วๆ %1$d ครั้ง"</string>
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"หากต้องการเริ่มและหยุดการขยาย ให้ใช้ %1$d นิ้วแตะหน้าจอเร็วๆ 2 ครั้ง"</string>
- <string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{หากต้องการใช้ฟีเจอร์นี้ ให้ปัดลงจากด้านบนของหน้าจอ จากนั้นมองหาการ์ด {featureName}}other{หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ # นิ้วปัดลงจากด้านบนของหน้าจอ จากนั้นมองหาการ์ด {featureName}}}"</string>
+ <string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{หากต้องการใช้ฟีเจอร์นี้ ให้ปัดลงจากด้านบนของหน้าจอ จากนั้นมองหาการ์ด \"{featureName}\"}other{หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ # นิ้วปัดลงจากด้านบนของหน้าจอ จากนั้นมองหาการ์ด \"{featureName}\"}}"</string>
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"ทางลัดนี้จะพร้อมใช้งานหลังจากที่คุณตั้งค่าอุปกรณ์เสร็จ"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ 2 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ\n\nหากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้ใช้ 2 นิ้วเลื่อนขึ้นแล้วค้างไว้"</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{หากต้องการใช้ฟีเจอร์นี้ ให้ปัดขึ้นจากด้านล่างของหน้าจอ}other{หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ # นิ้วปัดขึ้นจากด้านล่างของหน้าจอ}}"</string>
@@ -2447,9 +2454,8 @@
<string name="captioning_preview_title" msgid="2888561631323180535">"ดูตัวอย่าง"</string>
<string name="captioning_standard_options_title" msgid="5360264497750980205">"ตัวเลือกมาตรฐาน"</string>
<string name="captioning_locale" msgid="5533303294290661590">"ภาษา"</string>
- <!-- no translation found for captioning_text_size (5764254558945371745) -->
- <skip />
- <string name="captioning_preset" msgid="4174276086501638524">"รูปแบบคำบรรยาย"</string>
+ <string name="captioning_text_size" msgid="5764254558945371745">"ขนาดคำบรรยายแทนเสียง"</string>
+ <string name="captioning_preset" msgid="4174276086501638524">"รูปแบบคำบรรยายแทนเสียง"</string>
<string name="captioning_custom_options_title" msgid="3858866498893566351">"ตัวเลือกที่กำหนดเอง"</string>
<string name="captioning_background_color" msgid="5231412761368883107">"สีพื้นหลัง"</string>
<string name="captioning_background_opacity" msgid="6453738649182382614">"ความทึบแสงของพื้นหลัง"</string>
@@ -2575,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"ปรับการใช้พลังงาน"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"แพ็คเก็จที่รวมมาด้วย"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"แอปทำงานตามปกติ"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"แนะนำให้เปลี่ยนแบตเตอรี่"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"ความจุแบตเตอรี่และประสิทธิภาพการชาร์จลดลง และขอแนะนำให้เปลี่ยนแบตเตอรี่"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"ระดับแบตเตอรี่อ่อน"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"เปิดโหมดประหยัดแบตเตอรี่เพื่อยืดอายุการใช้งานแบตเตอรี่"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"เพิ่มอายุการใช้งานแบตเตอรี่"</string>
@@ -2992,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"ยกเลิกการเชื่อมต่อ VPN นี้ไหม"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"ยกเลิกการเชื่อมต่อ"</string>
<string name="vpn_version" msgid="6344167191984400976">"รุ่น"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"เวอร์ชัน <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"ลืม VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"แทนที่ VPN ที่มีอยู่หรือไม่"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ตั้งค่า VPN แบบเปิดตลอดเวลาหรือไม่"</string>
@@ -3416,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"09:00-17:00 น. วันธรรมดา\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"กิจกรรมในปฏิทิน"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} ทำงานอยู่}=2{{mode_1} และ {mode_2} ทำงานอยู่}=3{{mode_1}, {mode_2} และ {mode_3} ทำงานอยู่}other{{mode_1}, {mode_2} และอีก # โหมดทำงานอยู่}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 โหมดสามารถเปิดได้โดยอัตโนมัติ}other{# โหมดสามารถเปิดได้โดยอัตโนมัติ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ห้ามรบกวน}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"เปิด"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"ไม่ได้ตั้งค่า"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"ปิดอยู่"</string>
@@ -3427,7 +3434,7 @@
<string name="zen_mode_not_found_text" msgid="692090778655810329">"ไม่พบโหมด"</string>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"จำกัดการรบกวน"</string>
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"บล็อกการรบกวนและสิ่งที่จะทำให้เสียสมาธิ"</string>
- <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"ตั้งค่า <xliff:g id="MODE">%1$s</xliff:g>"</string>
+ <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"ตั้งค่า \"<xliff:g id="MODE">%1$s</xliff:g>\""</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"เปิด \"ห้ามรบกวน\""</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"ให้เสียงของการแจ้งเตือนและสื่อรบกวนได้"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"กำหนดการ"</string>
@@ -3720,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"เมื่อคุณได้รับการแจ้งเตือนจำนวนมากภายในเวลาสั้นๆ อุปกรณ์จะลดระดับเสียงและจำนวนการแจ้งเตือนสูงสุด 2 นาที โดยที่การโทร การปลุก และการสนทนาสำคัญจะไม่ได้รับผลกระทบ \n\nดูการแจ้งเตือนที่ได้รับระหว่างระยะเวลาพักได้โดยการดึงลงจากด้านบนของหน้าจอ"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"ใช้กับโปรไฟล์งาน"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"ใช้กับแอปในโปรไฟล์งาน"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"บริการตัวช่วย VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"แอปที่ติดตั้งอยู่ไม่ได้ขอให้เรียกใช้เป็นบริการตัวช่วย VR"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"อนุญาตให้ <xliff:g id="SERVICE">%1$s</xliff:g> เข้าถึงบริการ VR ไหม"</string>
@@ -3934,10 +3951,10 @@
<string name="zen_mode_trigger_title_generic" msgid="1347753445938095789">"การตั้งค่าแอป"</string>
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"ข้อมูลและการตั้งค่าใน <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"จัดการโดย <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"ปิดใช้<xliff:g id="MODE_NAME">%1$s</xliff:g>ใช่ไหม"</string>
+ <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"ปิดใช้ \"<xliff:g id="MODE_NAME">%1$s</xliff:g>\" ใช่ไหม"</string>
<string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"ระบบจะไม่เปิดโหมดนี้เมื่อปิดใช้งานอยู่"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"ปิดใช้"</string>
- <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"เปิดใช้<xliff:g id="MODE_NAME">%1$s</xliff:g>ใช่ไหม"</string>
+ <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"เปิดใช้ \"<xliff:g id="MODE_NAME">%1$s</xliff:g>\" ใช่ไหม"</string>
<string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"โหมดนี้อาจเปิดโดยอัตโนมัติตามการตั้งค่า"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"เปิดใช้"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"ตั้งค่าโหมดที่จะทำตามกำหนดการประจำ"</string>
@@ -4158,9 +4175,9 @@
<string name="zen_access_disabled_package_warning" msgid="6565908224294537889">"ต้องเปิดไว้เสมอ เนื่องจากการเข้าถึงการแจ้งเตือนเปิดอยู่"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="7377261509261811449">"เพิกถอนสิทธิ์การเข้าถึง \"ห้ามรบกวน\" ของ <xliff:g id="APP">%1$s</xliff:g> ไหม"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="8689801842914183595">"ระบบจะนำกฎ \"ห้ามรบกวน\" ทั้งหมดที่แอปนี้สร้างขึ้นออก"</string>
- <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"อนุญาตสิทธิ์เข้าถึงโหมดสำหรับ <xliff:g id="APP">%1$s</xliff:g> ไหม"</string>
+ <string name="zen_modes_access_warning_dialog_title" msgid="8372164559156809659">"อนุญาตสิทธิ์เข้าถึงโหมดสำหรับ \"<xliff:g id="APP">%1$s</xliff:g>\" ใช่ไหม"</string>
<string name="zen_modes_access_warning_dialog_summary" msgid="2432178679607798200">"แอปจะสามารถเปิด/ปิดโหมดห้ามรบกวน จัดการและเปิดใช้งานโหมด รวมถึงเปลี่ยนแปลงการตั้งค่าที่เกี่ยวข้องได้"</string>
- <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"เพิกถอนสิทธิ์เข้าถึงโหมดสำหรับ <xliff:g id="APP">%1$s</xliff:g> ใช่ไหม"</string>
+ <string name="zen_modes_access_revoke_warning_dialog_title" msgid="189454396436517964">"เพิกถอนสิทธิ์เข้าถึงโหมดสำหรับ \"<xliff:g id="APP">%1$s</xliff:g>\" ใช่ไหม"</string>
<string name="zen_modes_access_revoke_warning_dialog_summary" msgid="4669243849023204217">"ระบบจะนำโหมดทั้งหมดที่แอปนี้สร้างออก"</string>
<string name="ignore_optimizations_on" msgid="6865583039303804932">"ไม่เพิ่มประสิทธิภาพ"</string>
<string name="ignore_optimizations_off" msgid="9186557038453586295">"เพิ่มประสิทธิภาพ"</string>
@@ -4462,7 +4479,7 @@
<string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"ปัดลงเพื่อ"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"ใช้ทางลัดเพื่อ"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"ดึงครึ่งบนของหน้าจอลงเพื่อให้เข้าถึงได้ง่ายขึ้นด้วยมือเดียว"</string>
- <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"วิธีใช้โหมดมือเดียว"</b>\n" • ตรวจสอบว่าได้เลือกการนำทางด้วยท่าทางสัมผัสไว้ในการตั้งค่าการไปยังส่วนต่างๆ ของระบบ\n • ปัดลงที่บริเวณขอบด้านล่างของหน้าจอ"</string>
+ <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"วิธีใช้โหมดมือเดียว"</b>\n" • ตรวจสอบว่าได้เลือกการไปยังส่วนต่างๆ ด้วยท่าทางสัมผัสในการตั้งค่าการไปยังส่วนต่างๆ ของระบบ\n • ปัดลงที่บริเวณขอบด้านล่างของหน้าจอ"</string>
<string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"ดึงหน้าจอเข้ามาใกล้"</string>
<string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"ด้านบนของหน้าจอจะเลื่อนเข้ามาใกล้นิ้วโป้ง"</string>
<string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"แสดงการแจ้งเตือน"</string>
@@ -5464,18 +5481,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"ฟังสตรีม"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"สแกนคิวอาร์โค้ดของสตรีมเสียงเพื่อฟังกับ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"แก้ไขรหัสผ่านในระหว่างการแชร์ไม่ได้ หากต้องการเปลี่ยนรหัสผ่าน โปรดปิดการแชร์เสียงก่อน"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"รหัสผ่านต้องมีอักขระ 4-16 ตัว และใช้ได้เฉพาะตัวอักษร ตัวเลข และสัญลักษณ์เท่านั้น"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"ตัวสแกนคิวอาร์โค้ด"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"หากต้องการความช่วยเหลือ"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"ค้นหาในการตั้งค่า"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"ค้นหาการตั้งค่า"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"รายชื่อติดต่อ พื้นที่เก็บข้อมูล บัญชี"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"พื้นที่เก็บข้อมูลรายชื่อติดต่อ"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"อุปกรณ์เท่านั้น"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"รายชื่อติดต่อใหม่จะไม่ซิงค์กับบัญชี"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"ระบบจะบันทึกรายชื่อติดต่อไว้ในอุปกรณ์และซิงค์กับบัญชีของคุณโดยค่าเริ่มต้น"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"ไม่ได้ตั้งค่าบัญชีเริ่มต้น"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"เกิดข้อผิดพลาดในการตั้งค่าบัญชีเริ่มต้น"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"ไม่ได้ตั้งค่าบัญชีเริ่มต้น"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"อุปกรณ์เท่านั้น"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"เพิ่มบัญชีเพื่อเริ่มต้นใช้งาน"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"วงเพื่อค้นหา"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"แตะปุ่มหน้าแรกหรือแฮนเดิลนำทางค้างไว้เพื่อค้นหาโดยใช้เนื้อหาบนหน้าจอ"</string>
</resources>
diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml
index 5ab6f4d..6d1a881 100644
--- a/res/values-tl/arrays.xml
+++ b/res/values-tl/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Briefcase"</item>
+ <item msgid="184985872234062767">"Classical na gusali"</item>
+ <item msgid="9189550412466785530">"Gusali ng apartment"</item>
+ <item msgid="2142527562511049422">"Speech bubble"</item>
+ <item msgid="2548100558260478605">"Grupo ng mga tao"</item>
+ <item msgid="2270003903304578284">"Bumbilya"</item>
+ <item msgid="4793496619091161864">"Kalendaryo"</item>
+ <item msgid="5673625795644364100">"Huwag Istorbohin"</item>
+ <item msgid="1423820834865831361">"Taong tumatakbo"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Dumbbell ng gym"</item>
+ <item msgid="2730180105015616518">"Paglangoy"</item>
+ <item msgid="2666922823253345958">"Taong nagha-hike"</item>
+ <item msgid="8234880356472211396">"Taong naghahagis ng bola"</item>
+ <item msgid="4642980625253001443">"Taong sumisipa"</item>
+ <item msgid="4324795269518833500">"Game controller"</item>
+ <item msgid="7789966425125441125">"Palette ng kulay ng artist"</item>
+ <item msgid="663512680597461570">"Snowflake"</item>
+ <item msgid="7952183800501346803">"Beach umbrella"</item>
+ <item msgid="799139025758265891">"Mga tool sa workshop"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Film reel"</item>
+ <item msgid="5827426100157335512">"Libro"</item>
+ <item msgid="8585828346253128384">"Bulaklak na lotus"</item>
+ <item msgid="8788370542815300188">"Isip ng tao"</item>
+ <item msgid="7287354964767553293">"Headphones"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Kotse"</item>
+ <item msgid="5010405583912314582">"Tinidor at kutsilyo"</item>
+ <item msgid="8939998598599064900">"Shopping cart"</item>
+ <item msgid="3379605903308731893">"Bata"</item>
+ <item msgid="7808668968550293112">"Paa ng hayop"</item>
+ <item msgid="1000692647524056504">"Star badge"</item>
+ <item msgid="8270261073421676502">"Dalawang tao"</item>
+ <item msgid="5767782819651505460">"Bituin"</item>
+ <item msgid="4368451291862729334">"Puso"</item>
+ <item msgid="2613199102208419986">"Bahay"</item>
+ <item msgid="3022279986430275040">"Half-moon"</item>
+ <item msgid="5421089790869483206">"Orasan"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 7fbfb96..dafc0bf 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Magpares ng bagong device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Awtomatikong i-on bukas"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Kung io-off ang Bluetooth, mag-o-on ito sa susunod na araw"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Ipares ang kanan"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Ipares ang kaliwa"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Ipares ang kabila"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"I-disable ang Bluetooth LE audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Dini-disable ang feature na Bluetooth LE audio kung sinusuportahan ng device ang mga kakayahan ng LE audio hardware."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio mode"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"I-enable ang preview ng UI ng Broadcast ng Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Ine-enable ang preview ng UI ng LE Audio Sharing kasama na ang personal na pagbabahagi ng audio at pribadong broadcast"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Ipakita ang toggle ng LE audio sa Mga Detalye ng Device"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"I-bypass ang Allowlist ng Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Gamitin ang LE Audio bilang default kahit na hindi pa na-verify ang peripheral ng LE Audio para matugunan ang mga pamantayan sa Allowlist."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Awtomatikong itakda gamit ang iyong network at mga wireless na signal"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Awtomatikong time zone"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Awtomatikong itakda batay sa mga mobile network na malapit sa iyo"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Awtomatikong itakda gamit ang lokasyon ng iyong device, kung available"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Gamitin ang lokal na default"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Gamitin ang format na 24-oras"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Oras"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Iangat ang daliri, pagkatapos ay pindutin ulit ang sensor"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Hindi magamit ang sensor para sa fingerprint"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Bumisita sa provider ng pagkukumpuni."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Pag-unlock Gamit ang Fingerprint nang naka-off ang screen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Gamitin ang Pag-unlock Gamit ang Fingerprint kahit na naka-off ang screen"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Naka-off ang screen, I-unlock"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Higit pang setting ng seguridad"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Lock ng profile sa trabaho, pag-encrypt, at higit pa"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Pag-encrypt, mga kredensyal, at higit pa"</string>
@@ -623,7 +628,7 @@
<string name="private_space_cancel_label" msgid="379259667396956886">"Kanselahin"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"I-set up"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"Pribadong space"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Itago o i-lock ang mga pribadong space sa isang hiwalay na space. Gumamit ng nakalaang Google Account para sa karagdagang seguridad."</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"I-hide o i-lock ang mga pribadong space sa isang hiwalay na space. Gumamit ng nakalaang Google Account para sa karagdagang seguridad."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Paano ito gumagana"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Gumawa ng Google Account para sa iyong space"</b>\n"Kung gumagamit ka ng nakalaang account, nakakatulong ito para hindi makita sa labas ng iyong space ang mga naka-sync na file, larawan, at email"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Magtakda ng lock"</b>\n"I-lock ang iyong space para mapigilan ang ibang taong buksan ito"</string>
@@ -659,7 +664,7 @@
<string name="private_space_choose_your_password_header" msgid="7660259341095044434">"Magtakda ng password sa pribadong space"</string>
<string name="private_space_choose_your_pattern_header" msgid="2165607102459936724">"Magtakda ng pattern sa pribadong space"</string>
<string name="private_space_category_lock" msgid="1917657024358778169">"I-lock"</string>
- <string name="private_space_category_hide" msgid="3236587591523126649">"Itago"</string>
+ <string name="private_space_category_hide" msgid="3236587591523126649">"I-hide"</string>
<string name="private_space_confirm_your_pattern_header" msgid="449382220134788771">"Kumpirmahin ang pattern ng pribadong space mo"</string>
<string name="private_space_confirm_your_pin_header" msgid="4543332157470087796">"Ilagay ulit ang PIN ng pribadong space mo"</string>
<string name="private_space_confirm_your_password_header" msgid="9202308075814307169">"Ilagay ulit ang password ng pribadong space mo"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Binabalewala ng keyboard ang mabilis na paulit-ulit na pagpindot sa iisang key"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Limitasyon ng bounce key"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Piliin kung gaano katagal babalewalain ng iyong keyboard ang paulit-ulit na pagpindot sa key"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Custom"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"custom na bilang"</string>
<string name="slow_keys" msgid="2891452895499690837">"Mga slow key"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"I-adjust kung gaano katagal bago ma-activate ang pagpindot ng key"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Mga sticky key"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Paisa-isang pumindot ng key para sa mga shortcut sa halip na sabay-sabay na pindutin ang mga key"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Mga mouse key"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Gamitin ang mga mouse key"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Gamitin ang iyong keyboard para kontrolin ang pointer"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Reverse na pag-scroll ng mouse"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Mag-scroll pataas para ibaba ang page"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Pagpalitin ang kaliwa at kanang button"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Gamitin ang kaliwang button ng mouse bilang iyong kanan"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Mga mouse key para sa <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Gamitin ang mga <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> key para igalaw ang pointer ng mouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Gamitin ang <xliff:g id="CLICK_LABEL">%s</xliff:g> key para i-click ang pangunahing mouse button"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Gamitin ang <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> key para pindutin nang matagal ang pangunahing mouse button"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Gamitin ang <xliff:g id="RELEASE_LABEL">%s</xliff:g> key para i-release ang pangunahing mouse button"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Gamitin ang <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> key para i-toggle ang scroll mode. Ipapa-scroll nito sa mga <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> key ang view pataas, pababa, pakaliwa, o pakanan"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Gamitin ang <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> key para i-click ang ikalawang mouse button"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Mga keyboard shortcut"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Ipakita ang listahan ng mga shortcut"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Mga keyboard at tool ng profile sa trabaho"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Pumili ng bagong key para sa <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Accessibility ng pisikal na keyboard"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Mga sticky key, Mga bounce key, Mga mouse key"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Mga Umuulit na Key"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Pagkaantala bago umulit"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Rate ng Pag-uulit"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Pindutin nang matagal ang isang key para ulitin ang character nito hanggang sa bitawan ang key"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Layout na <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Default"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Awtomatiko: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Isaayos ang paggamit ng power"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Mga kasamang package"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Gumagana nang normal ang mga app"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Inirerekomendang palitan ang baterya"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Bawas na ang kapasidad ng baterya at performance ng pag-charge, at inirerekomendang palitan ang baterya."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Paubos na ang baterya"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"I-on ang Pantipid ng Baterya para patagalin ang baterya"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Patagalin ang baterya"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Putulin ang koneksyon ng VPN na ito?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Putulin ang koneksyon"</string>
<string name="vpn_version" msgid="6344167191984400976">"Bersyon"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Bersyon <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Kalimutan ang VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Gusto mo bang palitan ang dati nang VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Gusto mo bang itakda ang VPN na palaging naka-on?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 AM - 5 PM tuwing weekday\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Mga event sa kalendaryo"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Aktibo ang {mode_1}}=2{Aktibo ang {mode_1} at {mode_2}}=3{Aktibo ang {mode_1}, {mode_2}, at {mode_3}}one{Aktibo ang {mode_1}, {mode_2}, at # pa}other{Aktibo ang {mode_1}, {mode_2}, at # pa}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mode ang puwedeng awtomatikong mag-on}one{# mode ang puwedeng awtomatikong mag-on}other{# na mode ang puwedeng awtomatikong mag-on}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Huwag Istorbohin}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"NAKA-ON"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Hindi nakatakda"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Naka-disable"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kapag nakatanggap ka ng maraming notification sa loob ng maikling panahon, hihinaan ng iyong device ang volume nito at imi-minimize nito ang mga alerto sa loob ng hanggang 2 minuto. Hindi maaapektuhan ang mga tawag, alarm, at priyoridad na pag-uusap. \n\nMakikita ang mga notification na matatanggap habang cooldown sa pamamagitan ng paghila pababa mula sa itaas ng screen."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Ilapat sa mga profile sa trabaho"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Ilapat sa mga app ng profile sa trabaho"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Mga serbisyong pantulong sa VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Walang mga naka-install na app ang humiling na mapagana bilang mga serbisyong pantulong sa VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Payagan ang access sa serbisyo ng VR para sa <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Makinig sa stream"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Mag-scan ng QR code ng audio stream para makinig sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Hindi mae-edit ang password habang nagbabahagi. Para palitan ang password, i-off muna ang pag-share ng audio."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Dapat may 4-16 na character ang password mo at mga titik, numero, at simbolo lang dapat ang nilalaman nito"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Scanner ng QR code"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Kailangan ng tulong?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Maghanap sa Mga Setting"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Device lang"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Hindi masi-sync sa account ang mga bagong contact"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Ise-save sa iyong device at isi-sync sa iyong account bilang default ang mga contact"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Walang itinakdang default"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Nagka-error sa pagtatakda ng default na account"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Walang itinakdang default"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Device lang"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Magdagdag ng account para magsimula"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Circle to Search"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Pindutin nang matagal ang button ng Home o handle ng navigation para maghanap gamit ang content sa iyong screen."</string>
</resources>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index 6b2bea4..0a50c87 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Evrak çantası"</item>
+ <item msgid="184985872234062767">"Klasik bina"</item>
+ <item msgid="9189550412466785530">"Apartman binası"</item>
+ <item msgid="2142527562511049422">"Konuşma balonu"</item>
+ <item msgid="2548100558260478605">"Bir grup insan"</item>
+ <item msgid="2270003903304578284">"Ampul"</item>
+ <item msgid="4793496619091161864">"Takvim"</item>
+ <item msgid="5673625795644364100">"Rahatsız Etmeyin"</item>
+ <item msgid="1423820834865831361">"Koşan bir kişi"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Spor salonu dambılı"</item>
+ <item msgid="2730180105015616518">"Yüzme"</item>
+ <item msgid="2666922823253345958">"Doğa yürüyüşü yapan bir kişi"</item>
+ <item msgid="8234880356472211396">"Top atan bir kişi"</item>
+ <item msgid="4642980625253001443">"Tekme atan bir kişi"</item>
+ <item msgid="4324795269518833500">"Oyun kumandası"</item>
+ <item msgid="7789966425125441125">"Sanatçı renk paleti"</item>
+ <item msgid="663512680597461570">"Kar tanesi"</item>
+ <item msgid="7952183800501346803">"Plaj şemsiyesi"</item>
+ <item msgid="799139025758265891">"Atölye araçları"</item>
+ <item msgid="8112685757657659269">"Piyano"</item>
+ <item msgid="3861584909935022342">"Film rulosu"</item>
+ <item msgid="5827426100157335512">"Kitap"</item>
+ <item msgid="8585828346253128384">"Nilüfer çiçeği"</item>
+ <item msgid="8788370542815300188">"İnsan aklı"</item>
+ <item msgid="7287354964767553293">"Kulaklık"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Tren"</item>
+ <item msgid="4903790544026923026">"Araba"</item>
+ <item msgid="5010405583912314582">"Çatal ve bıçak"</item>
+ <item msgid="8939998598599064900">"Alışveriş sepeti"</item>
+ <item msgid="3379605903308731893">"Çocuk"</item>
+ <item msgid="7808668968550293112">"Hayvan pençesi"</item>
+ <item msgid="1000692647524056504">"Yıldız rozeti"</item>
+ <item msgid="8270261073421676502">"İki kişi"</item>
+ <item msgid="5767782819651505460">"Yıldız"</item>
+ <item msgid="4368451291862729334">"Kalp"</item>
+ <item msgid="2613199102208419986">"Ev"</item>
+ <item msgid="3022279986430275040">"Yarım ay"</item>
+ <item msgid="5421089790869483206">"Saat"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 624ef1c..2c1ef0f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Yeni cihaz eşle"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Yarın otomatik olarak aç"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Sağ kulağı eşle"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Sol kulağı eşle"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Diğer kulağınızı eşleyin"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audio\'yu devre dışı bırak"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Cihaz, LE Audio donanımı özelliklerini destekliyorsa Bluetooth LE Audio özelliğini devre dışı bırakır."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio modu"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio Broadcast kullanıcı arayüzü önizlemesini etkinleştir"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Kişisel ses paylaşımı ve özel yayın dahil olmak üzere LE Audio Sharing kullanıcı arayüzü önizlemesini etkinleştirir"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Cihaz Ayrıntıları\'nda LE Audio açma/kapatmayı göster"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio izin verilenler listesini atla"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio çevre biriminin, izin verilenler listesi kriterlerini karşıladığı doğrulanmamış olsa bile varsayılan olarak LE Audio\'yu kullanın."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Ağınızı ve kablosuz sinyallerinizi kullanarak otomatik olarak ayarlayın"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Otomatik saat dilimi"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Yakınınızdaki mobil ağlara göre otomatik olarak ayarlayın"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Varsa cihazınızın konumu ile otomatik olarak ayarlanır"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Yerel ayar varsayılan değerini kullan"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 saat biçimini kullan"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Saat"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Parmağınızı kaldırın ve sensöre tekrar dokunun"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Parmak izi sensörü kullanılamıyor"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Bir onarım hizmeti sağlayıcıyı ziyaret edin."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ekran Kapalıyken Parmak İzi Kilidi ile Kilit Açma"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Parmak İzi Kilidi\'ni ekran kapalıyken de kullanın"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ekran kapalı, Kilidi aç"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Daha fazla güvenlik ayarı"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"İş profili kilidi, şifreleme ve daha fazlası"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Şifreleme, kimlik bilgisi ve daha fazlası"</string>
@@ -1631,7 +1637,7 @@
<string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Uygulamaların ve hizmetlerin etrafınızdaki cihazları Bluetooth kapalıyken bile her zaman taramasına izin verir. Bu özellik, örneğin, konuma dayalı özellikleri ve hizmetleri iyileştirmek için kullanılabilir."</string>
<string name="location_services_preference_title" msgid="604317859531782159">"Konum hizmetleri"</string>
<string name="location_services_screen_title" msgid="5640002489976602476">"Konum hizmetleri"</string>
- <string name="location_time_zone_detection_toggle_title" msgid="720338048522014712">"Saat dilimi için konumu kullanın"</string>
+ <string name="location_time_zone_detection_toggle_title" msgid="720338048522014712">"Saat dilimi için konumu kullan"</string>
<string name="location_time_zone_detection_status_title" msgid="8903495354385600423">"Saat dilimi otomatik olarak ayarlanamıyor"</string>
<string name="location_time_zone_detection_status_summary_degraded_by_settings" msgid="6198939835335841106"></string>
<string name="location_time_zone_detection_status_summary_blocked_by_settings" msgid="5276280770344278768">"Konum veya Konum Hizmetleri kapalı"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klavye, aynı tuşa hızlı bir şekilde tekrarlanan basma işlemlerini yoksayar"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Tekrarlı basmayı yoksayma tuş eşiği"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Klavyenizin, tuşlara ne kadar süre içinde tekrarlanan basma işlemlerini yoksayacağını seçin"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 saniye"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 saniye"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 saniye"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 saniye"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 saniye"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 saniye"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Özel"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"özel değer"</string>
<string name="slow_keys" msgid="2891452895499690837">"Yavaş tuşlar"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Bir tuşa basma işleminin etkinleştirileceği süreyi ayarlar"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Yapışkan tuşlar"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Tuşları aynı anda basılı tutmak yerine kısayollar için tek seferde bir tuşa basın"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Fare tuşları"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Fare tuşlarını kullan"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"İşaretçiyi kontrol etmek için klavyenizi kullanın"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Fare ters kaydırma"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Sayfayı aşağı taşımak için yukarı kaydırın"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Sol ve sağ düğmeleri değiştir"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Sol fare düğmesini sağ fare düğmesi olarak kullanın"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> için fare tuşları"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Fare işaretçisini hareket ettirmek için <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> tuşlarını kullanın"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Birincil fare düğmesini tıklamak için <xliff:g id="CLICK_LABEL">%s</xliff:g> tuşunu kullanın"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Birincil fare düğmesini basılı tutmak için <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> tuşunu kullanın"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Birincil fare düğmesini bırakmak için <xliff:g id="RELEASE_LABEL">%s</xliff:g> tuşunu kullanın"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Kaydırma modları arasında geçiş yapmak için <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> tuşunu kullanın. Bu durumda <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> tuşları, görünümü yukarı, aşağı, sola veya sağa kaydırır"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"İkincil fare düğmesini tıklamak için <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> tuşunu kullanın"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Klavye kısayolları"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Kısayol listesini göster"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"İş profili klavyeleri ve araçları"</string>
@@ -1992,7 +2008,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"Beyaz"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"Siyah"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"Yok"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Dokunmatik alan hareketlerini öğren"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Dokunmatik alan hareketlerini öğrenin"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"dokunmatik yüzey, dokunma yüzeyi, fare, imleç, kaydırma, sağ tıklama, tıklama, işaretçi"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"sağ tıklama, dokunma"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"Ana ekrana gidin"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> için yeni bir tuş seçin:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Fiziksel klavye erişilebilirliği"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Yapışkan tuşlar, geri sekme tuşları, fare tuşları"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Tuşları tekrarla"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Tekrardan önce geciktir"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Tekrarlama oranı"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Aynı karakteri tekrarlamak için ilgili tuşu basılı tutun. Tuş basılı tutulduğu sürece karakter tekrarlanır"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> düzeni"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Varsayılan"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Otomatik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2421,8 +2433,8 @@
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"Gri tonlama"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"Yoğunluk"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"Gri tonlama modunda veya renk düzeltme devre dışıyken kullanılamaz"</string>
- <string name="daltonizer_mode_deuteranomaly_summary" msgid="391621040826073327">"Yeşil renk körlüğü"</string>
- <string name="daltonizer_mode_protanomaly_summary" msgid="877971556622350648">"Kırmızı renk körlüğü"</string>
+ <string name="daltonizer_mode_deuteranomaly_summary" msgid="391621040826073327">"Döteranomali"</string>
+ <string name="daltonizer_mode_protanomaly_summary" msgid="877971556622350648">"Protanomali"</string>
<string name="daltonizer_mode_tritanomaly_summary" msgid="2428218320118180070">"Tritanomali"</string>
<string name="reduce_bright_colors_preference_title" msgid="2249314004651574997">"Ekstra loş"</string>
<string name="reduce_bright_colors_switch_title" msgid="1751678397884065312">"Ekranı ekstra loş yap"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Pil kullanımını ayarla"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Dahil olan paketler"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Uygulamalar normal şekilde çalışıyor"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Pilin değiştirilmesi önerilir"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Pil kapasitesi ve şarj performansı azaldı. Pilin değiştirilmesi önerilir."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Düşük pil seviyesi"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Pil ömrünü uzatmak için Pil Tasarrufu özelliğini aç"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Pil ömrünü iyileştirme"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Bu VPN\'nin bağlantısı kesilsin mi?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Bağlantıyı kes"</string>
<string name="vpn_version" msgid="6344167191984400976">"Sürüm"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Sürüm <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN\'yi unut"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Mevcut VPN değiştirilsin mi?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Her zaman açık VPN ayarlansın mı?"</string>
@@ -3278,7 +3291,7 @@
<string name="keywords_factory_data_reset" msgid="4979623326958976773">"temizleme, silme, geri yükleme, kaldırma, fabrika ayarlarına sıfırlama"</string>
<string name="keywords_printing" msgid="3528250034669909466">"yazıcı"</string>
<string name="keywords_sounds" msgid="187191900698371911">"hoparlör bip sesi, hoparlör, ses düzeyi, sesi kapatma, sessiz, ses, müzik, dokunma teknolojisi, titreşim, titreşme"</string>
- <string name="keywords_sounds_and_notifications_interruptions" msgid="1500312884808362467">"rahatsız etmeyin, kesme, kesinti, kopma"</string>
+ <string name="keywords_sounds_and_notifications_interruptions" msgid="1500312884808362467">"rahatsız etmeyin, kesme, kesinti, araya girme"</string>
<string name="keywords_app" msgid="7983814237980258061">"RAM"</string>
<string name="keywords_location" msgid="8016374808099706213">"etrafta, konum, geçmiş, raporlama, GPS"</string>
<string name="keywords_accounts" msgid="3013897982630845506">"hesap, hesap ekle, iş profili, hesap ekleme, kaldır, sil"</string>
@@ -3402,7 +3415,7 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Yok}=1{1 program ayarlandı}other{# program ayarlandı}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Rahatsız Etmeyin"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"Modlar"</string>
- <string name="zen_modes_list_intro" msgid="1795379595115088972">"Uyku, çalışma, sürüş gibi çeşitli modlarla dikkat dağıtan unsurları azaltıp istediğiniz yere odaklanın."</string>
+ <string name="zen_modes_list_intro" msgid="1795379595115088972">"Uyku, çalışma, sürüş gibi çeşitli modlarla dikkat dağıtan unsurları azaltıp istediğiniz şeye odaklanın."</string>
<string name="zen_modes_add_mode" msgid="5926457160307593664">"Kendi modunuzu oluşturun"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Yalnızca önemli kişiler ve uygulamalardan gelen bildirimleri alın"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"Program ayarla"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"hafta içi 09:00-17:00\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Takvim etkinlikleri"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} etkin}=2{{mode_1} ve {mode_2} etkin}=3{{mode_1}, {mode_2} ve {mode_3} etkin}other{{mode_1}, {mode_2} ve # mod daha etkin}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 mod otomatik olarak etkinleştirilebilir}other{# mod otomatik olarak etkinleştirilebilir}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Rahatsız Etmeyin}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"AÇIK"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Ayarlanmadı"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Devre dışı"</string>
@@ -3422,9 +3435,9 @@
<string name="zen_mode_not_found_text" msgid="692090778655810329">"Mod bulunamadı"</string>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Kesintileri sınırlayın"</string>
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Kesintileri ve dikkat dağıtan unsurları engelleyin"</string>
- <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"<xliff:g id="MODE">%1$s</xliff:g> cihazını kur"</string>
+ <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"<xliff:g id="MODE">%1$s</xliff:g> modunu ayarla"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Rahatsız Etmeyin\'i açın"</string>
- <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarm ve medya sesleri kesintiye neden olabilir"</string>
+ <string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarm ve medya sesleri araya girebilir"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programlar"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Programları sil"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Sil"</string>
@@ -3469,8 +3482,8 @@
<string name="mode_dark_theme_summary" msgid="2808149708986602464">"Gözlerinizi yormayan koyu renkli bir arka plan kullanmak için cihaz temasını değiştirin"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ekranda değişiklik yok}=1{{effect_1}}=2{{effect_1} ve {effect_2}}=3{{effect_1}, {effect_2} ve {effect_3}}other{{effect_1}, {effect_2} ve # ayar daha}}"</string>
<string name="zen_mode_allow_all_notifications" msgid="7300894425550960390">"Tüm bildirimlere izin ver"</string>
- <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Kişiler, uygulamalar ve sesler kesintiye neden olabilir"</string>
- <string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Filtrelenen bildirimlerle ilgili ekran seçenekleri"</string>
+ <string name="zen_mode_all_notifications_allowed" msgid="7612213309293552413">"Kişiler, uygulamalar ve sesler araya girebilir"</string>
+ <string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Filtrelenen bildirimlerin görüntüleme seçenekleri"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Rahatsız Etmeyin ayarı açık olduğunda"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Bildirimlerden sesli uyarı yok"</string>
<string name="zen_mode_restrict_notifications_mute_summary" msgid="966597459849580949">"Bildirimleri ekranınızda göreceksiniz"</string>
@@ -3523,10 +3536,10 @@
<string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 saat}other{# saat}}"</string>
<string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 dakika}other{# dakika}}"</string>
<string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{Kapalı}=1{Kapalı / 1 program otomatik olarak açabilir}other{Kapalı / # program otomatik olarak açabilir}}"</string>
- <string name="zen_category_behavior" msgid="3214056473947178507">"Rahatsız Etmeyin modunda neler kesintiye neden olabilir?"</string>
+ <string name="zen_category_behavior" msgid="3214056473947178507">"Rahatsız Etmeyin modunda neler araya girebilir?"</string>
<string name="zen_category_people" msgid="8252926021894933047">"Kişiler"</string>
<string name="zen_category_apps" msgid="1167374545618451925">"Uygulamalar"</string>
- <string name="zen_category_exceptions" msgid="1316097981052752811">"Alarmlar ve diğer kesintiler"</string>
+ <string name="zen_category_exceptions" msgid="1316097981052752811">"Alarmlar ve diğer araya girmeler"</string>
<string name="zen_category_schedule" msgid="2003707171924226212">"Programlar"</string>
<string name="zen_category_duration" msgid="7515850842082631460">"Hızlı Ayarlar süresi"</string>
<string name="zen_settings_general" msgid="2704932194620124153">"Genel"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Kısa süre içinde çok sayıda bildirim aldığınızda cihazınız 2 dakika boyunca sesi kısar ve uyarıları azaltır. Aramalar, alarmlar ve öncelikli görüşmeler bu durumdan etkilenmez. \n\nBildirim şiddeti düşürülürken aldığınız bildirimlere ekranın üst tarafından aşağı doğru çekerek ulaşabilirsiniz."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"İş profillerine uygula"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"İş profili uygulamalarına uygulayın"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR yardımcı hizmetleri"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Yüklü hiçbir uygulama VR yardımcı hizmetleri olarak çalışma isteğinde bulunmadı."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> için VR hizmetine erişim izni verilsin mi?"</string>
@@ -3752,7 +3775,7 @@
<string name="manage_zen_access_title" msgid="1562322900340107269">"Rahatsız Etmeyin erişimi"</string>
<string name="zen_access_detail_switch" msgid="4183681772666138993">"Rahatsız Etmeyin\'e izin ver"</string>
<string name="zen_access_empty_text" msgid="3779921853282293080">"Yüklü hiçbir uygulama Rahatsız Etmeyin erişimi isteğinde bulunmadı"</string>
- <string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Modlar iznine erişim"</string>
+ <string name="manage_zen_modes_access_title" msgid="2520680004915648824">"Modlar\'a erişim"</string>
<string name="zen_modes_access_detail_switch" msgid="4060429747631111299">"Modlar\'a erişim izni ver"</string>
<string name="zen_modes_access_empty_text" msgid="8750927923904377110">"Yüklü hiçbir uygulama, Modlar erişimi isteğinde bulunmadı."</string>
<string name="app_notifications_off_desc" msgid="2484843759466874201">"Bu uygulamadan gelen bildirimlere izin vermediniz"</string>
@@ -3824,12 +3847,12 @@
<string name="zen_mode_from_no_conversations" msgid="3924593219855567165">"Yok"</string>
<string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{Yok}=1{1 görüşme}other{# görüşme}}"</string>
<string name="zen_mode_from_conversations_settings" msgid="2411930666794576607">"Görüşme ayarları"</string>
- <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"Kimler kesintiye neden olabilir?"</string>
+ <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"Kimler rahatsız edebilir?"</string>
<string name="zen_mode_people_footer" msgid="7710707353004137431">"Mesajlaşma veya arama uygulamaları size bildirim gönderemese bile burada seçtiğiniz kişiler bu uygulamalar üzerinden size erişebilirler"</string>
<string name="zen_mode_calls_title" msgid="2078578043677037740">"Aramalar"</string>
<string name="zen_mode_calls" msgid="7653245854493631095">"Aramalar"</string>
<string name="zen_mode_calls_list" msgid="5044730950895749093">"aramalar"</string>
- <string name="zen_mode_calls_header" msgid="8379225445095856726">"Kesintiye neden olabilecek aramalar"</string>
+ <string name="zen_mode_calls_header" msgid="8379225445095856726">"Araya girebilecek aramalar"</string>
<string name="zen_mode_calls_footer" msgid="2008079711083701243">"İzin verilen aramaların ses çıkardığından emin olmak için cihazınızın çalmaya ayarlı olduğundan emin olun"</string>
<string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"\"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\" boyunca gelen aramalar engelleniyor. Arkadaşlarınız, aileniz veya diğer kişilerinizin size ulaşmasına izin vermek için ayarlarınızı düzenleyebilirsiniz."</string>
<string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"Yıldızlı kişiler"</string>
@@ -3838,7 +3861,7 @@
<string name="zen_mode_messages" msgid="7315084748885170585">"Mesajlar"</string>
<string name="zen_mode_messages_list" msgid="5431014101342361882">"mesajlar"</string>
<string name="zen_mode_messages_title" msgid="1777598523485334405">"Mesajlar"</string>
- <string name="zen_mode_messages_header" msgid="253721635061451577">"Kesintiye neden olabilecek mesajlar"</string>
+ <string name="zen_mode_messages_header" msgid="253721635061451577">"Araya girebilecek mesajlar"</string>
<string name="zen_mode_messages_footer" msgid="6002468050854126331">"İzin verilen mesajlardan sesli uyarı alabilmek için için cihazınızın zil sesi çıkaracak şekilde ayarlı olduğundan emin olun"</string>
<string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"\"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\" için gelen mesajlar engelleniyor. Arkadaşlarınız, aileniz veya diğer kişilerin size ulaşmasına izin vermek için ayarları düzenleyebilirsiniz."</string>
<string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"Tüm mesajlar size ulaşabilir"</string>
@@ -3872,33 +3895,33 @@
<string name="zen_mode_events_list" msgid="7191316245742097229">"etkinlikler"</string>
<string name="zen_mode_events_list_first" msgid="7425369082835214361">"Etkinlikler"</string>
<string name="zen_mode_apps_title" msgid="1691010857014041183">"Uygulamalar"</string>
- <string name="zen_mode_apps_category" msgid="4082380323683889391">"Kesintiye neden olabilecek uygulamalar"</string>
+ <string name="zen_mode_apps_category" msgid="4082380323683889391">"Araya girebilecek uygulamalar"</string>
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Seçili uygulamalar"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Yok"</string>
- <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Hiçbir uygulama kesintiye neden olamaz}=1{{app_1} kesintiye neden olabilir}=2{{app_1} ve {app_2} kesintiye neden olabilir}=3{{app_1}, {app_2} ve {app_3} kesintiye neden olabilir}other{{app_1}, {app_2} ve # uygulama daha kesintiye neden olabilir}}"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{count,plural,offset:2 =0{Hiçbir uygulama araya giremez}=1{{app_1} araya girebilir}=2{{app_1} ve {app_2} araya girebilir}=3{{app_1}, {app_2} ve {app_3} araya girebilir}other{{app_1}, {app_2} ve # uygulama daha araya girebilir}}"</string>
<string name="zen_mode_apps_work_app" msgid="8528767938316361588">"<xliff:g id="APP_LABEL">%s</xliff:g> (İş)"</string>
<string name="zen_mode_apps_calculating" msgid="5420121396943539286">"Hesaplanıyor…"</string>
<string name="zen_mode_apps_priority_apps_settings" msgid="5544513568250354374">"Uygulama ayarları"</string>
<string name="zen_mode_plus_n_items" msgid="6136713354369243421">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Uygulamaların geçersiz kılmasına izin ver"</string>
- <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Kesintiye neden olabilecek uygulamalar"</string>
+ <string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Araya girebilecek uygulamalar"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Daha fazla uygulama seçin"</string>
<string name="zen_mode_bypassing_apps_none" msgid="7944221631721778096">"Hiçbir uygulama seçilmedi"</string>
- <string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"Hiçbir uygulama kesintiye neden olamaz"</string>
+ <string name="zen_mode_bypassing_apps_subtext_none" msgid="5128770411598722200">"Hiçbir uygulama araya giremez"</string>
<string name="zen_mode_bypassing_apps_add" msgid="5031919618521327102">"Uygulama ekle"</string>
<string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"Tüm bildirimler"</string>
<string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"Bazı bildirimler"</string>
- <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Uygulamaların kesintiye neden olmasına izin vermeseniz bile seçtiğiniz kişiler size ulaşmaya devam edebilir"</string>
- <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Hiçbir uygulama kesintiye neden olamaz}=1{{app_1} kesintiye neden olabilir}=2{{app_1} ve {app_2} kesintiye neden olabilir}=3{{app_1}, {app_2} ve {app_3} kesintiye neden olabilir}other{{app_1}, {app_2} ve # uygulama daha kesintiye neden olabilir}}"</string>
+ <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Uygulamaların araya girmesine izin vermeseniz bile seçtiğiniz kişiler size ulaşmaya devam edebilir"</string>
+ <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Hiçbir uygulama araya giremez}=1{{app_1} araya girebilir}=2{{app_1} ve {app_2} araya girebilir}=3{{app_1}, {app_2} ve {app_3} araya girebilir}other{{app_1}, {app_2} ve # uygulama daha araya girebilir}}"</string>
<string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"Uygulamalar"</string>
- <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Kesintiye neden olabilecek bildirimler"</string>
+ <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Araya girebilecek bildirimler"</string>
<string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"Tüm bildirimlere izin ver"</string>
- <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Hiçbir şey kesintiye neden olamaz}=1{{sound_category_1} kesintiye neden olabilir}=2{{sound_category_1} ve {sound_category_2} kesintiye neden olabilir}=3{{sound_category_1}, {sound_category_2} ve {sound_category_3} kesintiye neden olabilir}other{{sound_category_1}, {sound_category_2} ve # uygulama daha kesintiye neden olabilir}}"</string>
- <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Hiçbir şey kesintiye neden olamaz"</string>
- <string name="zen_mode_people_none" msgid="4613147461974255046">"Hiç kimse kesintiye neden olamaz"</string>
- <string name="zen_mode_people_some" msgid="9101872681298810281">"Bazı kişiler kesintiye neden olabilir"</string>
+ <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Hiçbir şey araya giremez}=1{{sound_category_1} araya girebilir}=2{{sound_category_1} ve {sound_category_2} araya girebilir}=3{{sound_category_1}, {sound_category_2} ve {sound_category_3} araya girebilir}other{{sound_category_1}, {sound_category_2} ve # uygulama daha araya girebilir}}"</string>
+ <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Hiçbir şey araya giremez"</string>
+ <string name="zen_mode_people_none" msgid="4613147461974255046">"Hiç kimse araya giremez"</string>
+ <string name="zen_mode_people_some" msgid="9101872681298810281">"Bazı kişiler araya girebilir"</string>
<string name="zen_mode_people_repeat_callers" msgid="4499084111069828761">"Tekrar arayanlar araya girebilir"</string>
- <string name="zen_mode_people_all" msgid="311036110283015205">"Tüm kişiler kesintiye neden olabilir"</string>
+ <string name="zen_mode_people_all" msgid="311036110283015205">"Tüm kişiler araya girebilir"</string>
<string name="zen_mode_repeat_callers" msgid="2270356100287792138">"Tekrar arayanlar"</string>
<string name="zen_mode_repeat_callers_title" msgid="8016699240338264781">"Tekrar arayanlara izin ver"</string>
<string name="zen_mode_all_callers" msgid="8104755389401941875">"herkes"</string>
@@ -3939,10 +3962,10 @@
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"Takvim etkinlikleri ve davet yanıtlarına göre etkinleşen bir mod ayarlayın"</string>
<string name="zen_mode_blurb_bedtime" msgid="6155075956151013457">"Rahatlatıcı bir uyku rutini tasarlayın. Alarm kurun, ekranı karartın ve bildirimleri engelleyin."</string>
<string name="zen_mode_blurb_driving" msgid="1316054379000667305">"Araba kullanırken dikkatiniz dağılmadan yola odaklanmak için trafikte güvenliğe öncelik verin"</string>
- <string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Odaklanmak için cihazınızdaki dikkat dağıtan veya kesintiye neden olan unsurları engelleyin"</string>
+ <string name="zen_mode_blurb_immersive" msgid="5884004861848687869">"Odaklanmak için cihazınızdaki dikkat dağıtan veya araya girebilecek unsurları engelleyin"</string>
<string name="zen_mode_blurb_theater" msgid="2999237960059524225">"Sessiz bir ortam için dikkat dağıtan tüm unsurları ortadan kaldırın"</string>
<string name="zen_mode_blurb_managed" msgid="5473921634985032149">"Cihaz deneyimlerini ve ayarlarını farklı kullanıcılara göre kişiselleştirin"</string>
- <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Yalnızca önemli kişilerin ve uygulamaların size erişmesine izin vererek kesintileri en aza indirin"</string>
+ <string name="zen_mode_blurb_generic" msgid="3041601339807075625">"Yalnızca önemli kişilerin ve uygulamaların size erişmesine izin vererek araya girmeleri en aza indirin"</string>
<string name="zen_mode_inspiration_schedule_time" msgid="5596540503159096153">"Düzenli olarak belirli zamanlarda etkinleşen bir mod ayarlayın"</string>
<string name="zen_mode_inspiration_schedule_calendar" msgid="3678727180860212700">"Cihazınızı günlük etkinliklerinizle senkronize tutun"</string>
<string name="zen_mode_inspiration_bedtime" msgid="6294822414181670666">"Uyandığınızda kendinizi %100 zinde hissedin"</string>
@@ -5459,6 +5482,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Yayını dinle"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> adlı cihazda dinlemek için ses yayını QR kodunu tarayın"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Şifre, paylaşım sırasında düzenlenemez. Şifreyi değiştirmek için önce ses paylaşımını kapatın."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Şifreniz 4-16 karakterden oluşmalı, yalnızca harf, sayı ve sembol içermelidir"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR kodu tarayıcı"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Yardıma mı ihtiyacınız var?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Ayarlar\'da ara"</string>
@@ -5467,10 +5491,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Yalnızca cihaz"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Yeni kişiler bir hesapla senkronize edilmez"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Kişiler varsayılan olarak cihazınıza kaydedilir ve hesabınızla senkronize edilir"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Varsayılan ayar yok"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Varsayılan hesap ayarlanırken hata oluştu"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Varsayılan ayar yok"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Yalnızca cihaz"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Başlamak için hesap ekleyin"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Seçerek Arat"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Ekranınızdaki içerikleri kullanarak arama yapmak için ana sayfa düğmesine veya gezinme tutma yerine dokunup basılı tutun."</string>
</resources>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
index 210463e..47028b9 100644
--- a/res/values-uk/arrays.xml
+++ b/res/values-uk/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Портфель"</item>
+ <item msgid="184985872234062767">"Будівля в класичному стилі"</item>
+ <item msgid="9189550412466785530">"Багатоквартирний будинок"</item>
+ <item msgid="2142527562511049422">"Виноска з текстом"</item>
+ <item msgid="2548100558260478605">"Група людей"</item>
+ <item msgid="2270003903304578284">"Лампочка"</item>
+ <item msgid="4793496619091161864">"Календар"</item>
+ <item msgid="5673625795644364100">"Не турбувати"</item>
+ <item msgid="1423820834865831361">"Людина біжить"</item>
+ <item msgid="2037298830718732608">"Гольф"</item>
+ <item msgid="2197835014443491074">"Спортивна гантель"</item>
+ <item msgid="2730180105015616518">"Плавання"</item>
+ <item msgid="2666922823253345958">"Людина в поході"</item>
+ <item msgid="8234880356472211396">"Людина кидає м’яч"</item>
+ <item msgid="4642980625253001443">"Людина б’є ногою"</item>
+ <item msgid="4324795269518833500">"Ігровий контролер"</item>
+ <item msgid="7789966425125441125">"Палітра художника"</item>
+ <item msgid="663512680597461570">"Сніжинка"</item>
+ <item msgid="7952183800501346803">"Пляжна парасоля"</item>
+ <item msgid="799139025758265891">"Інструменти для майстерні"</item>
+ <item msgid="8112685757657659269">"Піаніно"</item>
+ <item msgid="3861584909935022342">"Кіноплівка"</item>
+ <item msgid="5827426100157335512">"Книга"</item>
+ <item msgid="8585828346253128384">"Квітка лотоса"</item>
+ <item msgid="8788370542815300188">"Людський розум"</item>
+ <item msgid="7287354964767553293">"Навушники"</item>
+ <item msgid="2530059623783800987">"Телевізор"</item>
+ <item msgid="5307182323469376758">"Поїзд"</item>
+ <item msgid="4903790544026923026">"Автомобіль"</item>
+ <item msgid="5010405583912314582">"Виделка й ніж"</item>
+ <item msgid="8939998598599064900">"Кошик для покупок"</item>
+ <item msgid="3379605903308731893">"Дитина"</item>
+ <item msgid="7808668968550293112">"Лапа тварини"</item>
+ <item msgid="1000692647524056504">"Значок зірочки"</item>
+ <item msgid="8270261073421676502">"Двоє людей"</item>
+ <item msgid="5767782819651505460">"Зірка"</item>
+ <item msgid="4368451291862729334">"Серце"</item>
+ <item msgid="2613199102208419986">"Будинок"</item>
+ <item msgid="3022279986430275040">"Півмісяць"</item>
+ <item msgid="5421089790869483206">"Годинник"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7d107b5..7669097 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Підключити новий пристрій"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"Bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Автоматично ввімкнути завтра"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Підключити правий"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Підключити лівий"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Підключити другий"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Вимкнути Bluetooth LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Вимикає функцію Bluetooth LE Audio, якщо пристрій підтримує апаратні можливості LE Audio."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Режим Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Увімкнути попередній перегляд інтерфейсу для трансляції Bluetooth LE Audio"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Увімкнути попередню версію інтерфейсу для спільного доступу до LE Audio, включно з особистим надсиланням аудіо й приватною трансляцією"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Перемикач LE Audio в інф. про пристрій"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Обходити білий список Bluetooth LE Audio"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio використовуватиметься за умовчанням, навіть якщо периферійний пристрій LE Audio не перевірено на відповідність критеріям білого списку."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Визначати автоматично за допомогою мережі й бездротових сигналів"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Автоматичний часовий пояс"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Визначати автоматично на основі мобільних мереж поблизу"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Визначати автоматично на основі геоданих пристрою (якщо доступно)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Використовувати місцеві налаштування за умовчанням"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24-годинний формат"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Час"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Підніміть палець і знову торкніться датчика"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Не вдається скористатися сканером відбитків пальців"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Зверніться до постачальника послуг із ремонту."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Розблокування відбитком пальця, коли екран вимкнено"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Використовувати розблокування відбитком пальця, навіть коли екран вимкнено"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Екран вимкнено, розблокування"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Інші налаштування безпеки"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Блокування робочого профілю, шифрування тощо"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Шифрування, облікові дані тощо"</string>
@@ -626,7 +632,7 @@
<string name="private_space_hide_apps_summary" msgid="4418722947376042418">"Приховуйте або блокуйте приватні додатки в окремому просторі. Задля додаткової безпеки використовуйте окремий обліковий запис Google."</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"Як це працює"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"Створіть обліковий запис Google для свого простору"</b>\n"Якщо ви використовуватимете окремий обліковий запис, то файли, фотографії і електронна пошта не синхронізуватимуться за межами вашого простору"</string>
- <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Налаштуйте блокування"</b>\n"Блокуйте свій простір, щоб інші користувачі не мали доступу до нього."</string>
+ <string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"Налаштуйте блокування"</b>\n"Блокуйте свій простір, щоб інші користувачі не мали доступу до нього"</string>
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Установіть додатки"</b>\n"Установіть додатки, які хочете приватно використовувати у своєму просторі"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Важливо"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Під час блокування простору додатки припиняють роботу"</b>\n"Якщо ви заблокуєте свій простір, включені в нього додатки припинять роботу й ви не отримуватимете сповіщень від них"</string>
@@ -658,8 +664,8 @@
<string name="private_space_choose_your_pin_header" msgid="4560802934975898265">"Створіть PIN-код для особистого простору"</string>
<string name="private_space_choose_your_password_header" msgid="7660259341095044434">"Установіть пароль особистого простору"</string>
<string name="private_space_choose_your_pattern_header" msgid="2165607102459936724">"Налаштуйте ключ для особистого простору"</string>
- <string name="private_space_category_lock" msgid="1917657024358778169">"Заблокувати"</string>
- <string name="private_space_category_hide" msgid="3236587591523126649">"Приховати"</string>
+ <string name="private_space_category_lock" msgid="1917657024358778169">"Блокування"</string>
+ <string name="private_space_category_hide" msgid="3236587591523126649">"Приховування"</string>
<string name="private_space_confirm_your_pattern_header" msgid="449382220134788771">"Підтвердьте ключ для приватного простору"</string>
<string name="private_space_confirm_your_pin_header" msgid="4543332157470087796">"Введіть PIN-код для приватного простору ще раз"</string>
<string name="private_space_confirm_your_password_header" msgid="9202308075814307169">"Введіть пароль приватного простору ще раз"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Клавіатура ігнорує кілька натискань однієї клавіші поспіль"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Поріг ігнорування повт. натискання"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Виберіть, протягом якого часу клавіатура ігноруватиме кілька натискань однієї клавіші"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 с"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 с"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 с"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 с"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 с"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 с"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Спеціальне"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"Спеціальне значення"</string>
<string name="slow_keys" msgid="2891452895499690837">"Повільні клавіші"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Установлює проміжок часу, через який клавіша реагує на натискання"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Залипання клавіш"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Натискайте клавіші по одній, замість того щоб утримувати їх одночасно"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Клавіші для керування мишею"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Використовувати клавіші для миші"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Щоб керувати курсором, використовуйте клавіатуру"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Зворотне прокручування мишею"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Прокручувати вгору, щоб переміщатися сторінкою вниз"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Поміняти місцями ліву й праву кнопки"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Використовувати ліву кнопку миші як праву"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Клавіші для керування мишею (\"<xliff:g id="KEYBOARD_NAME">%s</xliff:g>\")"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Щоб переміщати курсор миші, використовуйте клавіші <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Щоб натиснути основну кнопку миші, використовуйте клавішу <xliff:g id="CLICK_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Щоб утримувати основну кнопку миші, натисніть клавішу <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Щоб відпустити основну кнопку миші, натисніть клавішу <xliff:g id="RELEASE_LABEL">%s</xliff:g>"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Щоб увімкнути режим прокручування, натисніть клавішу <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g>. За допомогою клавіш <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> можна буде прокручувати сторінку вгору, униз, уліво або вправо."</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Щоб натиснути другу кнопку миші, натисніть клавішу <xliff:g id="RELEASE_2_LABEL">%s</xliff:g>"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Комбінації клавіш"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Показати список комбінацій клавіш"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Клавіатури та інструменти робочого профілю"</string>
@@ -1992,7 +2008,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"Білий"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"Чорний"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"Немає"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Жести сенсорної панелі: докладніше"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Дізнатися про жести на сенсорній панелі"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"сенсорна панель, трекпад, миша, курсор, прокрутити, гортати, права кнопка, натиснути, вказівник"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"натиснути правою кнопкою миші, натиснути"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"Перейти на головний екран"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Виберіть нову клавішу для <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Функції доступності фізичної клавіатури"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Залипання клавіш, ігнорування повторного натискання клавіш, клавіші для керування мишею"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Повторювати введення символів клавіш"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Затримка перед повторенням"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Швидкість повторення"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Якщо ви втримуватимете клавішу, введення відповідного символу повторюватиметься, доки ви її не відпустите"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Розкладка <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"За умовчанням"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Автоматична розкладка: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2237,7 +2249,7 @@
<string name="accessibility_shortcut_edit_dialog_summary_software" msgid="8315934725362849788">"Натисніть кнопку функцій доступності <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> унизу екрана. Щоб переключитися між функціями, натисніть і утримуйте цю кнопку."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{Проведіть пальцем угору від низу екрана. Щоб переключитися між функціями, проведіть пальцем угору й утримуйте його.}one{Проведіть # пальцем угору від низу екрана. Щоб переключитися між функціями, проведіть по екрану знизу вгору # пальцем і утримуйте їх.}few{Проведіть # пальцями вгору від низу екрана. Щоб переключитися між функціями, проведіть по екрану знизу вгору # пальцями й утримуйте їх.}many{Проведіть # пальцями вгору від низу екрана. Щоб переключитися між функціями, проведіть по екрану знизу вгору # пальцями й утримуйте їх.}other{Проведіть # пальця вгору від низу екрана. Щоб переключитися між функціями, проведіть по екрану знизу вгору # пальця й утримуйте їх.}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"Інші опції"</annotation></string>
- <string name="footer_learn_more_content_description" msgid="8843798273152131341">"Докладніше про сервіс <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
+ <string name="footer_learn_more_content_description" msgid="8843798273152131341">"Докладніше про сервіс \"<xliff:g id="SERVICE">%1$s</xliff:g>\""</string>
<string name="accessibility_shortcut_edit_dialog_title_quick_settings" msgid="140959604014177304">"Швидкі налаштування"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings" msgid="739883998754165940">"{count,plural, =1{Проведіть пальцем униз від верхнього краю екрана}one{Проведіть # пальцем униз від верхнього краю екрана}few{Проведіть # пальцями вниз від верхнього краю екрана}many{Проведіть # пальцями вниз від верхнього краю екрана}other{Проведіть # пальця вниз від верхнього краю екрана}}"</string>
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw" msgid="4216628328191609785">"{count,plural, =1{Проведіть пальцем униз від верхнього краю екрана. Ця швидка команда стане доступною, коли ви налаштуєте пристрій.}one{Проведіть # пальцем униз від верхнього краю екрана. Ця швидка команда стане доступною, коли ви налаштуєте пристрій.}few{Проведіть # пальцями вниз від верхнього краю екрана. Ця швидка команда стане доступною, коли ви налаштуєте пристрій.}many{Проведіть # пальцями вниз від верхнього краю екрана. Ця швидка команда стане доступною, коли ви налаштуєте пристрій.}other{Проведіть # пальця вниз від верхнього краю екрана. Ця швидка команда стане доступною, коли ви налаштуєте пристрій.}}"</string>
@@ -2405,7 +2417,7 @@
<string name="accessibility_list_all_devices_title" msgid="161495343959211216">"Переглянути інші пристрої"</string>
<string name="accessibility_audio_adjustment_title" msgid="1332113739136802997">"Налаштування аудіо"</string>
<string name="accessibility_toggle_audio_description_preference_title" msgid="8916473886256061220">"Голосовий супровід"</string>
- <string name="accessibility_audio_description_summary" msgid="2554789094873781056">"Озвучення подій, що відбуваються на екрані, у підтримуваних фільмах і серіалах"</string>
+ <string name="accessibility_audio_description_summary" msgid="2554789094873781056">"Озвучувати, що відбувається на екрані, у підтримуваних фільмах і серіалах"</string>
<string name="keywords_audio_description" msgid="6202816411593281252">"голосовий супровід, голосовий, супровід, поганий зір,"</string>
<string name="accessibility_summary_shortcut_enabled" msgid="4030427268146752644">"Комбінацію клавіш увімкнено"</string>
<string name="accessibility_summary_shortcut_disabled" msgid="564005462092499068">"Вимкнено"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Режим енергоспоживання"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Уключені пакети"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Додатки працюють звичайно"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Радимо замінити акумулятор"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Ємність акумулятора й ефективність заряджання зменшилися. Радимо замінити акумулятор."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Низький заряд акумулятора"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Щоб подовжити час роботи акумулятора, увімкніть режим енергозбереження"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Подовжте час роботи акумулятора"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Відключити цю мережу VPN?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Відключити"</string>
<string name="vpn_version" msgid="6344167191984400976">"Версія"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Версія <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Забути мережу VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Замінити наявну мережу VPN?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Увімкнути постійну мережу VPN?"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"09:00–17:00 у будні\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Події в календарі"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Активовано режим \"{mode_1}\"}=2{Активовано режими \"{mode_1}\" і \"{mode_2}\"}=3{Активовано режими \"{mode_1}\", \"{mode_2}\" і \"{mode_3}\"}one{Активовано режими \"{mode_1}\", \"{mode_2}\" і ще #}few{Активовано режими \"{mode_1}\", \"{mode_2}\" і ще #}many{Активовано режими \"{mode_1}\", \"{mode_2}\" і ще #}other{Активовано режими \"{mode_1}\", \"{mode_2}\" і ще #}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 режим може вмикатись автоматично}one{# режим може вмикатись автоматично}few{# режими можуть вмикатись автоматично}many{# режимів можуть вмикатись автоматично}other{# режиму можуть вмикатись автоматично}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Не турбувати}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}few{{mode_1}, {mode_2}, {mode_3}}many{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"УВІМКНЕНО"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Не налаштовано"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Вимкнено"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Якщо ви отримаєте багато повідомлень за короткий проміжок часу, пристрій знизить гучність і зменшить кількість сповіщень на період до 2 хвилин. Звук дзвінків, будильників і сповіщень щодо важливих розмов не зміниться. \n\nСповіщення, отримані протягом цього періоду, можна буде переглянути, пpовівши пальцем униз від верхнього краю екрана."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Застосувати до робочих профілів"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Застосувати до додатків робочого профілю"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Допоміжні VR-сервіси"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Установлені додатки не запитували доступу для роботи в режимі допоміжних VR-сервісів."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Надати VR-сервісу доступ до сервісу <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5436,7 +5459,7 @@
<string name="audio_streams_dialog_retry" msgid="4456843891970998556">"Повторити спробу"</string>
<string name="audio_streams_dialog_listen_to_audio_stream" msgid="8585253007762261528">"Слухайте потокове аудіо"</string>
<string name="audio_streams_dialog_control_volume" msgid="7615062686016713544">"Потокове аудіо відтворюватиметься на пристрої <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Керуйте гучністю за допомогою цього пристрою."</string>
- <string name="audio_streams_dialog_cannot_listen" msgid="4432257183698209966">"Не чути потокове аудіо"</string>
+ <string name="audio_streams_dialog_cannot_listen" msgid="4432257183698209966">"Помилка відтворення"</string>
<string name="audio_streams_dialog_default_device" msgid="6159800303379303266">"підключені сумісні навушники"</string>
<string name="audio_streams_activity_title" msgid="6766869545769831935">"Аудіопотоки"</string>
<string name="audio_streams_no_password_summary" msgid="8976357323034830144">"Без пароля"</string>
@@ -5461,6 +5484,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Слухати потокове аудіо"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Відскануйте QR-код потокового аудіо, щоб слухати на пристрої <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Неможливо змінити пароль під час надсилання. Щоб змінити пароль, спершу вимкніть надсилання аудіо."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Пароль має містити від 4 до 16 символів і включати лише літери, цифри й символи"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Сканер QR-коду"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Потрібна допомога?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Шукати в налаштуваннях"</string>
@@ -5469,10 +5493,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Лише на пристрої"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Нові контакти не синхронізуватимуться з обліковим записом"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Контакти будуть зберігатися на пристрої і за умовчанням синхронізуватися з обліковим записом"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Немає параметра за умовчанням"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Не вдалося налаштувати обліковий запис за умовчанням"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Немає облікового запису за умовчанням"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Лише на пристрої"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Щоб почати, додайте обліковий запис"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Обвести й знайти"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Натисніть і втримуйте кнопку головного екрана або маркер навігації, щоб здійснити пошук за вмістом на екрані."</string>
</resources>
diff --git a/res/values-ur/arrays.xml b/res/values-ur/arrays.xml
index 6acd7c7..4fe0dfe 100644
--- a/res/values-ur/arrays.xml
+++ b/res/values-ur/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"بریف کیس"</item>
+ <item msgid="184985872234062767">"کلاسیکل عمارت"</item>
+ <item msgid="9189550412466785530">"اپارٹمنٹ والی عمارت"</item>
+ <item msgid="2142527562511049422">"اسپیچ ببل"</item>
+ <item msgid="2548100558260478605">"لوگوں کا گروپ"</item>
+ <item msgid="2270003903304578284">"لائٹ بلب"</item>
+ <item msgid="4793496619091161864">"کیلنڈر"</item>
+ <item msgid="5673625795644364100">"ڈسٹرب نہ کریں"</item>
+ <item msgid="1423820834865831361">"دوڑتا ہوا شخص"</item>
+ <item msgid="2037298830718732608">"گولف"</item>
+ <item msgid="2197835014443491074">"جم ڈم بیل"</item>
+ <item msgid="2730180105015616518">"تیراکی"</item>
+ <item msgid="2666922823253345958">"ہائک کرتا ہوا شخص"</item>
+ <item msgid="8234880356472211396">"گیند پھینکتا ہوا شخص"</item>
+ <item msgid="4642980625253001443">"کک مارتا ہوا شخص"</item>
+ <item msgid="4324795269518833500">"گیم کنٹرولر"</item>
+ <item msgid="7789966425125441125">"آرٹسٹ رنگ کا پیلیٹ"</item>
+ <item msgid="663512680597461570">"برف کا گولا"</item>
+ <item msgid="7952183800501346803">"ساحل کی چھتری"</item>
+ <item msgid="799139025758265891">"ورکشاپ ٹولز"</item>
+ <item msgid="8112685757657659269">"پیانو"</item>
+ <item msgid="3861584909935022342">"فلم ریل"</item>
+ <item msgid="5827426100157335512">"کتاب"</item>
+ <item msgid="8585828346253128384">"کنول کا پھول"</item>
+ <item msgid="8788370542815300188">"شخص کا ذہن"</item>
+ <item msgid="7287354964767553293">"ہیڈ فونز"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"ٹرین"</item>
+ <item msgid="4903790544026923026">"کار"</item>
+ <item msgid="5010405583912314582">"کانٹا اور چھری"</item>
+ <item msgid="8939998598599064900">"شاپنگ کارٹ"</item>
+ <item msgid="3379605903308731893">"بچہ"</item>
+ <item msgid="7808668968550293112">"جانور کا پنجا"</item>
+ <item msgid="1000692647524056504">"اسٹار بیج"</item>
+ <item msgid="8270261073421676502">"دو لوگ"</item>
+ <item msgid="5767782819651505460">"ستارہ"</item>
+ <item msgid="4368451291862729334">"دل"</item>
+ <item msgid="2613199102208419986">"گھر"</item>
+ <item msgid="3022279986430275040">"آدھا چاند"</item>
+ <item msgid="5421089790869483206">"گھڑی"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 806aea5..b9e1800 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"نئے آلہ کا جوڑا بنائیں"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"بلوٹوتھ"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"خودکار طور پر کل آن کریں"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"اگر آپ بلوٹوتھ آف کرتے ہیں تو یہ اگلے دن دوبارہ آن ہو جاتا ہے"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"دائیں کان کا جوڑا بنائیں"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"بائیں کان کا جوڑا بنائیں"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"اپنے دوسرے کان کا جوڑا بنائیں"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"بلوٹوتھ LE آڈیو غیر فعال کریں"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"اگر آلہ LE آڈیو ہارڈویئر کی صلاحیتوں کو سپورٹ کرتا ہے تو یہ بلوٹوتھ LE آڈیو خصوصیت کو غیر فعال کر دے گا۔"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"بلوٹوتھ LE آڈیو وضع"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"بلوٹوتھ LE آڈیو براڈ کاسٹ UI پیش منظر کو فعال کریں"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"ذاتی آڈیو کا اشتراک اور نجی براڈ کاسٹ سمیت LE آڈیو کا اشتراک UI پیش منظر کو فعال کرتا ہے"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"آلے کی تفصیلات میں LE آڈیو ٹوگل کریں دکھائیں"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"بلوٹوتھ LE آڈیو کی اجازت یافتہ فہرست کو بائی پاس کریں"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"اجازت یافتہ کی فہرست کے معیار کو پورا کرنے کے لیے LE آڈیو پیریفرل کی تصدیق کے نہ ہونے کے باوجود LE آڈیو کو بطور ڈیفالٹ استعمال کریں۔"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"اپنے نیٹ ورک اور وائرلیس سگنلز کا استعمال کرتے ہوئے خود بخود سیٹ کریں"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"خودکار ٹائم زون"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"اپنے قریب کے موبائل نیٹ ورکس کی بنیاد پر خود بخود سیٹ کریں"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"دستیاب ہونے پر اپنے آلہ کا مقام استعمال کر کے خودکار طور پر سیٹ کریں"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"مقامی ڈیفالٹ کا استعمال کریں"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 گھنٹے کا فارمیٹ استعمال کریں"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"وقت"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"انگلی اٹھائیں اور سنسر کو دوبارہ ٹچ کریں"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"فنگر پرنٹ سینسر کا استعمال نہیں کر سکتے"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"ایک مرمت فراہم کنندہ کو ملاحظہ کریں۔"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"اسکرین آف ہونے پر فنگر پرنٹ اَن لاک کا استعمال کریں"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"اسکرین آف ہونے پر بھی فنگر پرنٹ انلاک کا استعمال کریں"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"اسکرین آف ہونے پر غیر مقفل کریں"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"مزید سیکیورٹی کی ترتیبات"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"دفتری پروفائل لاک، مرموز کاری اور مزید"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"مرموز کاری، اسنادات اور مزید"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"کی بورڈ ایک ہی کلید کے بار بار فوری طور پر دبانے کو نظر انداز کرتا ہے"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"باؤنس کلید کی حد"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"کی بورڈ کے بار بار کلید کو دبانے کو نظر انداز کرنے کے وقت کا انتخاب کریں"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 سیکنڈ"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 سیکنڈ"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 سیکنڈ"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"حسب ضرورت"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"مخصوص قدر"</string>
<string name="slow_keys" msgid="2891452895499690837">"سلو کلیدیں"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"کلید دبانے کو فعال کرنے میں لگنے والے وقت کو ایڈجسٹ کرتا ہے"</string>
<string name="sticky_keys" msgid="7317317044898161747">"دبی رہنے والی کلیدیں"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"کلیدوں کو ایک ساتھ نیچے کی طرف پکڑے رکھنے کے بجائے، شارٹ کٹس کیلئے ایک وقت میں ایک کلید دبائیں"</string>
<string name="mouse_keys" msgid="6237254627808525540">"ماؤس کیز"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"ماؤس کیز کا استعمال کریں"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"پوائنٹر کو کنٹرول کرنے کے لیے اپنا کی بورڈ استعمال کریں"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"ماؤس کی معکوس اسکرولنگ"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"صفحہ کو نیچے منتقل کرنے کے لیے اوپر اسکرول کریں"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"بائیں اور دائیں بٹنز کو سویپ کریں"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"بائیں ماؤس کے بٹن کو اپنے دائیں کے طور پر استعمال کریں"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> کیلئے ماؤس کیز"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"ماؤس پوائنٹر منتقل کرنے کے لیے <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> کیز کا استعمال کریں"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"بنیادی ماؤس بٹن پر کلک کرنے کے لیے <xliff:g id="CLICK_LABEL">%s</xliff:g> کی کا استعمال کریں"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"بنیادی ماؤس بٹن چھونے اور دبائے رکھنے کے لیے <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> کی استعمال کریں"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"بنیادی ماؤس بٹن ریلیز کرنے کے لیے <xliff:g id="RELEASE_LABEL">%s</xliff:g> کی استعمال کریں"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"اسکرول موڈ کو ٹوگل کرنے کے لیے <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> کی استعمال کریں۔ اس سے <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> کیز منظر کو اوپر، نیچے، دائیں یا بائیں اسکرول کریں گی"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"ثانوی ماؤس بٹن پر کلک کرنے کے لیے <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> کی استعمال کریں"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"کی بورڈ شارٹ کٹس"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"شارٹ کٹس کی فہرست دکھائیں"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"دفتری پروفائل کے کی بورڈز اور ٹولز"</string>
@@ -1972,7 +1987,7 @@
<string name="trackpad_mouse_settings" msgid="136226693583218429">"ٹچ پیڈ اور ماؤس"</string>
<string name="trackpad_settings_summary" msgid="3369855644136760402">"پوائنٹر، رفتار، اشارے"</string>
<string name="trackpad_tap_to_click" msgid="1938230946542070746">"کلک کرنے کیلئے تھپتھپائیں"</string>
- <string name="trackpad_tap_dragging_title" msgid="798644199582480712">"گھسیٹنے پر تھپتھپائیں"</string>
+ <string name="trackpad_tap_dragging_title" msgid="798644199582480712">"ٹیپ کر کے گھسیٹنا"</string>
<string name="trackpad_tap_dragging_summary" msgid="5276968646031591058">"آبجیکٹس منتقل کرنے کیلئے اپنی انگلی ٹچ پیڈ پر تھپتھپائیں اور گھسیٹیں"</string>
<string name="trackpad_touchpad_gesture_title" msgid="7568052847609914436">"ٹچ پیڈ کے اشارے"</string>
<string name="trackpad_touchpad_gesture_summary" msgid="6256074591395359124">"ٹچ پیڈ نیویگیشن کے انفرادی اشاروں کو حسب ضرورت بنائیں"</string>
@@ -1992,7 +2007,7 @@
<string name="pointer_stroke_style_name_white" msgid="673686194443825383">"سفید"</string>
<string name="pointer_stroke_style_name_black" msgid="4655806167067437330">"سیاہ"</string>
<string name="pointer_stroke_style_name_none" msgid="8953927511729800247">"کوئی نہیں"</string>
- <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ٹچ پیڈ کے اشارے کو جانیں"</string>
+ <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ٹچ پیڈ کے اشاروں کو جانیں"</string>
<string name="keywords_touchpad" msgid="8159846254066666032">"ٹریک پیڈ، ٹریک پیڈ، ماؤس، کرسر، اسکرول، سوائپ، دائیں کلک، کلک، پوائنٹر"</string>
<string name="keywords_trackpad_bottom_right_tap" msgid="1285062446073929305">"دائیں کلک کریں، تھپتھپائیں"</string>
<string name="gesture_title_go_home" msgid="3682238648647225933">"گھر جائیں"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> کے لیے نئی کلید منتخب کریں:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"فزیکل کی بورڈ ایکسیسبیلٹی"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"دبی رہنے والی کلیدیں، باؤنس کلیدیں، ماؤس کلیدیں"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"تکرار کی کلیدیں"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"دہرانے سے پہلے تاخیر"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"تکرار کی شرح"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"اس کے کردار کو دہرانے کے لیے کلید کے ریلیز ہونے تک کلید کو دبائے رکھیں"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> لے آؤٹ"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"ڈیفالٹ"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"خودکار: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2277,7 +2288,7 @@
<string name="accessibility_button_low_label" msgid="4193015407828927741">"شفاف"</string>
<string name="accessibility_button_high_label" msgid="9138077512008190896">"غیر شفاف"</string>
<string name="accessibility_button_disabled_button_mode_summary" msgid="1978174613270619492">"نیویگیشن بار بٹن موڈ استعمال کرتے وقت دستیاب نہیں ہے۔"</string>
- <string name="accessibility_toggle_high_text_contrast_preference_title" msgid="1830189632458752698">"اعلی تناسب امتزاج والا ٹیکسٹ"</string>
+ <string name="accessibility_toggle_high_text_contrast_preference_title" msgid="1830189632458752698">"زیادہ کنٹراسٹ والا ٹیکسٹ"</string>
<string name="accessibility_toggle_high_text_contrast_preference_summary" msgid="5286411556836346180">"ٹیکسٹ کا رنگ سیاہ یا سفید میں تبدیل کریں۔ پس منظر کے ساتھ کنٹراسٹ کو بڑھاتا ہے۔"</string>
<string name="accessibility_toggle_maximize_text_contrast_preference_title" msgid="8737272017343509753">"ٹیکسٹ کنٹراسٹ زیادہ سے زیادہ کریں"</string>
<string name="accessibility_toggle_maximize_text_contrast_preference_summary" msgid="8200408691846666900">"کنٹراسٹ بڑھانے کے لیے ٹیکسٹ کے گرد سیاہ یا سفید پس منظر شامل کریں"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"پاور کا استعمال ایڈجسٹ کریں"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"شامل کردہ پیکیجز"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"ایپس حسب معمول چل رہی ہیں"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"بیٹری کی تبدیلی کی تجویز کی گئی ہے"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"بیٹری کی گنجائش اور چارجنگ کی کارکردگی کم ہو گئی ہے اور بیٹری کی تبدیلی کی تجویز کی جاتی ہے۔"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"بیٹری لیول کم ہے"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"بیٹری لائف کو بڑھانے کے لیے بیٹری سیور آن کریں"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"بیٹری لائف کو بہتر بنائیں"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"اس VPN سے غیر منسلک کریں؟"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"غیر منسلک کریں"</string>
<string name="vpn_version" msgid="6344167191984400976">"ورژن"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"ورژن <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPN بھول جائیں"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"موجودہ VPN بدلیں؟"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"ہمیشہ آن VPN سیٹ کریں؟"</string>
@@ -3403,15 +3415,15 @@
<string name="zen_mode_settings_title" msgid="682676757791334259">"ڈسٹرب نہ کریں"</string>
<string name="zen_modes_list_title" msgid="4796033710444068729">"موڈز"</string>
<string name="zen_modes_list_intro" msgid="1795379595115088972">"انتشارات کو کم کریں اور نیند، کام، ڈرائیونگ اور اس کے درمیان ہر چیز کے طریقوں کے ساتھ اپنی توجہ پر قابو رکھیں۔"</string>
- <string name="zen_modes_add_mode" msgid="5926457160307593664">"اپنی خود کی وضع تخلیق کریں"</string>
+ <string name="zen_modes_add_mode" msgid="5926457160307593664">"اپنی خود کا موڈ تخلیق کریں"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"صرف اہم لوگوں اور ایپس کی جانب سے اطلاعات حاصل کریں"</string>
<string name="zen_mode_select_schedule" msgid="663163931596092952">"شیڈول سیٹ کریں"</string>
- <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"کی بنیاد پر شیڈول کریں"</string>
+ <string name="zen_mode_select_schedule_title" msgid="4260344424438327309">"مندرجہ ذیل کی بنیاد پر شیڈول کریں"</string>
<string name="zen_mode_select_schedule_time" msgid="1951968104691941146">"دن اور وقت"</string>
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"ہفتے کے دن صبح 9 بجے سے شام 5 بجے تک\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"کیلنڈر ایونٹس"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} فعال ہے}=2{{mode_1} اور {mode_2} فعال ہیں}=3{{mode_1}، {mode_2} اور {mode_3} فعال ہیں}other{{mode_1}، {mode_2} اور # مزید فعال ہیں}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 موڈ خودکار طور پر آن ہو سکتا ہے}other{# موڈز خودکار طور پر آن ہو سکتے ہیں}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{ڈسٹرب نہ کریں}=1{{mode_1}}=2{{mode_1}، {mode_2}}other{{mode_1}، {mode_2}، {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"آن ہے"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"سیٹ نہیں ہے"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"غیر فعال ہے"</string>
@@ -3430,7 +3442,7 @@
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"حذف کریں"</string>
<string name="zen_mode_menu_rename_mode" msgid="4681802125016390837">"نام تبدیل کریں"</string>
<string name="zen_mode_menu_delete_mode" msgid="5380084696402157428">"حذف کریں"</string>
- <string name="zen_mode_delete_mode_confirmation" msgid="7594340592051947392">"\"<xliff:g id="MODE">%1$s</xliff:g>\" موڈ کو حذف کریں؟"</string>
+ <string name="zen_mode_delete_mode_confirmation" msgid="7594340592051947392">"\"<xliff:g id="MODE">%1$s</xliff:g>\" موڈ کو حذف کریں؟"</string>
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"ترمیم کریں"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"شیڈولز"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"شیڈول کریں"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"جب آپ کو تھوڑے وقت میں بہت ساری اطلاعات موصول ہوتی ہیں تو آپ کا آلہ اس کا والیوم کم کر دے گا اور 2 منٹ تک الرٹس کو کم کر دے گا۔ کالز، الارم، اور ترجیحی گفتگوئیں متاثر نہیں ہوتی ہیں۔ \n\nکول ڈاؤن کے دوران موصول ہونے والی اطلاعات، اسکرین کے اوپر سے نیچے کی طرف سوائپ کر کے حاصل کی جا سکتی ہیں۔"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"دفتری پروفائلز پر لاگو کریں"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"دفتری پروفائل ایپس پر لاگو کریں"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR مددگار سروسز"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"کسی انسٹال کردہ ایپ نے VR مددگار سروسز کے طور پر چلائے جانے کی درخواست نہیں کی ہے۔"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"<xliff:g id="SERVICE">%1$s</xliff:g> کیلئے VR سروس کی رسائی کی اجازت دیں؟"</string>
@@ -3917,8 +3939,8 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} تک صرف ایک گھنٹے کیلئے الارمز میں تبدیل کریں}other{{time} تک صرف # گھنٹوں کیلئے الارمز میں تبدیل کریں}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> تک کیلئے صرف الارمز میں تبدیل کریں"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"ہمیشہ مداخلت کریں میں تبدیل کریں"</string>
- <string name="zen_mode_rename_title" msgid="8146882272966214558">"موڈ ترمیم کریں"</string>
- <string name="zen_mode_new_custom_title" msgid="7513785385574267851">"وضع تخلیق کریں"</string>
+ <string name="zen_mode_rename_title" msgid="8146882272966214558">"موڈ میں ترمیم کریں"</string>
+ <string name="zen_mode_new_custom_title" msgid="7513785385574267851">"موڈ تخلیق کریں"</string>
<string name="zen_mode_new_custom_default_name" msgid="2778307946775085105">"حسب ضرورت موڈ"</string>
<string name="zen_mode_edit_name_hint" msgid="4584652062167540536">"موڈ کا نام"</string>
<string name="zen_mode_edit_name_empty_error" msgid="5788063278827188275">"موڈ نام خالی نہیں رہ سکتا"</string>
@@ -3929,11 +3951,11 @@
<string name="zen_mode_trigger_title_generic" msgid="1347753445938095789">"ایپ کی ترتیبات"</string>
<string name="zen_mode_trigger_summary_settings_in_app" msgid="4860667191183702601">"<xliff:g id="APP_NAME">%1$s</xliff:g> میں معلومات اور ترتیبات"</string>
<string name="zen_mode_trigger_summary_managed_by_app" msgid="8631011868193102098">"<xliff:g id="APP_NAME">%1$s</xliff:g> کے زیر انتظام ہے"</string>
- <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"<xliff:g id="MODE_NAME">%1$s</xliff:g> غیر فعال کریں؟"</string>
- <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"یہ وضع غیر فعال ہونے پر کبھی آن نہیں ہوگی"</string>
+ <string name="zen_mode_confirm_disable_mode_title" msgid="7314998098582325018">"<xliff:g id="MODE_NAME">%1$s</xliff:g> غیر فعال کریں؟"</string>
+ <string name="zen_mode_confirm_disable_message" msgid="2703882646066764140">"یہ موڈ غیر فعال ہونے پر کبھی آن نہیں ہوگا"</string>
<string name="zen_mode_action_disable" msgid="3552921561331044881">"غیر فعال کریں"</string>
- <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> کو فعال کریں؟"</string>
- <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"یہ وضع اپنی ترتیبات کی بنیاد پر خودکار طور پر آن ہو سکتی ہے"</string>
+ <string name="zen_mode_confirm_enable_mode_title" msgid="6020902148457106017">"<xliff:g id="MODE_NAME">%1$s</xliff:g> کو فعال کریں؟"</string>
+ <string name="zen_mode_confirm_enable_message" msgid="8707142927858064775">"یہ موڈ اپنی ترتیبات کی بنیاد پر خودکار طور پر آن ہو سکتا ہے"</string>
<string name="zen_mode_action_enable" msgid="1161480633223176531">"فعال کریں"</string>
<string name="zen_mode_blurb_schedule_time" msgid="8223898702097484009">"ریگولر شیڈول کی پیروی کرنے والا ایک موڈ سیٹ کریں"</string>
<string name="zen_mode_blurb_schedule_calendar" msgid="382177907856065945">"کیلنڈر ایونٹس اور دعوتی جوابات کے ساتھ مطابقت پذیری کے لیے ایک موڈ سیٹ کریں"</string>
@@ -5283,7 +5305,7 @@
<string name="user_aspect_ratio_4_3" msgid="5196232982878982220">"4:3"</string>
<string name="user_aspect_ratio_option_a11y" msgid="1235801996029095219">"<xliff:g id="DENOMINATOR">%2$s</xliff:g> کا گانا <xliff:g id="NUMERATOR">%1$s</xliff:g>"</string>
<string name="app_aspect_ratio_footer" msgid="4029509301182067475">"جب آپ تناسبی شرح تبدیل کریں گے تو ایپ دوبارہ شروع ہو جائے گی۔ آپ غیر محفوظ شدہ تبدیلیوں سے محروم ہو سکتے ہیں۔ ہو سکتا ہے کہ کچھ ایپس مخصوص تناسبی شرحوں کے لیے آپٹمائز نہ کی گئی ہوں۔"</string>
- <string name="aspect_ratio_experimental_title" msgid="9088785421062044831">"تناسبی شرح (تجربہ)"</string>
+ <string name="aspect_ratio_experimental_title" msgid="9088785421062044831">"تناسبی شرح (تجرباتی)"</string>
<string name="aspect_ratio_experiment_title" msgid="128614319422121040">"تناسبی شرح (تجربہ)"</string>
<string name="aspect_ratio_labs_title" msgid="6733893837442759383">"تناسبی شرح (لیبز)"</string>
<string name="aspect_ratio_experimental_label" msgid="6319009297672567578">"تجرباتی"</string>
@@ -5459,18 +5481,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"سلسلہ سنیں"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ سننے کے لئے آڈیو سلسلے کا QR کوڈ اسکین کریں"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"اشتراک کے دوران پاس ورڈ میں ترمیم نہیں کر سکتے۔ پاس ورڈ تبدیل کرنے کے لئے پہلے آڈیو کا اشتراک بند کریں۔"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"آپ کا پاس ورڈ 4-16 حروف پر مشتمل ہونا چاہیے اور صرف حروف، نمبرز اور علامتیں استعمال کرنا چاہیے"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR کوڈ اسکینر"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"مدد درکار ہے؟"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"تلاش کی ترتیبات"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"ترتیبات تلاش کریں"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"رابطے، اسٹوریج، اکاؤنٹ"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"رابطوں کی اسٹوریج"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"صرف آلہ"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"نئے رابطے کسی اکاؤنٹ کے ساتھ مطابقت پذیر نہیں ہوں گے"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"رابطے آپ کے آلے میں محفوظ کیے جائیں گے اور آپ کے اکاؤنٹ میں بطور ڈیفالٹ مطابقت پذیر ہوں گے"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"کوئی ڈیفالٹ سیٹ نہیں ہے"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"ڈیفالٹ اکاؤنٹ کو ترتیب دینے میں خرابی"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"کوئی ڈیفالٹ سیٹ نہیں ہے"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"صرف آلہ"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"شروع کرنے کیلئے ایک اکاؤنٹ شامل کریں"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"تلاش کرنے کیلئے دائرہ بنائیں"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"اپنی اسکرین پر موجود مواد کو استعمال کر کے تلاش کرنے کے لیے ہوم بٹن یا نیویگیشن ہینڈل کو ٹچ کریں اور دبائے رکھیں۔"</string>
</resources>
diff --git a/res/values-uz/arrays.xml b/res/values-uz/arrays.xml
index 44a943c..96f9ee1 100644
--- a/res/values-uz/arrays.xml
+++ b/res/values-uz/arrays.xml
@@ -361,7 +361,7 @@
</string-array>
<string-array name="accessibility_button_gesture_selector_titles">
<item msgid="2370918472773154939">"Tugma"</item>
- <item msgid="6922258575853746220">"Imo-ishora"</item>
+ <item msgid="6922258575853746220">"Ishora"</item>
</string-array>
<string-array name="accessibility_button_size_selector_titles">
<item msgid="7482952318152486459">"Kichik"</item>
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Portfel"</item>
+ <item msgid="184985872234062767">"Klassik bino"</item>
+ <item msgid="9189550412466785530">"Uy-joy maskani"</item>
+ <item msgid="2142527562511049422">"Izohli havola"</item>
+ <item msgid="2548100558260478605">"Odamlar guruhi"</item>
+ <item msgid="2270003903304578284">"Elektr lampa"</item>
+ <item msgid="4793496619091161864">"Taqvim"</item>
+ <item msgid="5673625795644364100">"Bezovta qilinmasin"</item>
+ <item msgid="1423820834865831361">"Yugurayotgan odam"</item>
+ <item msgid="2037298830718732608">"Golf"</item>
+ <item msgid="2197835014443491074">"Sport zalidagi gantel"</item>
+ <item msgid="2730180105015616518">"Suzish"</item>
+ <item msgid="2666922823253345958">"Piyoda sayrdagi odam"</item>
+ <item msgid="8234880356472211396">"Koptok otayotgan odam"</item>
+ <item msgid="4642980625253001443">"Tepayotgan odam"</item>
+ <item msgid="4324795269518833500">"Oʻyin kontrolleri"</item>
+ <item msgid="7789966425125441125">"Rassom rang palitrasi"</item>
+ <item msgid="663512680597461570">"Qor parchasi"</item>
+ <item msgid="7952183800501346803">"Sohil soyaboni"</item>
+ <item msgid="799139025758265891">"Asbob-uskunalar"</item>
+ <item msgid="8112685757657659269">"Pianino"</item>
+ <item msgid="3861584909935022342">"Plyonka ruloni"</item>
+ <item msgid="5827426100157335512">"Kitob"</item>
+ <item msgid="8585828346253128384">"Lotus guli"</item>
+ <item msgid="8788370542815300188">"Odam aqli"</item>
+ <item msgid="7287354964767553293">"Quloqliklar"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Poyezd"</item>
+ <item msgid="4903790544026923026">"Avtomobil"</item>
+ <item msgid="5010405583912314582">"Sanchqi va pichoq"</item>
+ <item msgid="8939998598599064900">"Xarid savati"</item>
+ <item msgid="3379605903308731893">"Bola"</item>
+ <item msgid="7808668968550293112">"Jonivor panjasi"</item>
+ <item msgid="1000692647524056504">"Yulduzcha nishoni"</item>
+ <item msgid="8270261073421676502">"Ikki kishi"</item>
+ <item msgid="5767782819651505460">"Yulduz"</item>
+ <item msgid="4368451291862729334">"Yurak"</item>
+ <item msgid="2613199102208419986">"Uy"</item>
+ <item msgid="3022279986430275040">"Yarim oy"</item>
+ <item msgid="5421089790869483206">"Soat"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index c32c824..9ec6113 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Yangi qurilmani juftlash"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Ertaga avtomatik yoqilsin"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"Agar Bluetoothni oʻchirsangiz, u ertasi kuni yana yonadi"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Oʻng quloqni ulash"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Chap quloqni ulash"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Boshqa quloqni ulash"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Bluetooth LE Audioni faolsizlantirish"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Qurilmada LE audio apparatli taʼminoti boʻlsa, Bluetooth LE audio funksiyasi faolsizlantiriladi."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth LE Audio rejimi"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bluetooth LE Audio uzatish interfeysiga razm solishni yoqish"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Bluetooth LE Audio uzatish interfeysiga razm solish, jumladan, shaxsiy audio ulashuv va yopiq uzatish funksiyalarini yoqadi"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Qurilma axborotida LE audio tugmasi chiqsin"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bluetooth LE Audio ruxsat roʻyxatini chetlash"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"LE Audio aloqasidan birlamchi holatda foydalanish, hatto qurilmaning ruxsat olishga muvofiqligi tekshirilmagan boʻlsa ham."</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Qurilmadagi tarmoq va simsiz signallar orqali avtomatik sozlash"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Avtomatik vaqt mintaqasi"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Atrofdagi mobil tarmoq asosida avtomatik sozlash"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Geo-joylashuv asosida avtomatik sozlash"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Birlamchi hududiy sozlamalar"</string>
<string name="date_time_24hour" msgid="286679379105653406">"24 soatlik format"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Vaqt"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Barmoqni olib, keyin yana skanerga tekkizing"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Barmoq izi skaneridan foydalanish imkonsiz"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Xizmat koʻrsatish markaziga murojaat qiling."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ekran oʻchiqligida Barmoq izi bilan ochish"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Ekran oʻchiqligida ham Barmoq izi bilan ochish funksiyasidan foydalaning"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Ekranni oʻchirish, qulfdan chiqarish"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Boshqa xavfsizlik sozlamalari"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Ish profili qulfi, shifrlash va boshqalar"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Shifrlash, hisob maʼlumotlari va boshqalar"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Klaviaturada bir tugmaning tez takroriy bosilishi inkor etiladi"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Takroriy bosishlar intervali"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Klaviaturada tugmaning takroriy bosilishi qancha vaqt inkor etilishini tanlang"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Boshqa"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"boshqa qiymat"</string>
<string name="slow_keys" msgid="2891452895499690837">"Sekin tugmalar"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Tugmani bosish intervali hamda uning amalini sozlash"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Yopishqoq tugmalar"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Barcha tugmalar kombinatsiyasini bosib turish oʻrniga ularni birma-bir bosing"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Sinchqoncha tugmalari"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Sichqoncha tugmalaridan foydalaning"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Kursorni klaviatura orqali boshqarish"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Sichqonchada teskari varaqlash"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Sahifani pastga varaqlash uchun tepaga suring"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Chap va oʻng tugmalarni almashtirish"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Sichqonchada chap tugmani oʻng tugma sifatida ishlatish"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"<xliff:g id="KEYBOARD_NAME">%s</xliff:g> uchun sichqoncha tugmalari"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Sichqoncha kursorini surish uchun <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> tugmalaridan foydalaning"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Asosiy sichqoncha tugmasini bosish uchun <xliff:g id="CLICK_LABEL">%s</xliff:g> tugmasidan foydalaning"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Asosiy sichqoncha tugmasini bosib turish uchun <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> tugmasidan foydalaning"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Asosiy sichqoncha tugmasini qoʻyib yuborish uchun <xliff:g id="RELEASE_LABEL">%s</xliff:g> tugmasidan foydalaning"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Varaqlash rejimini almashtirish uchun <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> tugmasidan foydalaning. Bunda <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> tugmalari tepaga, pastga, chapga yoki oʻngga varaqlanadi"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Qoʻshimcha sichqoncha tugmasini bosish uchun <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> tugmasidan foydalaning"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Tezkor tugmalar"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Tezkor tugmalar roʻyxatini ochish"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Ish profili klaviaturalari va vositalari"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> uchun yangi tugma tanlang:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Jismoniy klaviatura uchun qulayliklar"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Yopishqoq tugmalar, qayta bosish boshqaruvi, sichqonchani boshqarish tugmalari"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Takrorlash tugmalari"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Takror kiritishdan oldin kechiktirish"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Takror kiritish tezligi"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Kalit chiqarilmaguncha uning belgisini takrorlash uchun tugmani bosib turing"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> sxemasi"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Standart"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Avtomatik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2203,7 +2214,7 @@
<string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Yaqinlashtirish:</b><br/> {0,number,integer}. Kattalashtirish tugmasini bosing<br/> {1,number,integer}. Ekranga bosing<br/> {2,number,integer}. Ekranda kezish uchun 1 yoki 2 barmoq bilan suring<br/> {3,number,integer}. Moslash uchun 2 barmoq bilan chimding<br/> {4,number,integer}. Kattalashtirishni toʻxtatish tugmasini bosing<br/><br/> Vaqtinchalik yaqinlashtirish va hokazolar ham mumkin."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Agar kattalashtirish yoqilsa, ekrandagi maʼlumotlarni kattalashtirish mumkin.\n\n"<b>"Kattalashtirish"</b>" uchun zum tugmasini bosib, ekranning istalgan joyini bosing.\n"<ul><li>"Siljitish uchun bir nechta barmogʻingiz bilan suring"</li>\n<li>"Masshtabini oʻzgartirish uchun bir nechta barmogʻingizni jipslashtiring"</li></ul>\n\n<b>"Vaqtinchalik kattalashtirish uchun"</b>" zum tugmasini bosib, ekranning istalgan joyini bosing va ushlab turing.\n"<ul><li>"Ekran boʻylab harakatlanish uchun suring"</li>\n<li>"Oʻz holatiga qaytarish uchun barmoqni qoʻyib yuboring"</li></ul>\n\n"Klaviatura yoki navigatsiya paneli orqali kattalashtirib boʻlmaydi."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Sahifa: <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> / <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
- <string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Qulayliklar tugmasi buyrugʻi"</string>
+ <string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Qulayliklarga tezkor kirish tugmasi"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"Tovush tugmasi buyrugʻi"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="5529704884360240365">"Uch marta bosish buyrugʻi"</string>
<string name="accessibility_tutorial_dialog_title_two_finger_double" msgid="5749704453829390283">"%1$d-barmoq bilan ikki marta bosish buyrugʻi"</string>
@@ -2268,7 +2279,7 @@
<string name="accessibility_button_summary" msgid="8510939012631455831">"Maxsus imkoniyatlarni tez ochish"</string>
<string name="accessibility_button_gesture_description" msgid="1141723096904904336">"<b>Boshlash uchun</b><br/> {0,number,integer}. Maxsus imkoniyatlar sozlamalarini oching<br/> {1,number,integer}. Funksiyani tanlang va yorliq ustiga bosing<br/> {2,number,integer}. Foydalaniladigan tugmani yoki funksiyadan foydalanish uchun ishorani tanlang<br/>"</string>
<string name="accessibility_button_description" msgid="7669538706120092399">"<b>Boshlash uchun</b><br/> {0,number,integer}. Maxsus imkoniyatlar sozlamalarini oching<br/> {1,number,integer}. Funksiyani tanlang va yorliq ustiga bosing<br/> {2,number,integer}. Funksiyadan foydalanish uchun tugmani tanlang<br/>"</string>
- <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Tugma yoki imo-ishoradan foydalanish"</string>
+ <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Tugma yoki ishora ishlatish"</string>
<string name="accessibility_button_location_title" msgid="7182107846092304942">"Joylashuv"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"Hajmi"</string>
<string name="accessibility_button_fade_title" msgid="8081993897680588829">"Ishlatilmagandagi shaffoflashuv"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Quvvatdan foydalanishni moslash"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Quyidagi paketlarni o‘z ichiga oladi"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Ilovalar odatdagidek ishlamoqda"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Batareyani almashtirish tavsiya etiladi"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Batareya sigʻimi va quvvatlash unumdorligi kamayadi hamda batareyani almashtirish tavsiya etiladi."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Batareya quvvati kam"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Batareya quvvatini tejash uchun Quvvat tejash funksiyasini yoqing"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Batareya quvvatini uzoqroq vaqtga yetkazing"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Bu VPN bilan aloqa uzilsinmi?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Aloqani uzish"</string>
<string name="vpn_version" msgid="6344167191984400976">"Versiya"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Versiya <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"VPNni o‘chirish"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Mavjud VPN tarmog‘i almashtirilsinmi?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Doimiy VPN o‘rnatilsinmi?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9:00 — 17:00 begim kunlari\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Taqvimdagi tadbirlar"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{{mode_1} faol}=2{{mode_1} va {mode_2} faol}=3{{mode_1}, {mode_2} va {mode_3} faol}other{{mode_1}, {mode_2} va # tasi faol}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 ta rejim avtomatik yoqilishi mumkin}other{# ta rejim avtomatik yoqilishi mumkin}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Bezovta qilinmasin}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"YONIQ"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Sozlanmagan"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Yoqilmagan"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Qisqa vaqt oraligʻida koʻp bildirishnoma kelsa, qurilmangizdagi tovush balandligi hamda signallar davomiyligi 2 daqiqagacha kamaytiriladi. Chaqiruvlar, signallar va muhim suhbatlarga taʼsir qilmaydi. \n\nSekinlatish paytida olingan bildirishnomalarni ekranning yuqori qismidan pastga tortish orqali topish mumkin."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Ish profillariga tatbiq qilish"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Ish profilidagi ilovalar uchun qoʻllash"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Yordamchi VR xizmatlar"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Hech qanday ilova yordamchi VR xizmatlar sifatida ishga tushirilishiga ruxsat so‘ramagan."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"VR xizmatiga “<xliff:g id="SERVICE">%1$s</xliff:g>” xizmatidan foydalanishga ruxsat berilsinmi?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Oqimga ulanish"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasi bilan birga tinglash uchun audio oqim QR kodini skanerlang"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Parol ulashuv vaqtida tahrirlanmaydi. Parolni oʻzgartirish uchun audio ulashuvni faolsizlantiring."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Parol 4-16 belgidan iborat boʻlishi lozim. Faqat harf, raqam va belgilar ishlatish mumkin."</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR-kod skaneri"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Yordam kerakmi?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Qidiruv sozlamalari"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Faqat qurilmada"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Yangi kontaktlar hisobga sinxronlanmaydi"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Birlamchi holatda kontaktlar qurilmada saqlanadi va hisobga sinxronlanadi"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Asosiy hisob tayinlanmagan"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Birlamchi hisob tanlanmadi"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Birlamchi hisob tanlanmagan"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Faqat qurilmada"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Avval hisob qoʻshing"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Chizib qidirish"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Ekrandagi kontent orqali qidirish uchun Asosiy tugmani yoki navigatsiya panelini bosib turing"</string>
</resources>
diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml
index 978d4a7..550c7e0 100644
--- a/res/values-vi/arrays.xml
+++ b/res/values-vi/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Cặp tài liệu"</item>
+ <item msgid="184985872234062767">"Toà nhà cổ điển"</item>
+ <item msgid="9189550412466785530">"Chung cư"</item>
+ <item msgid="2142527562511049422">"Ô lời thoại"</item>
+ <item msgid="2548100558260478605">"Nhóm người"</item>
+ <item msgid="2270003903304578284">"Bóng đèn"</item>
+ <item msgid="4793496619091161864">"Lịch"</item>
+ <item msgid="5673625795644364100">"Không làm phiền"</item>
+ <item msgid="1423820834865831361">"Người đang chạy"</item>
+ <item msgid="2037298830718732608">"Gôn"</item>
+ <item msgid="2197835014443491074">"Tạ tập thể dục"</item>
+ <item msgid="2730180105015616518">"Bơi"</item>
+ <item msgid="2666922823253345958">"Người đang đi bộ đường dài"</item>
+ <item msgid="8234880356472211396">"Người đang ném bóng"</item>
+ <item msgid="4642980625253001443">"Người đang đá"</item>
+ <item msgid="4324795269518833500">"Tay điều khiển trò chơi"</item>
+ <item msgid="7789966425125441125">"Bảng màu của nghệ sĩ"</item>
+ <item msgid="663512680597461570">"Bông tuyết"</item>
+ <item msgid="7952183800501346803">"Dù che trên bãi biển"</item>
+ <item msgid="799139025758265891">"Công cụ trong xưởng"</item>
+ <item msgid="8112685757657659269">"Piano"</item>
+ <item msgid="3861584909935022342">"Cuộn phim"</item>
+ <item msgid="5827426100157335512">"Sách"</item>
+ <item msgid="8585828346253128384">"Hoa sen"</item>
+ <item msgid="8788370542815300188">"Suy nghĩ của một người"</item>
+ <item msgid="7287354964767553293">"Tai nghe"</item>
+ <item msgid="2530059623783800987">"TV"</item>
+ <item msgid="5307182323469376758">"Xe lửa"</item>
+ <item msgid="4903790544026923026">"Ô tô"</item>
+ <item msgid="5010405583912314582">"Dao và nĩa"</item>
+ <item msgid="8939998598599064900">"Giỏ hàng"</item>
+ <item msgid="3379605903308731893">"Trẻ em"</item>
+ <item msgid="7808668968550293112">"Dấu chân động vật"</item>
+ <item msgid="1000692647524056504">"Huy hiệu ngôi sao"</item>
+ <item msgid="8270261073421676502">"2 người"</item>
+ <item msgid="5767782819651505460">"Ngôi sao"</item>
+ <item msgid="4368451291862729334">"Trái tim"</item>
+ <item msgid="2613199102208419986">"Nhà"</item>
+ <item msgid="3022279986430275040">"Nửa vầng trăng"</item>
+ <item msgid="5421089790869483206">"Đồng hồ"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 377d428..39e926d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Ghép nối thiết bị mới"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Tự động bật vào ngày mai"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Ghép nối tai phải"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Ghép nối tai trái"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Ghép nối tai khác"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Tắt âm thanh năng lượng thấp qua Bluetooth"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Tắt tính năng âm thanh năng lượng thấp qua Bluetooth nếu thiết bị hỗ trợ chức năng phần cứng âm thanh năng lượng thấp."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Bluetooth Âm thanh năng lượng thấp"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Bật chế độ xem trước giao diện người dùng của tính năng truyền phát qua Bluetooth Âm thanh năng lượng thấp"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Bật chế độ xem trước giao diện người dùng của tính năng Chia sẻ âm thanh năng lượng thấp, bao gồm cả tính năng chia sẻ âm thanh cá nhân và truyền phát ở chế độ riêng tư"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Hiện nút bật/tắt Âm thanh năng lượng thấp"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Bỏ qua danh sách cho phép đối với tính năng Bluetooth Âm thanh năng lượng thấp"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Sử dụng Âm thanh năng lượng thấp theo mặc định, ngay cả khi chưa xác minh được rằng thiết bị ngoại vi Âm thanh năng lượng thấp đáp ứng tiêu chí của danh sách cho phép."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Tự động đặt dựa trên tín hiệu không dây và mạng của bạn"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Múi giờ tự động"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Tự động đặt dựa trên các mạng di động gần bạn"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Tự động đặt dựa trên vị trí thiết bị của bạn, nếu có"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Sử dụng định dạng của địa phương"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Sử dụng định dạng 24 giờ"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Giờ"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Nhấc ngón tay, sau đó chạm lại vào cảm biến"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Không thể dùng cảm biến vân tay"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Hãy liên hệ với một nhà cung cấp dịch vụ sửa chữa."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Mở khoá bằng vân tay khi màn hình tắt"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Dùng tính năng Mở khoá bằng vân tay ngay cả khi màn hình đang tắt"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Màn hình tắt, Mở khoá"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Chế độ cài đặt bảo mật khác"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Khoá hồ sơ công việc, mã hoá và chế độ cài đặt khác"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Mã hoá, thông tin xác thực và chế độ cài đặt khác"</string>
@@ -630,8 +636,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Cài đặt ứng dụng"</b>\n"Cài đặt những ứng dụng bạn muốn giữ riêng tư trong không gian của mình"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Lưu ý"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Các ứng dụng sẽ bị dừng khi bạn khoá không gian của mình"</b>\n"Khi bạn khoá không gian của mình, các ứng dụng trong đó sẽ bị dừng và bạn sẽ không nhận được thông báo từ các ứng dụng đó"</string>
- <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Không gian riêng tư không phù hợp với những ứng dụng cần chạy trong nền hoặc gửi các thông báo nguy cấp, chẳng hạn như ứng dụng về sức khoẻ. Điều này là do các thông báo và hoạt động trong chế độ nền sẽ dừng lại khi không gian của bạn bị khoá.\n\nKhi không gian riêng tư của bạn bị khoá, các ứng dụng trong không gian này sẽ không xuất hiện trong trình quản lý quyền, bảng tổng quan về quyền riêng tư và những chế độ cài đặt khác.\n\nBạn không thể chuyển không gian riêng tư của mình sang một thiết bị mới. Nếu muốn dùng không gian đó trên một thiết bị khác, bạn sẽ cần thiết lập một không gian riêng tư khác.\n\nBất cứ ai kết nối thiết bị của bạn với một máy tính hoặc cài đặt các ứng dụng gây hại trên thiết bị này đều có thể truy cập vào không gian riêng tư của bạn."</string>
- <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Không gian riêng tư không phù hợp với những ứng dụng cần chạy trong nền hoặc gửi các thông báo nguy cấp, chẳng hạn như ứng dụng về sức khoẻ. Điều này là do các thông báo và hoạt động trong chế độ nền sẽ dừng lại khi không gian của bạn bị khoá.\n\nKhi không gian riêng tư của bạn bị khoá, các ứng dụng trong không gian này sẽ không xuất hiện trong trình quản lý quyền, bảng tổng quan về quyền riêng tư và những chế độ cài đặt khác.\n\nBạn không thể khôi phục không gian riêng tư của mình sang một thiết bị mới. Nếu muốn dùng không gian đó trên một thiết bị khác, bạn sẽ cần thiết lập một không gian khác.\n\nBất cứ ai kết nối thiết bị của bạn với một máy tính hoặc cài đặt các ứng dụng độc hại trên thiết bị này đều có thể truy cập vào không gian riêng tư của bạn."</string>
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Không gian riêng tư không phù hợp với những ứng dụng cần chạy trong nền hoặc gửi các thông báo nguy cấp, chẳng hạn như ứng dụng về y tế. Điều này là do các thông báo và hoạt động trong chế độ nền sẽ dừng lại khi không gian của bạn bị khoá.\n\nKhi không gian riêng tư của bạn bị khoá, các ứng dụng trong không gian này sẽ không xuất hiện trong trình quản lý quyền, bảng tổng quan về quyền riêng tư và những chế độ cài đặt khác.\n\nBạn không thể chuyển không gian riêng tư của mình sang một thiết bị mới. Nếu muốn dùng không gian đó trên một thiết bị khác, bạn sẽ cần thiết lập một không gian riêng tư khác.\n\nBất cứ ai kết nối thiết bị của bạn với một máy tính hoặc cài đặt các ứng dụng gây hại trên thiết bị này đều có thể truy cập vào không gian riêng tư của bạn."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Không gian riêng tư không phù hợp với những ứng dụng cần chạy trong nền hoặc gửi các thông báo nguy cấp, chẳng hạn như ứng dụng về y tế. Điều này là do các thông báo và hoạt động trong chế độ nền sẽ dừng lại khi không gian của bạn bị khoá.\n\nKhi không gian riêng tư của bạn bị khoá, các ứng dụng trong không gian này sẽ không xuất hiện trong trình quản lý quyền, bảng tổng quan về quyền riêng tư và những chế độ cài đặt khác.\n\nBạn không thể khôi phục không gian riêng tư của mình sang một thiết bị mới. Nếu muốn dùng không gian đó trên một thiết bị khác, bạn sẽ cần thiết lập một không gian khác.\n\nBất cứ ai kết nối thiết bị của bạn với một máy tính hoặc cài đặt các ứng dụng độc hại trên thiết bị này đều có thể truy cập vào không gian riêng tư của bạn."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Tìm hiểu thêm về không gian riêng tư"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Quá trình này sẽ mất vài phút"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Đang thiết lập không gian riêng tư…"</string>
@@ -1950,19 +1956,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Bàn phím sẽ bỏ qua các lần nhấn nhanh liên tục cùng một phím"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Ngưỡng phím nảy"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Chọn khoảng thời gian bàn phím bỏ qua các lần nhấn phím liên tục"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0,2 giây"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0,4 giây"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0,6 giây"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0,2 giây"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0,4 giây"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0,6 giây"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Tuỳ chỉnh"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"giá trị tuỳ chỉnh"</string>
<string name="slow_keys" msgid="2891452895499690837">"Phím chậm"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Điều chỉnh thời gian cần để kích hoạt một lượt nhấn phím"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Phím cố định"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Nhấn từng phím một để dùng phím tắt thay vì giữ các phím cùng lúc"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Các phím điều khiển chuột"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Dùng các phím điều khiển chuột"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Sử dụng bàn phím để điều khiển con trỏ"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Đảo ngược hướng cuộn chuột"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Cuộn lên để di chuyển xuống phía dưới của trang"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Hoán đổi nút chuột trái và phải"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Sử dụng nút chuột trái như nút chuột phải"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Các phím điều khiển chuột của <xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Dùng các phím <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> để di chuyển con trỏ chuột"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Dùng phím <xliff:g id="CLICK_LABEL">%s</xliff:g> để nhấp vào nút chuột chính"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Dùng phím <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> để nhấn và giữ nút chuột chính"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Dùng phím <xliff:g id="RELEASE_LABEL">%s</xliff:g> để nhả nút chuột chính"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Dùng phím <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> để bật/tắt chế độ cuộn. Khi đó, các phím <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> sẽ cuộn chế độ xem lên trên, xuống dưới, sang trái hoặc sang phải"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Dùng phím <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> để nhấp vào nút chuột phụ"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Phím tắt"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Hiện danh sách phím tắt"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Công cụ và bàn phím hồ sơ công việc"</string>
@@ -2031,14 +2047,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Chọn một phím mới cho <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Hỗ trợ tiếp cận cho bàn phím vật lý"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Phím cố định, Phím nảy, Phím chuột"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Lặp lại phím"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Độ trễ trước khi lặp lại"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Tốc độ lặp lại"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Nhấn và giữ một phím để lặp lại ký tự của phím đó cho đến khi bạn nhả phím"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Bố cục <xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Mặc định"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Tự động: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2203,7 +2215,7 @@
<string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Cách phóng to:</b><br/> {0,number,integer}. Dùng lối tắt để bắt đầu phóng to<br/> {1,number,integer}. Nhấn vào màn hình<br/> {2,number,integer}. Kéo 1 hoặc 2 ngón tay để di chuyển xung quanh màn hình<br/> {3,number,integer}. Chụm 2 ngón tay để điều chỉnh mức thu phóng<br/> {4,number,integer}. Dùng lối tắt để dừng phóng to<br/><br/> Bạn có thể dùng tính năng phóng to tạm thời cùng nhiều tính năng khác."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Khi tính năng phóng to đang bật, bạn có thể phóng to trên màn hình.\n\n"<b>"Để thu phóng"</b>", hãy mở tính năng phóng to rồi nhấn vào vị trí bất kỳ trên màn hình.\n"<ul><li>"Kéo 2 hoặc nhiều ngón tay để cuộn"</li>\n<li>"Chụm 2 hoặc nhiều ngón tay để điều chỉnh mức thu phóng"</li></ul>\n\n<b>"Để thu phóng tạm thời"</b>", hãy mở tính năng phóng to rồi chạm và giữ vị trí bất kỳ trên màn hình.\n"<ul><li>"Kéo để di chuyển quanh màn hình"</li>\n<li>"Nhấc ngón tay để thu nhỏ"</li></ul>\n\n"Bạn không thể phóng to trên bàn phím hoặc thanh điều hướng."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Trang <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
- <string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Phím tắt cho nút hỗ trợ tiếp cận"</string>
+ <string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Lối tắt cho nút hỗ trợ tiếp cận"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"Lối tắt cho phím âm lượng"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="5529704884360240365">"Lối tắt cho cử chỉ nhấn 3 lần"</string>
<string name="accessibility_tutorial_dialog_title_two_finger_double" msgid="5749704453829390283">"Lối tắt cho cử chỉ nhấn đúp bằng %1$d ngón tay"</string>
@@ -2570,6 +2582,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Điều chỉnh việc sử dụng nguồn"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Gói bao gồm"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Các ứng dụng đang chạy bình thường"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Nên thay pin"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Do dung lượng pin và hiệu suất sạc bị giảm, bạn nên thay pin."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Mức pin yếu"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Bật Trình tiết kiệm pin để kéo dài thời lượng pin"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Kéo dài thời lượng pin"</string>
@@ -2987,8 +3001,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Ngắt kết nối VPN này?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Ngắt kết nối"</string>
<string name="vpn_version" msgid="6344167191984400976">"Phiên bản"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Phiên bản <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Xóa VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Thay thế VPN hiện có?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Đặt VPN luôn bật?"</string>
@@ -3394,7 +3407,7 @@
<string name="spatial_summary_on_one" msgid="6239933399496282994">"Đang bật/<xliff:g id="OUTPUT_DEVICE">%1$s</xliff:g>"</string>
<string name="spatial_summary_on_two" msgid="4526919818832483883">"Đang bật/<xliff:g id="OUTPUT_DEVICE_0">%1$s</xliff:g> và <xliff:g id="OUTPUT_DEVICE_1">%2$s</xliff:g>"</string>
<string name="spatial_audio_footer_title" msgid="8775010547623606088">"Bạn cũng có thể bật chế độ Âm thanh không gian cho các thiết bị Bluetooth."</string>
- <string name="spatial_audio_footer_learn_more_text" msgid="3826811708094366301">"Cài đặt thiết bị được kết nối"</string>
+ <string name="spatial_audio_footer_learn_more_text" msgid="3826811708094366301">"Cài đặt thiết bị đã kết nối"</string>
<string name="spatial_audio_multi_toggle_title" msgid="6175786400035541273">"Âm thanh không gian"</string>
<string name="spatial_audio_multi_toggle_off" msgid="2086359413991193164">"Đang tắt"</string>
<string name="spatial_audio_multi_toggle_on" msgid="4204808183659033003">"Đã khắc phục"</string>
@@ -3411,7 +3424,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 giờ sáng – 5 giờ chiều các ngày trong tuần\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Sự kiện trên lịch"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Chế độ {mode_1} đang hoạt động}=2{Chế độ {mode_1} và {mode_2} đang hoạt động}=3{Chế độ {mode_1}, {mode_2} và {mode_3} đang hoạt động}other{{mode_1}, {mode_2} và # chế độ khác đang hoạt động}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Có thể tự động bật 1 chế độ}other{Có thể tự động bật # chế độ}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Không làm phiền}=1{{mode_1}}=2{{mode_1}, {mode_2}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"ĐANG BẬT"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Chưa đặt"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Đã tắt"</string>
@@ -3422,7 +3435,7 @@
<string name="zen_mode_not_found_text" msgid="692090778655810329">"Không tìm thấy chế độ nào"</string>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Hạn chế bị gián đoạn"</string>
<string name="zen_mode_setup_page_summary" msgid="7568908001205193154">"Chặn các yếu tố gây gián đoạn và mất tập trung"</string>
- <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Thiết lập <xliff:g id="MODE">%1$s</xliff:g>"</string>
+ <string name="zen_mode_setup_button_label" msgid="1959984133767361374">"Thiết lập chế độ <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Bật chế độ Không làm phiền"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Chuông báo và âm thanh đa phương tiện có thể làm gián đoạn"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Lịch biểu"</string>
@@ -3481,7 +3494,7 @@
<string name="zen_mode_restrict_notifications_custom" msgid="5469078057954463796">"Tùy chỉnh"</string>
<string name="zen_mode_restrict_notifications_enable_custom" msgid="4303255634151330401">"Bật cài đặt tùy chỉnh"</string>
<string name="zen_mode_restrict_notifications_disable_custom" msgid="5062332754972217218">"Xóa cài đặt tùy chỉnh"</string>
- <string name="zen_mode_restrict_notifications_summary_muted" msgid="2826459087306271381">"Đã hiện thông báo"</string>
+ <string name="zen_mode_restrict_notifications_summary_muted" msgid="2826459087306271381">"Thông báo hiển thị"</string>
<string name="zen_mode_restrict_notifications_summary_custom" msgid="6455811408721183198">"Đã ẩn một phần thông báo"</string>
<string name="zen_mode_restrict_notifications_summary_hidden" msgid="2157279412167366119">"Đã ẩn thông báo"</string>
<string name="zen_mode_what_to_block_title" msgid="5692710098205334164">"Hạn chế tùy chỉnh"</string>
@@ -3715,6 +3728,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Khi bạn nhận được nhiều thông báo trong một thời gian ngắn, thiết bị của bạn sẽ hạ âm lượng và giảm thiểu cảnh báo trong tối đa 2 phút. Cuộc gọi, chuông báo và cuộc trò chuyện ưu tiên sẽ không bị ảnh hưởng. \n\nBạn có thể kéo xuống từ đầu màn hình để xem các thông báo nhận được trong lúc giảm dần âm lượng thông báo."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Áp dụng cho hồ sơ công việc"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Áp dụng cho các ứng dụng trong hồ sơ công việc"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Dịch vụ trình trợ giúp thực tế ảo"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Không có ứng dụng đã cài đặt nào yêu cầu được chạy dưới dạng dịch vụ trình trợ giúp thực tế ảo."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Cho phép <xliff:g id="SERVICE">%1$s</xliff:g> truy cập dịch vụ thực tế ảo?"</string>
@@ -3764,7 +3787,7 @@
<string name="no_channels" msgid="4716199078612071915">"Ứng dụng này chưa đăng bất kỳ thông báo nào"</string>
<string name="no_recent_channels" msgid="5068574296267584043">"Hiện các danh mục không dùng đến"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Chế độ cài đặt bổ sung trong ứng dụng"</string>
- <string name="show_unused_channels" msgid="4956292847964439078">"Hiện các danh mục không dùng"</string>
+ <string name="show_unused_channels" msgid="4956292847964439078">"Hiện các danh mục không dùng đến"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ẩn các danh mục không dùng"</string>
<string name="deleted_channels" msgid="8489800381509312964">"{count,plural, =1{# danh mục bị xoá}other{# danh mục bị xoá}}"</string>
<string name="app_notification_block_title" msgid="3880322745749900296">"Chặn tất cả"</string>
@@ -5271,7 +5294,7 @@
<string name="aspect_ratio_summary" msgid="4056406351663726494">"Hãy thử một tỷ lệ khung hình mới để xem ứng dụng, nếu ứng dụng này chưa được thiết kế cho vừa với <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"Hãy thử một tỷ lệ khung hình mới để xem ứng dụng, nếu ứng dụng này chưa được thiết kế cho vừa với <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. Có thể một số ứng dụng chưa được tối ưu hoá cho một số tỷ lệ khung hình nhất định."</string>
<string name="aspect_ratio_summary_text" msgid="4737461467467220325">"Hãy thử một tỷ lệ khung hình mới để xem một ứng dụng nếu ứng dụng đó chưa được thiết kế cho vừa với <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Hãy thử một tỷ lệ khung hình mới để xem một ứng dụng nếu ứng dụng đó chưa được thiết kế cho vừa với <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. Có thể một số ứng dụng chưa được tối ưu hoá cho một số tỷ lệ khung hình nhất định."</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"Hãy thử một tỷ lệ khung hình mới để xem một ứng dụng nếu ứng dụng đó chưa được thiết kế cho vừa với <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. Một số ứng dụng có thể chưa được tối ưu hoá cho một số tỷ lệ khung hình nhất định."</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"Ứng dụng đề xuất"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"Đã thay đổi"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"Theo giá trị mặc định của ứng dụng"</string>
@@ -5459,18 +5482,23 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Nghe luồng âm thanh"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Hãy quét mã QR của luồng âm thanh để nghe bằng <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Không thể chỉnh sửa mật khẩu trong khi chia sẻ. Để đổi mật khẩu, trước tiên hãy tắt tính năng chia sẻ âm thanh."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Mật khẩu của bạn phải có từ 4 đến 16 ký tự và chỉ được sử dụng chữ cái, số và ký hiệu"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Trình quét mã QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Bạn cần được trợ giúp?"</annotation></string>
- <string name="homepage_search" msgid="6759334912284663559">"Tìm kiếm trong phần Cài đặt"</string>
+ <string name="homepage_search" msgid="6759334912284663559">"Tìm chế độ cài đặt"</string>
<string name="keywords_contacts_storage" msgid="9061213057165337893">"danh bạ, bộ nhớ, tài khoản"</string>
<string name="contacts_storage_settings_title" msgid="1574030546525203810">"Bộ nhớ danh bạ"</string>
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Chỉ thiết bị"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Những người liên hệ mới sẽ không được đồng bộ hoá với một tài khoản"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Những người liên hệ sẽ được lưu vào thiết bị và đồng bộ hoá với tài khoản của bạn theo mặc định"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Chưa đặt tài khoản mặc định nào"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Đã xảy ra lỗi khi đặt tài khoản mặc định"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Chưa đặt tài khoản mặc định nào"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Chỉ thiết bị"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Thêm một tài khoản để bắt đầu"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Khoanh tròn để tìm kiếm"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Bạn có thể chạm và giữ nút Màn hình chính hoặc thanh điều hướng để tìm kiếm bằng nội dung có trên màn hình của mình."</string>
</resources>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index 765f4d0..4ecb4f6 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"公文包"</item>
+ <item msgid="184985872234062767">"古典建筑"</item>
+ <item msgid="9189550412466785530">"公寓建筑"</item>
+ <item msgid="2142527562511049422">"对话气泡"</item>
+ <item msgid="2548100558260478605">"一群人"</item>
+ <item msgid="2270003903304578284">"灯泡"</item>
+ <item msgid="4793496619091161864">"日历"</item>
+ <item msgid="5673625795644364100">"勿扰"</item>
+ <item msgid="1423820834865831361">"跑步的人"</item>
+ <item msgid="2037298830718732608">"高尔夫"</item>
+ <item msgid="2197835014443491074">"健身房哑铃"</item>
+ <item msgid="2730180105015616518">"游泳"</item>
+ <item msgid="2666922823253345958">"远足的人"</item>
+ <item msgid="8234880356472211396">"投球的人"</item>
+ <item msgid="4642980625253001443">"用脚踢的人"</item>
+ <item msgid="4324795269518833500">"游戏控制器"</item>
+ <item msgid="7789966425125441125">"艺术家调色板"</item>
+ <item msgid="663512680597461570">"雪花"</item>
+ <item msgid="7952183800501346803">"沙滩伞"</item>
+ <item msgid="799139025758265891">"工作坊工具"</item>
+ <item msgid="8112685757657659269">"钢琴"</item>
+ <item msgid="3861584909935022342">"电影胶片"</item>
+ <item msgid="5827426100157335512">"图书"</item>
+ <item msgid="8585828346253128384">"莲花"</item>
+ <item msgid="8788370542815300188">"人的思想"</item>
+ <item msgid="7287354964767553293">"头戴式耳机"</item>
+ <item msgid="2530059623783800987">"电视"</item>
+ <item msgid="5307182323469376758">"火车"</item>
+ <item msgid="4903790544026923026">"汽车"</item>
+ <item msgid="5010405583912314582">"刀叉"</item>
+ <item msgid="8939998598599064900">"购物车"</item>
+ <item msgid="3379605903308731893">"儿童"</item>
+ <item msgid="7808668968550293112">"动物爪子"</item>
+ <item msgid="1000692647524056504">"星形徽章"</item>
+ <item msgid="8270261073421676502">"两个人"</item>
+ <item msgid="5767782819651505460">"星星"</item>
+ <item msgid="4368451291862729334">"心形"</item>
+ <item msgid="2613199102208419986">"房屋"</item>
+ <item msgid="3022279986430275040">"半月"</item>
+ <item msgid="5421089790869483206">"时钟"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index eba689b..8364b56 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"与新设备配对"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"蓝牙"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"明天自动开启"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"如果您关闭蓝牙,它会在第二天重新开启"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"为右耳进行配对"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"为左耳进行配对"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"为另一个耳朵进行配对"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"停用蓝牙 LE 音频"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"如果设备支持 LE 音频硬件功能,则停用蓝牙 LE 音频功能。"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"蓝牙 LE 音频模式"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"启用蓝牙 LE 音频广播界面预览"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"启用 LE 音频分享界面预览,包括个人音频分享和私人广播"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"在“设备详细信息”中显示 LE 音频切换开关"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"绕过蓝牙 LE 音频许可名单"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"默认使用 LE 音频,即使 LE 音频外围设备尚未通过旨在确保满足许可名单条件的验证,也是如此。"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"使用您的网络和无线信号自动设定"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"自动确定时区"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"根据您附近的移动网络自动设定"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"根据设备位置信息(如果可用)自动设定"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"使用默认语言区域"</string>
<string name="date_time_24hour" msgid="286679379105653406">"使用 24 小时制"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"时间"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"移开手指,然后再次触摸传感器"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"无法使用指纹传感器"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"请联系维修服务提供商。"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"屏幕关闭时使用指纹解锁功能"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"即使屏幕处于关闭状态,也能使用指纹解锁功能"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"屏幕关闭, 解锁"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"更多安全设置"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"工作资料锁定、加密等"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"加密、凭据等"</string>
@@ -623,7 +628,7 @@
<string name="private_space_cancel_label" msgid="379259667396956886">"取消"</string>
<string name="private_space_setup_button_label" msgid="2094882154623560585">"设置"</string>
<string name="private_space_setup_title" msgid="2272968244329821450">"私密空间"</string>
- <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"在独立空间中隐藏或锁定专用应用。使用专属 Google 账号来提高安全性。"</string>
+ <string name="private_space_hide_apps_summary" msgid="4418722947376042418">"将私密应用放在可以隐藏或锁定的独立空间中。使用专属 Google 账号来提高安全性。"</string>
<string name="private_space_setup_sub_header" msgid="550476876393954356">"运作方式"</string>
<string name="private_space_separate_account_text" msgid="790319706810190320"><b>"为您的私密空间创建一个 Google 账号"</b>\n"使用专用账号有助于防止已同步的文件、照片和电子邮件出现在您的私密空间之外"</string>
<string name="private_space_protected_lock_text" msgid="9123250938334372735"><b>"设置锁定方式"</b>\n"锁定您的空间,防止其他人打开该空间"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"键盘会忽略快速重复按下同一按键的操作"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"防抖键阈值"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"选择键盘忽略重复按键操作的时长"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 秒"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 秒"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 秒"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 秒"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 秒"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 秒"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"自定义"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"自定义值"</string>
<string name="slow_keys" msgid="2891452895499690837">"慢速键"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"调整启用按键操作所需的时长"</string>
<string name="sticky_keys" msgid="7317317044898161747">"粘滞键"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"只需一次按下一个键即可执行快捷操作,而不用同时按住多个键"</string>
<string name="mouse_keys" msgid="6237254627808525540">"鼠标键"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"使用鼠标键"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"使用键盘来控制指针"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"鼠标反向滚动"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"向上滚动可使页面内容向下移动"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"切换左键和右键"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"将鼠标左键用作右键"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"“<xliff:g id="KEYBOARD_NAME">%s</xliff:g>”的鼠标键"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"按 <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> 键表示移动鼠标指针"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"按 <xliff:g id="CLICK_LABEL">%s</xliff:g> 键表示点击鼠标主键"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"按 <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> 键表示按住鼠标主键"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"按 <xliff:g id="RELEASE_LABEL">%s</xliff:g> 键表示释放鼠标主键"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"按 <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> 键可切换滚动模式,这样按 <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> 键就会将视图向上、向下、向左或向右滚动"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"按 <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> 键表示点击鼠标辅助键"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"键盘快捷键"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"显示快捷键列表"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"工作资料键盘和工具"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"为<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>选择新的辅助键:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"实体键盘无障碍功能"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"粘滞键、防抖键、鼠标键"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"重复输入按键字符"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"开始重复输入前的延迟时间"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"重复速率"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"按住某个按键即重复输入其对应的字符,直到松开该按键为止"</string>
<string name="ime_label_title" msgid="8994569521516807168">"“<xliff:g id="IME_LABEL">%s</xliff:g>”布局"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"默认"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"自动选择的布局:<xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2207,7 +2218,7 @@
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"音量键快捷方式"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="5529704884360240365">"“点按三次”快捷手势"</string>
<string name="accessibility_tutorial_dialog_title_two_finger_double" msgid="5749704453829390283">"“%1$d 指点按两次”快捷手势"</string>
- <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"快捷设置快捷键"</string>
+ <string name="accessibility_tutorial_dialog_title_quick_setting" msgid="2905083277641794558">"快捷设置快捷方式"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"无障碍功能启动快捷手势"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"使用无障碍功能启动手势"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"若要使用此功能,请点按屏幕底部的“无障碍”按钮 <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>。\n\n若要在多项功能间切换,请轻触并按住“无障碍”按钮。"</string>
@@ -2366,7 +2377,7 @@
<string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"详细了解颜色反转"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"显示字幕"</string>
<string name="accessibility_captioning_primary_switch_summary" msgid="2544094070306830218">"仅限支持的应用"</string>
- <string name="captioning_appearance_title" msgid="3128792092290011408">"字幕的字号及样式"</string>
+ <string name="captioning_appearance_title" msgid="3128792092290011408">"字幕文字大小和样式"</string>
<string name="captioning_appearance_summary" msgid="4620682807315588019">"文字大小:<xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g>"</string>
<string name="captioning_more_options_title" msgid="3484496882942539652">"更多选项"</string>
<string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"自定义字幕的字号及样式,使其更易于阅读"</string>
@@ -2417,7 +2428,7 @@
<string name="enable_quick_setting" msgid="6648073323202243604">"在“快捷设置”中显示"</string>
<string name="daltonizer_mode_deuteranomaly_title" msgid="3229433065035047931">"红绿色盲、绿色弱"</string>
<string name="daltonizer_mode_protanomaly_title" msgid="2572040492905945405">"红绿色盲、红色弱"</string>
- <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"蓝黄不分"</string>
+ <string name="daltonizer_mode_tritanomaly_title" msgid="2278786218762602022">"蓝黄色盲"</string>
<string name="daltonizer_mode_grayscale_title" msgid="152005391387952588">"灰度模式"</string>
<string name="daltonizer_saturation_title" msgid="2999486412114963068">"强度"</string>
<string name="daltonizer_saturation_unavailable_summary" msgid="8319753055567798775">"在灰度模式下或“色彩校正”功能已停用时不可用"</string>
@@ -2455,7 +2466,7 @@
<string name="captioning_edge_color" msgid="6035818279902597518">"边缘颜色"</string>
<string name="captioning_edge_type" msgid="5281259280060811506">"边缘类型"</string>
<string name="captioning_typeface" msgid="285325623518361407">"字体系列"</string>
- <string name="captioning_preview_text" msgid="4973475065545995704">"字幕外观示例"</string>
+ <string name="captioning_preview_text" msgid="4973475065545995704">"字幕呈现效果示例"</string>
<string name="captioning_preview_characters" msgid="7854812443613580460">"Aa"</string>
<string name="locale_default" msgid="8948077172250925164">"默认"</string>
<string name="color_title" msgid="2511586788643787427">"颜色"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"省电提示"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"包含的软件包"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"应用正常运行中"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"建议更换电池"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"电池容量和充电性能下降,建议更换电池。"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"电池电量低"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"开启省电模式可延长电池续航时间"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"延长电池续航时间"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"要断开与此 VPN 的连接吗?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"断开连接"</string>
<string name="vpn_version" msgid="6344167191984400976">"版本"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g> 版"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"取消保存 VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"要替换现有 VPN 吗?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"要设置始终开启的 VPN 吗?"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"“工作日上午 9 点到下午 5 点”"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"日历活动"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{已启用“{mode_1}”模式}=2{已启用“{mode_1}”和“{mode_2}”模式}=3{已启用“{mode_1}”“{mode_2}”和“{mode_3}”模式}other{已启用“{mode_1}”“{mode_2}”以及另外 # 个模式}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{1 个模式可以自动开启}other{# 个模式可以自动开启}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{勿扰}=1{{mode_1}}=2{{mode_1}、{mode_2}}other{{mode_1}、{mode_2}、{mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"已启用"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"未设置"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"已停用"</string>
@@ -3689,13 +3701,13 @@
<string name="nls_feature_reply_summary" msgid="4492543411395565556">"该应用可以回复消息和触发通知中的按钮,包括暂停或关闭通知、接听来电。"</string>
<string name="nls_feature_settings_title" msgid="8208164329853194414">"更改设置"</string>
<string name="nls_feature_settings_summary" msgid="3770028705648985689">"该应用可以开启或关闭“勿扰”模式,并可以更改相关设置。"</string>
- <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"此功能可以管理和启用“模式”,以及更改相关设置。"</string>
+ <string name="nls_feature_modes_settings_summary" msgid="70022458305195595">"该应用可以管理和启用“模式”,以及更改相关设置。"</string>
<string name="notification_listener_disable_warning_summary" msgid="8373396293802088961">"如果您停用<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>的通知使用权,勿扰模式的使用权可能也会遭到停用。"</string>
<string name="notification_listener_disable_modes_warning_summary" msgid="7528432011433844158">"如果您停用<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>的通知访问权限,“模式访问权限”可能会一并停用。"</string>
<string name="notification_listener_disable_warning_confirm" msgid="841492108402184976">"关闭"</string>
<string name="notification_listener_disable_warning_cancel" msgid="8802784105045594324">"取消"</string>
<string name="notif_type_ongoing" msgid="135675014223627555">"实时"</string>
- <string name="notif_type_ongoing_summary" msgid="2348867528527573574">"来自以下来源的实时通信内容:正在使用的应用、导航、通话等"</string>
+ <string name="notif_type_ongoing_summary" msgid="2348867528527573574">"正在使用的应用、导航、通话等的实时通信内容"</string>
<string name="notif_type_conversation" msgid="4383931408641374979">"对话"</string>
<string name="notif_type_conversation_summary" msgid="179142405410217101">"短信和其他通信内容"</string>
<string name="notif_type_alerting" msgid="4713073696855718576">"通知"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"如果您在短时间内收到很多通知,设备音量和提醒次数会逐渐降低,最长持续 2 分钟。电话、闹钟和优先对话不受影响。\n\n您可以从屏幕顶部向下拉,查看音量渐降期间收到的通知。"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"应用于工作资料"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"应用于工作资料应用"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR 助手服务"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"没有任何已安装的应用请求以 VR 助手服务的形式运行。"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"允许<xliff:g id="SERVICE">%1$s</xliff:g>访问 VR 服务吗?"</string>
@@ -3809,7 +3831,7 @@
<string name="zen_mode_schedule_rule_days" msgid="8633770815307716351">"星期几"</string>
<string name="zen_mode_schedule_rule_days_none" msgid="5636604196262227070">"无"</string>
<string name="zen_mode_schedule_alarm_title" msgid="305237266064819345">"闹钟设置优先于结束时间设置"</string>
- <string name="zen_mode_schedule_alarm_summary" msgid="9162760856136645133">"时间表会在闹钟响铃后关闭"</string>
+ <string name="zen_mode_schedule_alarm_summary" msgid="9162760856136645133">"时间表会在闹钟响起时关闭"</string>
<string name="zen_mode_custom_behavior_title" msgid="92525364576358085">"勿扰模式行为"</string>
<string name="zen_mode_custom_behavior_summary_default" msgid="3259312823717839148">"使用默认设置"</string>
<string name="zen_mode_custom_behavior_summary" msgid="5390522750884328843">"为此时间表创建自定义设置"</string>
@@ -5382,7 +5404,7 @@
<string name="audio_sharing_share_dialog_title" msgid="427514648577553621">"分享您的音频"</string>
<string name="audio_sharing_share_dialog_subtitle" msgid="5208582843732057871">"“<xliff:g id="DEVICE_NAME1">%1$s</xliff:g>”和“<xliff:g id="DEVICE_NAME2">%2$s</xliff:g>”"</string>
<string name="audio_sharing_share_button_label" msgid="3895900668317105537">"分享音频"</string>
- <string name="audio_sharing_no_thanks_button_label" msgid="5822491984114744357">"不了,谢谢"</string>
+ <string name="audio_sharing_no_thanks_button_label" msgid="5822491984114744357">"不用了"</string>
<string name="audio_sharing_share_with_dialog_title" msgid="3934377530640830364">"与“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”分享音频?"</string>
<string name="audio_sharing_share_with_more_dialog_title" msgid="2840069088858232267">"与其他设备分享音频"</string>
<string name="audio_sharing_share_with_button_label" msgid="4146194430380237357">"与“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”分享"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"收听音频流"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"扫描音频流二维码即可通过“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”收听"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"分享期间无法修改密码。若要更改密码,请先关闭“音频分享”功能。"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"您的密码必须包含 4-16 个字符,并且只能使用字母、数字和符号"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"二维码扫描器"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"需要帮助?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"在设置中搜索"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"仅限设备"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"新联系人不会与账号同步"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"默认情况下,系统会将联系人保存到您的设备并同步到您的账号"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"未设置默认账号"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"设置默认账号时出错"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"未设置默认账号"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"仅限设备"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"添加账号即可开始"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"圈定即搜"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"轻触并按住主屏幕按钮或导航手柄,即可使用屏幕上的内容进行搜索。"</string>
</resources>
diff --git a/res/values-zh-rHK/arrays.xml b/res/values-zh-rHK/arrays.xml
index 8d38182..190589a 100644
--- a/res/values-zh-rHK/arrays.xml
+++ b/res/values-zh-rHK/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"公事包"</item>
+ <item msgid="184985872234062767">"古典建築"</item>
+ <item msgid="9189550412466785530">"住宅建築"</item>
+ <item msgid="2142527562511049422">"對話氣泡"</item>
+ <item msgid="2548100558260478605">"一群人"</item>
+ <item msgid="2270003903304578284">"燈膽"</item>
+ <item msgid="4793496619091161864">"日曆"</item>
+ <item msgid="5673625795644364100">"請勿騷擾"</item>
+ <item msgid="1423820834865831361">"跑步的人"</item>
+ <item msgid="2037298830718732608">"高爾夫球"</item>
+ <item msgid="2197835014443491074">"健身啞鈴"</item>
+ <item msgid="2730180105015616518">"游泳"</item>
+ <item msgid="2666922823253345958">"遠足的人"</item>
+ <item msgid="8234880356472211396">"擲球的人"</item>
+ <item msgid="4642980625253001443">"踢腿的人"</item>
+ <item msgid="4324795269518833500">"遊戲控制器"</item>
+ <item msgid="7789966425125441125">"畫家的調色碟"</item>
+ <item msgid="663512680597461570">"雪花"</item>
+ <item msgid="7952183800501346803">"沙灘傘"</item>
+ <item msgid="799139025758265891">"工作坊工具"</item>
+ <item msgid="8112685757657659269">"鋼琴"</item>
+ <item msgid="3861584909935022342">"菲林卷軸"</item>
+ <item msgid="5827426100157335512">"書籍"</item>
+ <item msgid="8585828346253128384">"蓮花"</item>
+ <item msgid="8788370542815300188">"人的頭腦"</item>
+ <item msgid="7287354964767553293">"耳機"</item>
+ <item msgid="2530059623783800987">"電視"</item>
+ <item msgid="5307182323469376758">"火車"</item>
+ <item msgid="4903790544026923026">"汽車"</item>
+ <item msgid="5010405583912314582">"刀叉"</item>
+ <item msgid="8939998598599064900">"購物車"</item>
+ <item msgid="3379605903308731893">"小孩子"</item>
+ <item msgid="7808668968550293112">"動物爪子"</item>
+ <item msgid="1000692647524056504">"星號徽章"</item>
+ <item msgid="8270261073421676502">"兩個人"</item>
+ <item msgid="5767782819651505460">"星形"</item>
+ <item msgid="4368451291862729334">"心"</item>
+ <item msgid="2613199102208419986">"屋"</item>
+ <item msgid="3022279986430275040">"半月"</item>
+ <item msgid="5421089790869483206">"時鐘"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index bd046f3..b72ab90 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"配對新裝置"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"藍牙"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"明天自動開啟"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"如果關閉藍牙,隔天會再次開啟"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"配對右耳"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"配對左耳"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"配對另一耳的裝置"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"停用藍牙 LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"如果裝置支援 LE Audio 硬件功能,則停用藍牙 LE Audio 功能。"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"藍牙 LE Audio 模式"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"啟用藍牙 LE Audio 廣播使用者介面預覽"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"啟用藍牙 LE Audio 廣播使用者介面預覽,包括個人音訊分享功能和私人廣播"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"在「裝置詳情」中顯示 LE Audio 切換按鈕"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"繞過藍牙 LE Audio 許可名單"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"即使 LE Audio 周邊裝置未通過符合許可清單條件的驗證,系統仍會預設使用 LE Audio。"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"使用網絡和無線訊號自動設定"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"自動設定時區"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"根據你附近的流動網絡自動設定"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"使用裝置位置 (如已開啟) 自動設定"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"使用地區設定預設值"</string>
<string name="date_time_24hour" msgid="286679379105653406">"使用 24 小時格式"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"時間"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"提起手指,然後再次輕觸感應器"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"無法使用指紋感應器"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"請諮詢維修服務供應商。"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"螢幕關閉指紋解鎖"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"即使螢幕關閉,仍使用「指紋解鎖」"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"螢幕關閉、解鎖"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"更多安全性設定"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"工作設定檔鎖定、加密等"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"加密、憑證等"</string>
@@ -1946,23 +1951,33 @@
<string name="keyboard_options_category" msgid="8040137073401152608">"選項"</string>
<string name="keyboard_a11y_category" msgid="8230758278046841469">"無障礙功能"</string>
<string name="physical_keyboard_title" msgid="3328134097512350958">"實體鍵盤"</string>
- <string name="bounce_keys" msgid="7419450970351743904">"篩選鍵"</string>
+ <string name="bounce_keys" msgid="7419450970351743904">"彈跳鍵"</string>
<string name="bounce_keys_summary" msgid="7418024428905737729">"鍵盤會忽略快速重覆按下同一按鍵的動作"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"彈跳鍵門檻"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"選擇鍵盤忽略重覆按鍵的時間長度"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 秒"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 秒"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 秒"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 秒"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 秒"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 秒"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"自訂"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"自訂值"</string>
<string name="slow_keys" msgid="2891452895499690837">"緩慢鍵"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"調整按鍵啟動時間"</string>
<string name="sticky_keys" msgid="7317317044898161747">"相黏鍵"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"一次按下快速鍵中的一個鍵,而非同時按住多個鍵"</string>
<string name="mouse_keys" msgid="6237254627808525540">"滑鼠按鍵"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"使用滑鼠按鍵"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"使用鍵盤控制游標"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"滑鼠反向捲動"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"向上捲動即可將頁面向下移動"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"調換左右鍵"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"將滑鼠左鍵當右鍵使用"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"「<xliff:g id="KEYBOARD_NAME">%s</xliff:g>」的滑鼠按鍵"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"使用 <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> 鍵即可移動滑鼠游標"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"使用 <xliff:g id="CLICK_LABEL">%s</xliff:g> 鍵即可按一下滑鼠主要按鍵"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"使用 <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> 鍵即可按住滑鼠主要按鍵"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"使用 <xliff:g id="RELEASE_LABEL">%s</xliff:g> 鍵即可放開滑鼠主要按鍵"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"使用 <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> 鍵即可切換捲動模式。這樣,按下 <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> 鍵便可將檢視畫面向上、向下、向左或向右捲動"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"使用 <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> 鍵即可按一下滑鼠次要按鍵"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"鍵盤快速鍵"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"顯示快速鍵清單"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"工作設定檔鍵盤與工具"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"為「<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>」選擇新的輔助鍵:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"實體鍵盤無障礙功能"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"相黏鍵、篩選鍵、滑鼠鍵"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"重複輸入按鍵"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"重複前的延遲時間"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"重複率"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"按住按鍵即可重複輸入按鍵上的字元,直到放開為止"</string>
<string name="ime_label_title" msgid="8994569521516807168">"<xliff:g id="IME_LABEL">%s</xliff:g> 版面配置"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"預設"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"自動:<xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2097,7 +2108,7 @@
<string name="usage_time_label" msgid="9105343335151559883">"使用時間"</string>
<string name="accessibility_settings" msgid="4713215774904704682">"無障礙設定"</string>
<string name="accessibility_settings_title" msgid="6739115703615065716">"無障礙設定"</string>
- <string name="accessibility_settings_summary" msgid="2366627644570558503">"顯示屏, 互動, 音訊"</string>
+ <string name="accessibility_settings_summary" msgid="2366627644570558503">"顯示畫面、互動、音訊"</string>
<string name="vision_settings_title" msgid="8919983801864103069">"視覺輔助設定"</string>
<string name="vision_settings_description" msgid="7614894785054441991">"你可視乎個人需要自訂此裝置,日後也可前往「設定」變更這些無障礙功能。"</string>
<string name="vision_settings_suggestion_title" msgid="4689275412658803919">"變更字型大小"</string>
@@ -2143,7 +2154,7 @@
<string name="select_to_speak_summary" msgid="1995285446766920925">"輕按畫面上的項目即可收聽系統朗讀項目"</string>
<string name="accessibility_captioning_title" msgid="4561871958958925225">"字幕偏好設定"</string>
<string name="accessibility_captioning_about_title" msgid="3542171637334191563">"關於字幕偏好設定"</string>
- <string name="accessibility_captioning_footer_learn_more_content_description" msgid="5730040700677017706">"進一步了解字幕偏好設定"</string>
+ <string name="accessibility_captioning_footer_learn_more_content_description" msgid="5730040700677017706">"進一步瞭解字幕偏好設定"</string>
<string name="accessibility_screen_magnification_title" msgid="1211169976144629087">"放大"</string>
<string name="accessibility_screen_magnification_shortcut_title" msgid="2387963646377987780">"放大捷徑"</string>
<string name="accessibility_screen_magnification_follow_typing_title" msgid="6379517513916651560">"放大輸入內容"</string>
@@ -2211,12 +2222,12 @@
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4541649734549409614">"無障礙手勢捷徑"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"使用無障礙手勢"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="8977286776192770246">"如果要用呢項功能,請㩒一下螢幕底部嘅無障礙功能按鈕 <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>。\n\n㩒住無障礙功能按鈕就可以切換唔同功能。"</string>
- <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"如果要用呢個功能,請㩒一下螢幕上面嘅無障礙功能按鈕"</string>
+ <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"如要使用此功能,請輕按畫面上的無障礙功能按鈕"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="3785791536286606664">"如果要用呢個功能,請同時㩒住 2 個音量鍵"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"如果要啟用同停用放大功能,請喺螢幕上面嘅任何一個地方㩒三下。"</string>
<string name="accessibility_tutorial_dialog_tripletap_instruction" msgid="7549293553589934">"如果要啟用同停用放大功能,請喺螢幕上面快速㩒 %1$d 下"</string>
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"如果要啟用同停用放大功能,請用 %1$d 隻手指喺螢幕上面快速㩒 2 下"</string>
- <string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{如果要用呢個功能,請由螢幕頂部向下掃,然後搵 {featureName} 圖塊。}other{如果要用呢個功能,請用 # 隻手指由螢幕頂部向下掃,然後搵 {featureName} 圖塊。}}"</string>
+ <string name="accessibility_tutorial_dialog_message_quick_setting" msgid="3715446725334547432">"{count,plural, =1{如要使用此功能,請從螢幕頂部向下輕掃,然後找出「{featureName}」圖塊。}other{如要使用此功能,請用 # 隻手指從螢幕頂部向下輕掃,然後找出「{featureName}」圖塊。}}"</string>
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw" msgid="3847728530771929959">"完成裝置設定之後就可以用呢個捷徑。"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"如果要使用呢項功能,請用兩指由螢幕底部向上掃。\n\n用兩指向上掃然後㩒住,就可以切換唔同功能。"</string>
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction" msgid="7349950768250852308">"{count,plural, =1{如果要用呢個功能,請由螢幕底部向上掃}other{如果要用呢個功能,請用 # 隻手指由螢幕底部向上掃}}"</string>
@@ -2361,7 +2372,7 @@
<string name="accessibility_daltonizer_primary_switch_title" msgid="32064721588910540">"使用色彩校正"</string>
<string name="accessibility_daltonizer_shortcut_title" msgid="7480360363995502369">"色彩校正捷徑"</string>
<string name="accessibility_daltonizer_about_title" msgid="6063650804116981287">"關於色彩校正"</string>
- <string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"進一步了解色彩校正"</string>
+ <string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"進一步瞭解色彩校正"</string>
<string name="accessibility_color_inversion_about_title" msgid="8275754480247040136">"關於色彩反轉"</string>
<string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"進一步了解色彩反轉"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"顯示字幕"</string>
@@ -2393,7 +2404,7 @@
<string name="accessibility_hearing_device_connected_title" msgid="3785140037249487287">"助聽器"</string>
<string name="accessibility_hearing_device_saved_title" msgid="7573926212664909296">"已儲存的裝置"</string>
<string name="accessibility_hearing_device_control" msgid="2661965917013100611">"助聽器控制項"</string>
- <string name="accessibility_hearing_device_shortcut_title" msgid="7645100199603031360">"助聽器快速鍵"</string>
+ <string name="accessibility_hearing_device_shortcut_title" msgid="7645100199603031360">"助聽器捷徑"</string>
<string name="accessibility_hac_mode_title" msgid="2037950424429555652">"助聽器兼容性"</string>
<string name="accessibility_hac_mode_summary" msgid="5198760061256669067">"改善 T 掣兼容性及降低噪音"</string>
<string name="accessibility_hearing_device_about_title" msgid="7883758309646288250">"關於助聽器"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"調整電力使用"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"已包含套件"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"應用程式運作正常"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"建議更換電池"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"電池容量和充電效能已降低,建議更換電池。"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"電量不足"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"開啟慳電模式可延長電池壽命"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"延長電池壽命"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"要解除連結此 VPN 嗎?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"中斷連線"</string>
<string name="vpn_version" msgid="6344167191984400976">"版本"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"版本 <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"刪除 VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"要取代目前的 VPN 嗎?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"要設定保持開啟的 VPN 嗎?"</string>
@@ -3085,7 +3097,7 @@
<string name="user_category_title" msgid="4368580529662699083">"使用者"</string>
<string name="other_user_category_title" msgid="7089976887307643217">"其他使用者"</string>
<string name="remove_guest_on_exit" msgid="8202972371459611066">"刪除訪客活動"</string>
- <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"結束訪客模式時刪除所有訪客應用程式和資料"</string>
+ <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"離開訪客模式時刪除所有訪客應用程式和資料"</string>
<string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"要刪除訪客活動嗎?"</string>
<string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"系統現在會刪除此訪客工作階段中的應用程式和資料;日後每次結束訪客模式時,系統都會刪除所有未來的訪客活動"</string>
<string name="remove_guest_on_exit_keywords" msgid="4961310523576166193">"刪除, 訪客, 活動, 移除, 資料, 訪客, 清除"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"「平日上午 9 時至下午 5 時」"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"日曆活動"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{已啟用{mode_1}}=2{已啟用{mode_1}和{mode_2}}=3{已啟用{mode_1}、{mode_2}和{mode_3}}other{已啟用{mode_1}、{mode_2}和其他 # 個模式}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{可自動啟動 1 個模式}other{可自動啟動 # 個模式}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{請勿騷擾}=1{{mode_1}}=2{{mode_1}、{mode_2}}other{{mode_1}、{mode_2}、{mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"開啟"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"未設定"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"已停用"</string>
@@ -3680,7 +3692,7 @@
<string name="no_notification_listeners" msgid="2839354157349636000">"沒有已安裝的應用程式要求通知存取權。"</string>
<string name="notification_access_detail_switch" msgid="46386786409608330">"允許存取通知"</string>
<string name="notification_assistant_security_warning_summary" msgid="4846559755787348129">"在 Android 12 中,我們將 Android 自動調整通知取代成強化通知。此功能可顯示建議操作和回覆,以及整理通知。\n\n強化通知功能可存取所有通知內容 (包括聯絡人姓名和訊息等個人資料),以及關閉或回應通知,例如接聽來電和控制「請勿騷擾」功能。"</string>
- <string name="notification_listener_security_warning_title" msgid="5791700876622858363">"要允許<xliff:g id="SERVICE">%1$s</xliff:g>存取通知嗎?"</string>
+ <string name="notification_listener_security_warning_title" msgid="5791700876622858363">"要允許「<xliff:g id="SERVICE">%1$s</xliff:g>」存取通知嗎?"</string>
<string name="notification_listener_security_warning_summary" msgid="1131986567509818121">"「<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>」應用程式將可讀取所有通知,包括聯絡人名稱、相片和你收到的訊息內容等個人資料,以及延後或關閉通知或針對通知中的按鈕採取行動,包括接聽來電。\n\n此外,該應用程式還能開啟或關閉「請勿騷擾」模式及變更相關設定。"</string>
<string name="nls_warning_prompt" msgid="1486887096703743841">"「<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>」應用程式將可執行以下操作:"</string>
<string name="nls_feature_read_title" msgid="7629713268744220437">"讀取通知"</string>
@@ -3715,6 +3727,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"當你在短時間內收到太多通知時,裝置就會調低音量並減少通知數量最多兩分鐘。通話、鬧鐘和優先對話則不受影響。\n\n要查看緩和期間收到的通知,可從螢幕頂部向下掃。"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"套用至工作設定檔"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"套用至工作設定檔應用程式"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR 助手服務"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"沒有已安裝的應用程式要求提供 VR 助手服務。"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"允許 VR 服務存取 <xliff:g id="SERVICE">%1$s</xliff:g> 嗎?"</string>
@@ -4454,7 +4476,7 @@
<string name="one_handed_mode_enabled" msgid="3396864848786359651">"使用單手模式"</string>
<string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"單手模式捷徑"</string>
<string name="keywords_one_handed" msgid="969440592493034101">"單手操控"</string>
- <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"向下滑動至"</string>
+ <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"向下滑動即可執行以下操作:"</string>
<string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"此捷徑的用途"</string>
<string name="one_handed_mode_intro_text" msgid="7921988617828924342">"將上半部螢幕畫面往下拉,方便你單手操作"</string>
<string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"如何使用單手模式"</b>\n" • 確保在系統導覽設定中選取手勢導覽\n • 在螢幕底部邊緣附近向下滑動"</string>
@@ -4835,7 +4857,7 @@
<string name="more_about_satellite_messaging" msgid="3385673133561348509">"進一步瞭解衛星訊息"</string>
<string name="satellite_warning_dialog_title" msgid="1610117852475376931">"無法開啟<xliff:g id="FUNCTION">%1$s</xliff:g>"</string>
<string name="satellite_warning_dialog_content" msgid="936419945275934955">"如要開啟<xliff:g id="FUNCTION">%1$s</xliff:g>,請先中斷衛星連線"</string>
- <string name="mobile_network_apn_title" msgid="5582995550142073054">"接入點名稱 (APN)"</string>
+ <string name="mobile_network_apn_title" msgid="5582995550142073054">"存取點名稱"</string>
<string name="keywords_access_point_names" msgid="8174967126858505945">"APN"</string>
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"無法在連接至<xliff:g id="CARRIER">%1$s</xliff:g>時使用"</string>
<string name="see_more" msgid="7499355691042812723">"查看更多"</string>
@@ -5271,7 +5293,7 @@
<string name="aspect_ratio_summary" msgid="4056406351663726494">"如果此應用程式未提供適合「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」的設計,請試用新的長寬比查看應用程式"</string>
<string name="aspect_ratio_main_summary" msgid="4141964559612756940">"如果此應用程式未提供適合「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」的設計,請試用新的長寬比查看應用程式。部分應用程式可能並未針對特定長寬比進行優化。"</string>
<string name="aspect_ratio_summary_text" msgid="4737461467467220325">"如果應用程式未提供適合「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」的設計,請試用新的長寬比查看應用程式"</string>
- <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"如果應用程式未提供適合「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」的設計,請試用新的長寬比查看應用程式。部分應用程式可能並未針對特定長寬比進行優化。"</string>
+ <string name="aspect_ratio_main_summary_text" msgid="5544816872094235840">"如果應用程式未提供適合 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 的設計,請試用新的長寬比查看應用程式。部分應用程式可能並未針對特定長寬比進行優化。"</string>
<string name="user_aspect_ratio_suggested_apps_label" msgid="8085934042329632039">"建議應用程式"</string>
<string name="user_aspect_ratio_changed_apps_label" msgid="2096614916172567672">"已變更的應用程式"</string>
<string name="user_aspect_ratio_app_default" msgid="270065763307617837">"應用程式預設"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"收聽串流"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"使用「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」掃瞄音訊串流 QR 碼即可收聽"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"分享音訊期間無法編輯密碼。如要變更密碼,請先關閉音訊分享功能。"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"密碼必須包含 4 至 16 個字元,而且只可使用字母、數字和符號"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR 碼掃瞄器"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"需要協助嗎?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"搜尋設定"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"只限裝置"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"新聯絡人不會與帳戶同步"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"根據預設,系統會將聯絡人儲存至裝置並同步至你的帳戶"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"沒有預設帳戶"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"設定預設帳戶時發生錯誤"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"沒有預設帳戶"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"只限裝置"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"新增帳戶以開始使用"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"一圈即搜"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"按住主按鈕或導覽列,就能透過畫面上的內容搜尋。"</string>
</resources>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index c4790ff..876c5d9 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"公事包"</item>
+ <item msgid="184985872234062767">"古典建築"</item>
+ <item msgid="9189550412466785530">"公寓"</item>
+ <item msgid="2142527562511049422">"對話泡泡"</item>
+ <item msgid="2548100558260478605">"一群人"</item>
+ <item msgid="2270003903304578284">"燈泡"</item>
+ <item msgid="4793496619091161864">"日曆"</item>
+ <item msgid="5673625795644364100">"零打擾"</item>
+ <item msgid="1423820834865831361">"跑步的人"</item>
+ <item msgid="2037298830718732608">"高爾夫"</item>
+ <item msgid="2197835014443491074">"健身啞鈴"</item>
+ <item msgid="2730180105015616518">"游泳"</item>
+ <item msgid="2666922823253345958">"健行的人"</item>
+ <item msgid="8234880356472211396">"丟球的人"</item>
+ <item msgid="4642980625253001443">"踢球的人"</item>
+ <item msgid="4324795269518833500">"遊戲控制器"</item>
+ <item msgid="7789966425125441125">"藝術家調色盤"</item>
+ <item msgid="663512680597461570">"雪花"</item>
+ <item msgid="7952183800501346803">"沙灘遮陽傘"</item>
+ <item msgid="799139025758265891">"工作坊工具"</item>
+ <item msgid="8112685757657659269">"鋼琴"</item>
+ <item msgid="3861584909935022342">"電影膠卷"</item>
+ <item msgid="5827426100157335512">"書籍"</item>
+ <item msgid="8585828346253128384">"蓮花"</item>
+ <item msgid="8788370542815300188">"人的思維"</item>
+ <item msgid="7287354964767553293">"耳機"</item>
+ <item msgid="2530059623783800987">"電視"</item>
+ <item msgid="5307182323469376758">"火車"</item>
+ <item msgid="4903790544026923026">"車輛"</item>
+ <item msgid="5010405583912314582">"刀叉"</item>
+ <item msgid="8939998598599064900">"購物車"</item>
+ <item msgid="3379605903308731893">"兒童"</item>
+ <item msgid="7808668968550293112">"動物爪子"</item>
+ <item msgid="1000692647524056504">"星號徽章"</item>
+ <item msgid="8270261073421676502">"兩個人"</item>
+ <item msgid="5767782819651505460">"星星"</item>
+ <item msgid="4368451291862729334">"心形"</item>
+ <item msgid="2613199102208419986">"房屋"</item>
+ <item msgid="3022279986430275040">"半月"</item>
+ <item msgid="5421089790869483206">"時鐘"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e745267..f713530 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -67,6 +67,7 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"配對新裝置"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"藍牙"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"明天自動開啟"</string>
+ <string name="bluetooth_screen_auto_on_summary" msgid="1490150818921417875">"如果關閉藍牙,隔天會再次開啟"</string>
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"配對右耳的裝置"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"配對左耳的裝置"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"配對另一耳的裝置"</string>
@@ -120,6 +121,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"停用藍牙 LE Audio"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"如果裝置支援 LE Audio 硬體功能,就停用藍牙 LE Audio 功能。"</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"藍牙 LE Audio 模式"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"啟用藍牙 LE Audio 廣播使用者介面預覽"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"啟用 LE Audio 分享使用者介面預覽,包括個人音訊分享和私人廣播"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"在「裝置詳細資料」中顯示 LE Audio 切換鈕"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"略過藍牙 LE Audio 許可清單"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"即使 LE Audio 周邊裝置未經過驗證,尚未確認符合許可清單的條件,系統仍會預設使用 LE Audio。"</string>
@@ -250,8 +253,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"使用網路和無線訊號自動設定"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"自動判定時區"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"根據附近的行動網路自動設定"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"使用裝置位置資訊自動設定 (如有)"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"使用地區設定預設值"</string>
<string name="date_time_24hour" msgid="286679379105653406">"使用 24 小時格式"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"時間"</string>
@@ -414,14 +416,14 @@
<string name="security_settings_face_watch_preference_summary" msgid="5817376447253802793">"已新增臉孔和「<xliff:g id="WATCH">%s</xliff:g>」"</string>
<string name="security_settings_fingerprint_single_face_watch_preference_summary" msgid="764951912234638192">"已新增臉孔、指紋和「<xliff:g id="WATCH">%s</xliff:g>」"</string>
<string name="security_settings_fingerprint_multiple_face_watch_preference_summary" msgid="3935500711366489380">"已新增臉孔、指紋和「<xliff:g id="WATCH">%s</xliff:g>」"</string>
- <string name="mandatory_biometrics_prompt_description" msgid="6790144699440050735">"身分驗證功能已開啟,因此必須進行生物特徵辨識"</string>
+ <string name="mandatory_biometrics_prompt_description" msgid="6790144699440050735">"身分驗證功能已開啟,因此必須進行生物辨識"</string>
<string name="go_to_settings" msgid="4394928396153474179">"前往「設定」"</string>
<string name="identity_check_lockout_error_title" msgid="7486409651908283892">"「身分驗證」已開啟,但無法驗證你的身分"</string>
- <string name="identity_check_lockout_error_description_1" msgid="4882147327291296884">"生物特徵辨識失敗次數過多,鎖定裝置再解鎖即可重試。"</string>
- <string name="identity_check_lockout_error_two_factor_auth_description_1" msgid="8369894114882274736">"生物特徵辨識失敗次數過多,請再試一次。"</string>
+ <string name="identity_check_lockout_error_description_1" msgid="4882147327291296884">"生物辨識失敗次數過多,鎖定裝置再解鎖即可重試。"</string>
+ <string name="identity_check_lockout_error_two_factor_auth_description_1" msgid="8369894114882274736">"生物辨識失敗次數過多,請再試一次。"</string>
<string name="identity_check_lockout_error_description_2" msgid="5512321457771307067">"你可以前往失竊防護設定管理「身分驗證」。前往「設定」"</string>
- <string name="identity_check_general_error_title" msgid="5073929400896102674">"必須通過生物特徵辨識驗證,才能繼續操作"</string>
- <string name="identity_check_general_error_description_1" msgid="5260846996256699095">"「身分驗證」已開啟,因此必須進行生物特徵辨識驗證,但目前無法使用臉部辨識或指紋感應器\n"<ul><li>"請確認相機已開啟,然後再試一次"</li>\n<li>"你可以使用 Google 帳戶關閉「身分驗證」"</li></ul></string>
+ <string name="identity_check_general_error_title" msgid="5073929400896102674">"必須通過生物辨識驗證,才能繼續操作"</string>
+ <string name="identity_check_general_error_description_1" msgid="5260846996256699095">"「身分驗證」已開啟,因此必須進行生物辨識驗證,但目前無法使用臉部辨識或指紋感應器\n"<ul><li>"請確認相機已開啟,然後再試一次"</li>\n<li>"你可以使用 Google 帳戶關閉「身分驗證」"</li></ul></string>
<string name="identity_check_biometric_error_cancel" msgid="3353689146211669291">"取消"</string>
<string name="identity_check_biometric_error_ok" msgid="4535306787363107304">"確定"</string>
<string name="go_to_identity_check" msgid="5215846637575231800">"開啟「身分驗證」"</string>
@@ -552,6 +554,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"移開手指,然後再次輕觸感應器"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"指紋感應器無法使用"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"請洽詢維修供應商。"</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"在螢幕關閉時用指紋解鎖"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"即使螢幕關閉,也能使用指紋解鎖"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"螢幕關閉, 解鎖"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"其他安全性設定"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"工作資料夾鎖定、加密等等"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"加密、憑證等等"</string>
@@ -1950,19 +1955,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"鍵盤會忽略快速重複按下同一按鍵的動作"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"彈回鍵門檻"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"選擇鍵盤忽略重複按下按鍵的時間長度"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2 秒"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4 秒"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6 秒"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2 秒"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4 秒"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6 秒"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"自訂"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"自訂值"</string>
<string name="slow_keys" msgid="2891452895499690837">"延遲感應鍵"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"調整按鍵啟動時間"</string>
<string name="sticky_keys" msgid="7317317044898161747">"相黏鍵"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"一次按下快速鍵中的一個按鍵,而非同時按住多個按鍵"</string>
<string name="mouse_keys" msgid="6237254627808525540">"滑鼠按鍵"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"啟用滑鼠按鍵"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"使用鍵盤控制游標"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"滑鼠反向捲動"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"向上捲動即可將頁面向下移動"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"交換左右按鍵"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"將滑鼠左鍵做為右鍵使用"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"「<xliff:g id="KEYBOARD_NAME">%s</xliff:g>」的滑鼠按鍵"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"按下 <xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> 鍵可移動滑鼠游標"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"按下 <xliff:g id="CLICK_LABEL">%s</xliff:g> 鍵代表點選滑鼠主要按鍵"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"按下 <xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> 鍵表示按住滑鼠主要按鍵"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"按下 <xliff:g id="RELEASE_LABEL">%s</xliff:g> 鍵表示放開滑鼠主要按鍵"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"按下 <xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> 鍵可切換捲動模式。這樣一來,按下 <xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> 鍵就會讓檢視畫面向上、向下、向左或向右捲動"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"按下 <xliff:g id="RELEASE_2_LABEL">%s</xliff:g> 鍵表示點選滑鼠次要按鍵"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"鍵盤快速鍵"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"顯示快速鍵清單"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"工作資料夾鍵盤和工具"</string>
@@ -2031,14 +2046,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"為「<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>」選擇新的輔助鍵:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"實體鍵盤無障礙功能"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"相黏鍵、彈回鍵、滑鼠按鍵"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"重複輸入按鍵"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"重複前延遲時間"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"重複速度"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"按住按鍵即可重複輸入按鍵上的字元,直到放開為止"</string>
<string name="ime_label_title" msgid="8994569521516807168">"「<xliff:g id="IME_LABEL">%s</xliff:g>」版面配置"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"預設"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"自動選取:<xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2570,6 +2581,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"調整電力使用"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"已包含封裝檔案"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"應用程式正常執行中"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"建議更換電池"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"電池容量和充電效能降低,建議更換電池。"</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"電池電力不足"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"開啟省電模式可延長電池續航力"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"延長電池續航力"</string>
@@ -2987,8 +3000,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"要中斷這個 VPN 連線嗎?"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"中斷連線"</string>
<string name="vpn_version" msgid="6344167191984400976">"版本"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"<xliff:g id="VERSION">%s</xliff:g> 版"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"清除 VPN 設定檔"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"要取代現有的 VPN 嗎?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"要設定永久連線 VPN 嗎?"</string>
@@ -3302,7 +3314,7 @@
<string name="keywords_payment_settings" msgid="6268791289277000043">"支付、感應支付、付款"</string>
<string name="keywords_backup" msgid="707735920706667685">"備份內容, 備份"</string>
<string name="keywords_face_unlock" msgid="545338452730885392">"人臉, 解鎖, 驗證, 登入"</string>
- <string name="keywords_biometric_unlock" msgid="8569545388717753692">"人臉, 解鎖, 驗證, 登入, 指紋, 生物特徵辨識"</string>
+ <string name="keywords_biometric_unlock" msgid="8569545388717753692">"人臉, 解鎖, 驗證, 登入, 指紋, 生物辨識"</string>
<string name="keywords_imei_info" msgid="8848791606402333514">"IMEI、MEID、MIN、PRL 版本、IMEI SV"</string>
<string name="keywords_sim_status" msgid="4221401945956122228">"網路, 行動網路狀態, 服務狀態, 訊號強度, 行動網路類型, 漫遊"</string>
<string name="keywords_sim_status_esim" msgid="3338719238556853609">"網路, 行動網路狀態, 服務狀態, 訊號強度, 行動網路類型, 漫遊, eid"</string>
@@ -3411,7 +3423,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"「平日上午 9 點 - 下午 5 點」"</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"日曆活動"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{已啟用「{mode_1}」模式}=2{已啟用「{mode_1}」和「{mode_2}」模式}=3{已啟用「{mode_1}」、「{mode_2}」和「{mode_3}」模式}other{已啟用「{mode_1}」、「{mode_2}」和另外 # 個模式}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{可自動開啟 1 個模式}other{可自動開啟 # 個模式}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{零打擾}=1{{mode_1}}=2{{mode_1}、{mode_2}}other{{mode_1}、{mode_2}、{mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"開啟"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"未設定"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"已停用"</string>
@@ -3528,7 +3540,7 @@
<string name="zen_category_apps" msgid="1167374545618451925">"應用程式"</string>
<string name="zen_category_exceptions" msgid="1316097981052752811">"鬧鐘和其他干擾"</string>
<string name="zen_category_schedule" msgid="2003707171924226212">"排程"</string>
- <string name="zen_category_duration" msgid="7515850842082631460">"從「快速設定」開啟後持續多久"</string>
+ <string name="zen_category_duration" msgid="7515850842082631460">"從「快速設定」開啟後持續時長"</string>
<string name="zen_settings_general" msgid="2704932194620124153">"一般"</string>
<string name="zen_sound_footer" msgid="4090291351903631977">"開啟「零打擾」模式時,系統會將音效和震動設為靜音 (你在上方允許的項目除外)。"</string>
<string name="zen_custom_settings_dialog_title" msgid="4613603772432720380">"自訂設定"</string>
@@ -3710,11 +3722,21 @@
<string name="notif_listener_not_migrated" msgid="6265206376374278226">"這個應用程式不支援加強型設定"</string>
<string name="notif_listener_more_settings" msgid="1348409392307208921">"更多設定"</string>
<string name="notif_listener_more_settings_desc" msgid="7995492074281663658">"應用程式內提供更多設定"</string>
- <string name="notification_polite_title" msgid="6121016426991791557">"通知緩和功能"</string>
- <string name="notification_polite_main_control_title" msgid="5812529809151927149">"使用通知緩和"</string>
- <string name="notification_polite_description" msgid="5497748284893832854">"如果短時間內收到多則通知,裝置就會降低音量並減少通知數量,持續時間最多 2 分鐘。來電、鬧鐘和重要對話則不受影響。\n\n如要在緩和期間查看通知,請從螢幕頂端往下拉。"</string>
+ <string name="notification_polite_title" msgid="6121016426991791557">"通知冷卻"</string>
+ <string name="notification_polite_main_control_title" msgid="5812529809151927149">"使用通知冷卻"</string>
+ <string name="notification_polite_description" msgid="5497748284893832854">"如果短時間內收到多則通知,裝置就會降低音量並減少通知數量,持續時間最多 2 分鐘。來電、鬧鐘和重要對話則不受影響。\n\n如要在冷卻期間查看通知,請從螢幕頂端往下拉。"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"套用至工作資料夾"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"套用到工作資料夾應用程式"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"VR 小幫手服務"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"沒有任何已安裝的應用程式要求以 VR 小幫手服務的形式執行。"</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"要允許 <xliff:g id="SERVICE">%1$s</xliff:g> 存取 VR 服務嗎?"</string>
@@ -5459,6 +5481,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"聆聽串流"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"使用「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」掃描音訊串流 QR code 即可聆聽"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"分享期間無法編輯密碼。如要變更密碼,請先關閉音訊分享功能。"</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"密碼長度必須介於 4 到 16 個半形字元之間,而且只能使用英文字母、數字和符號"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"QR code 掃描器"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"需要協助嗎?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"搜尋設定"</string>
@@ -5467,10 +5490,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"僅限裝置"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"新的聯絡人資料不會與帳戶同步"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"系統預設會將聯絡人資料儲存到裝置,並同步到你的帳戶"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"沒有預設帳戶"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"設定預設帳戶時發生錯誤"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"沒有預設帳戶"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"僅限裝置"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"如要開始使用,請新增帳戶"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"畫圈搜尋"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"按住主畫面按鈕或導覽列,就能搜尋畫面內容。"</string>
</resources>
diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml
index efb0766..c7e1289 100644
--- a/res/values-zu/arrays.xml
+++ b/res/values-zu/arrays.xml
@@ -498,7 +498,48 @@
<!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
<!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
<!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
- <!-- no translation found for zen_mode_icon_options_descriptions:20 (8112685757657659269) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="1216815120972438676">"Isikhwama"</item>
+ <item msgid="184985872234062767">"Isakhiwo sakudala"</item>
+ <item msgid="9189550412466785530">"Isakhiwo sefulethi"</item>
+ <item msgid="2142527562511049422">"Ibhamuza yenkulumo"</item>
+ <item msgid="2548100558260478605">"Iqembu labantu"</item>
+ <item msgid="2270003903304578284">"Isibani sokukhanyisa"</item>
+ <item msgid="4793496619091161864">"Ikhalenda"</item>
+ <item msgid="5673625795644364100">"Ungaphazamisi"</item>
+ <item msgid="1423820834865831361">"Umuntu ogijimayo"</item>
+ <item msgid="2037298830718732608">"Igalufu"</item>
+ <item msgid="2197835014443491074">"Izinsimbi zasejimini"</item>
+ <item msgid="2730180105015616518">"Ukubhukuda"</item>
+ <item msgid="2666922823253345958">"Umuntu ogibela intaba"</item>
+ <item msgid="8234880356472211396">"Umuntu ophonsa ibhola"</item>
+ <item msgid="4642980625253001443">"Umuntu okhahlelayo"</item>
+ <item msgid="4324795269518833500">"Isilawuli segeyimu"</item>
+ <item msgid="7789966425125441125">"Uhlu lwemifanekiso yemibala yeciko"</item>
+ <item msgid="663512680597461570">"ISnowflake"</item>
+ <item msgid="7952183800501346803">"Isambulela sasebhishi"</item>
+ <item msgid="799139025758265891">"Amathuluzi asendaweni yomsebenzi"</item>
+ <item msgid="8112685757657659269">"Iphiyano"</item>
+ <item msgid="3861584909935022342">"Ireel yefilimu"</item>
+ <item msgid="5827426100157335512">"Incwadi"</item>
+ <item msgid="8585828346253128384">"Imbali yelotus"</item>
+ <item msgid="8788370542815300188">"Ingqondo yomuntu"</item>
+ <item msgid="7287354964767553293">"Amaheadphone"</item>
+ <item msgid="2530059623783800987">"I-TV"</item>
+ <item msgid="5307182323469376758">"Isitimela"</item>
+ <item msgid="4903790544026923026">"Imoto"</item>
+ <item msgid="5010405583912314582">"Imfoloko nommese"</item>
+ <item msgid="8939998598599064900">"Ubhasikidi wokuthenga"</item>
+ <item msgid="3379605903308731893">"Ingane"</item>
+ <item msgid="7808668968550293112">"Isidladla sesilwane"</item>
+ <item msgid="1000692647524056504">"Ibheji lenkanyezi"</item>
+ <item msgid="8270261073421676502">"Abantu ababili"</item>
+ <item msgid="5767782819651505460">"Inkanyezi"</item>
+ <item msgid="4368451291862729334">"Inhliziyo"</item>
+ <item msgid="2613199102208419986">"Indlu"</item>
+ <item msgid="3022279986430275040">"Inyanga ewuhhafu"</item>
+ <item msgid="5421089790869483206">"Iwashi"</item>
+ </string-array>
<string-array name="display_over_apps_permission_change_exempt">
</string-array>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index e83798f..84672e7 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -67,6 +67,8 @@
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Bhangqa idivayisi entsha"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"i-bluetooth"</string>
<string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Vula ngokuzenzekelayo kusasa"</string>
+ <!-- no translation found for bluetooth_screen_auto_on_summary (1490150818921417875) -->
+ <skip />
<string name="bluetooth_pair_right_ear_button" msgid="3979894494803078852">"Bhangqa indlebe engakwesokudla"</string>
<string name="bluetooth_pair_left_ear_button" msgid="1019938875726073791">"Bhangqa indlebe engakwesokunxele"</string>
<string name="bluetooth_pair_other_ear_dialog_title" msgid="3814943511999984012">"Bhangqa enye indlebe yakho"</string>
@@ -120,6 +122,8 @@
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Khubaza umsindo we-Bluetooth LE"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Kukhubaza isakhi somsindo we-Bluetooth LE uma idivayisi isekela amakhono wehadiwe yomsindo we-LE."</string>
<string name="bluetooth_leaudio_mode" msgid="5206961943393400814">"Imodi Yomsindo we-Bluetooth LE"</string>
+ <string name="bluetooth_leaudio_broadcast_ui" msgid="3205637582933819543">"Nika amandla ukubuka kuqala Emsindweni weBluetooth LE Broadcast UI"</string>
+ <string name="bluetooth_leaudio_broadcast_ui_summary" msgid="3616202872693209662">"Inika amandla ukubuka kuqala Umsindo we-LE Sharing UI okuhlanganisa ukwabelana ngokuqoshiwe komuntu siqu nokusakaza okuyimfihlo"</string>
<string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Bonisa ukuguqulwa komsindo we-LE Emininingwaneni Yedivayisi"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Dlula Uhlu Lwabagunyaziwe Lomsindo we-Bluetooth LE"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Sebenzisa umsindo we-LE ngokuzenzakalela ngisho noma umsindo we-LE exhumekayo uqinisekisiwe ukuthi uyahlangabezane nomkhakha Wohlu Lwabagunyaziwe."</string>
@@ -250,8 +254,7 @@
<string name="date_time_auto_summary" msgid="8294938565417729698">"Setha ngokuzenzakalela usebenzisa inethiwekhi yakho namasignali angenantambo"</string>
<string name="zone_auto_title" msgid="3520584257065861479">"Izoni yesikhathi ezenzekelayo"</string>
<string name="zone_auto_title_summary" msgid="6540356783943375071">"Setha ngokuzenzekelayo ngokusekelwe kumanethiwekhi eselula aseduze nawe"</string>
- <!-- no translation found for auto_zone_requires_location_summary (2366567167956530124) -->
- <skip />
+ <string name="auto_zone_requires_location_summary" msgid="2366567167956530124">"Setha ngokuzenzekela usebenzisa indawo yedivayisi yakho, uma ikhona"</string>
<string name="date_time_24hour_auto" msgid="6583078135067804252">"Sebenzisa okuzenzakalelayo kwasendaweni"</string>
<string name="date_time_24hour" msgid="286679379105653406">"Sebenzisa ifomethi ye-24 amahora"</string>
<string name="date_time_set_time_title" msgid="2870083415922991906">"Isikhathi"</string>
@@ -552,6 +555,9 @@
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="2590665137265458789">"Phakamisa umunwe, bese uphinda uthinta inzwa"</string>
<string name="security_settings_fingerprint_bad_calibration_title" msgid="3073145395701953620">"Ayikwazi ukusebenzisa inzwa yesigxivizo somunwe"</string>
<string name="security_settings_fingerprint_bad_calibration" msgid="304585658839584958">"Vakashela umhlinzeki wokulungisa."</string>
+ <string name="security_settings_screen_off_unlock_udfps_title" msgid="3862344421345708607">"Ukuvula Ngesigxivizo Somunwe Isikrini Sivaliwe"</string>
+ <string name="security_settings_screen_off_unlock_udfps_description" msgid="6950375823241861147">"Sebenzisa Ukuvula Ngesigxivizo Somunwe ngisho noma isikrini sivaliwe"</string>
+ <string name="security_settings_screen_off_unlock_udfps_keywords" msgid="7550893353934831569">"Isikrini sivaliwe, Vula"</string>
<string name="security_advanced_settings" msgid="6260756619837834042">"Amasethingi wokuvikeleka amaningi"</string>
<string name="security_advanced_settings_work_profile_settings_summary" msgid="7295451997961973175">"Ukukhiya iphrofayela yomsebenzi, ukubethela, nokuningi"</string>
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Ukubethela, izimfanelo, nokuningi"</string>
@@ -1951,19 +1957,29 @@
<string name="bounce_keys_summary" msgid="7418024428905737729">"Ikhibhodi iziba ukucindezela okuphindaphindiwe okusheshayo kwenkinobho efanayo"</string>
<string name="bounce_keys_dialog_title" msgid="4088646362538368693">"Ukhawulo wokhiye abaphindwayo"</string>
<string name="bounce_keys_dialog_subtitle" msgid="5640575860258120026">"Khetha inkathi yesikhathi ikhibhodi yakho ezoziba ngaso ukucindezela kwezinkinobho okuphindaphindiwe"</string>
- <string name="bounce_keys_dialog_option_200" msgid="7876774697200082558">"0.2s"</string>
- <string name="bounce_keys_dialog_option_400" msgid="8146580138675322657">"0.4s"</string>
- <string name="bounce_keys_dialog_option_600" msgid="6166166103942612488">"0.6s"</string>
+ <string name="input_setting_keys_dialog_option_200" msgid="3121006986226247560">"0.2s"</string>
+ <string name="input_setting_keys_dialog_option_400" msgid="2634500629396699440">"0.4s"</string>
+ <string name="input_setting_keys_dialog_option_600" msgid="3828362866751805146">"0.6s"</string>
+ <string name="input_setting_keys_custom_title" msgid="670425691119253202">"Okomuntu ngamunye"</string>
+ <string name="input_setting_keys_custom_value" msgid="4455905650507193648">"inani lokomuntu ngamunye"</string>
<string name="slow_keys" msgid="2891452895499690837">"Okhiye abahamba kancane"</string>
<string name="slow_keys_summary" msgid="2914214326648535377">"Ilungisa isikhathi okusithathayo ukuze ukucindezela inkinobho kusebenze"</string>
<string name="sticky_keys" msgid="7317317044898161747">"Okhiye abanamathelayo"</string>
<string name="sticky_keys_summary" msgid="1844953803625480623">"Cindezela inkinobho eyodwa ngesikhathi ukuze uthole izinqamuleli esikhundleni sokubamba izinkinobho ndawonye"</string>
<string name="mouse_keys" msgid="6237254627808525540">"Okhiye bemouse"</string>
+ <string name="mouse_keys_main_title" msgid="3570638931365221460">"Sebenzisa okhiye bemouse"</string>
<string name="mouse_keys_summary" msgid="7030731235143286467">"Sebenzisa ikhibhodi yakho ukuze ulawule isikhombi"</string>
<string name="mouse_reverse_vertical_scrolling" msgid="154907817154779952">"Ukuskrola ngokuphendukezela igundane"</string>
<string name="mouse_reverse_vertical_scrolling_summary" msgid="3386655598642587942">"Skrola uye phezulu bese uyisa ikhasi ezansi"</string>
<string name="mouse_swap_primary_button" msgid="3028204969091057207">"Shintshanisa izinkinobho kwesokunxele nakwesokudla"</string>
<string name="mouse_swap_primary_button_summary" msgid="3276638019321067902">"Sebenzisa inkinobho yemawusi kwesokunxele njengesokudla sakho"</string>
+ <string name="mouse_key_main_page_title" msgid="8051692181770475257">"Okhiye bemouse we-<xliff:g id="KEYBOARD_NAME">%s</xliff:g>"</string>
+ <string name="mouse_keys_directional_summary" msgid="8108444346340180562">"Sebenzisa okhiye be-<xliff:g id="DIRECTIONAL_LABEL">%s</xliff:g> ukuhambisa isikhombi semouse"</string>
+ <string name="mouse_keys_click_summary" msgid="1642125742164614577">"Sebenzisa ukhiye we-<xliff:g id="CLICK_LABEL">%s</xliff:g> ukuze uchofoze inkinobho eyinhloko yemouse"</string>
+ <string name="mouse_keys_press_hold_summary" msgid="2313418505798763112">"Sebenzisa ukhiye we-<xliff:g id="PRESS_HOLD_LABEL">%s</xliff:g> ukuze ucindezele futhi ubambe inkinobho eyinhloko yemouse"</string>
+ <string name="mouse_keys_release_summary" msgid="2379239679203818720">"Sebenzisa ukhiye we-<xliff:g id="RELEASE_LABEL">%s</xliff:g> ukuze ukhulule inkinobho eyinhloko yemouse"</string>
+ <string name="mouse_keys_toggle_scroll_summary" msgid="8129249227018251990">"Sebenzisa ukhiye we-<xliff:g id="RELEASE_LABEL_1">%1$s</xliff:g> ukuze uguqule imodi yokuskrola. Lokhu kuzokwenza ukuthi okhiye be-<xliff:g id="RELEASE_LABEL_2">%2$s</xliff:g> baskrole phezulu, phansi, kwesokunxele noma kwesokudla"</string>
+ <string name="mouse_keys_release2_summary" msgid="2395196580659122185">"Sebenzisa ukhiye we-<xliff:g id="RELEASE_2_LABEL">%s</xliff:g> ukuze uchofoze inkinobho yesibili yemouse"</string>
<string name="keyboard_shortcuts_helper" msgid="2553221039203165344">"Izinqamuleli zekhibhodi"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="5979507677602559203">"Bonisa uhlu lwezinqamuleli"</string>
<string name="language_and_input_for_work_category_title" msgid="2546950919124199743">"Amakhibhodi ephrofayela yomsebenzi namathuluzi"</string>
@@ -2032,14 +2048,10 @@
<string name="modifier_keys_picker_summary" msgid="739397232249560785">"Khetha ukhiye omusha we-<xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g>:"</string>
<string name="keyboard_a11y_settings" msgid="2564659018555385728">"Ukufinyeleleka kwekhibhodi engokoqobo"</string>
<string name="keyboard_a11y_settings_summary" msgid="1698531156574098722">"Okhiye abanamathelayo, okhiye Bokubuyisela emuva, okhiye Bemawusi"</string>
- <!-- no translation found for keyboard_repeat_keys_title (6346877755243280735) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_timeout_title (3411871149974652293) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_delay_title (7323531750483922943) -->
- <skip />
- <!-- no translation found for keyboard_repeat_keys_summary (8972905345211768313) -->
- <skip />
+ <string name="keyboard_repeat_keys_title" msgid="6346877755243280735">"Phinda Okhiye"</string>
+ <string name="keyboard_repeat_keys_timeout_title" msgid="3411871149974652293">"Bambezela ngaphambi kokuphinda"</string>
+ <string name="keyboard_repeat_keys_delay_title" msgid="7323531750483922943">"Phinda Ukulinganisela"</string>
+ <string name="keyboard_repeat_keys_summary" msgid="8972905345211768313">"Bambela phansi ukhiye ukuze uphinde uhlamvu lwawo kuze kukhululwe ukhiye walo"</string>
<string name="ime_label_title" msgid="8994569521516807168">"Isakhiwo se-<xliff:g id="IME_LABEL">%s</xliff:g>"</string>
<string name="default_keyboard_layout" msgid="8690689331289452201">"Okuzenzakalelayo"</string>
<string name="automatic_keyboard_layout_label" msgid="9138088156046198913">"Okuzenzekelayo: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
@@ -2571,6 +2583,8 @@
<string name="controls_subtitle" msgid="3759606830916441564">"Lungisa amandla okusebenza"</string>
<string name="packages_subtitle" msgid="8687690644931499428">"Amaphakheji ahlanganisiwe"</string>
<string name="battery_tip_summary_title" msgid="321127485145626939">"Izinhlelo zokusebenza zisebenza ngokujwayelekile"</string>
+ <string name="battery_tip_replacement_title" msgid="3932335880485957919">"Ukushintshwa kwebhethri kuyanconywa"</string>
+ <string name="battery_tip_replacement_summary" msgid="7892640031317153349">"Umthamo webhethri kanye nokusebenza kokushaja kuncishisiwe, futhi ukubuyiselwa kwebhethri kuyanconywa."</string>
<string name="battery_tip_low_battery_title" msgid="4155239078744100997">"Ileveli yebhethri iphansi"</string>
<string name="battery_tip_low_battery_summary" msgid="2629633757244297436">"Vula Isilondolozi Sebhethri ukuze unwebe impilo yebhethri"</string>
<string name="battery_tip_smart_battery_title" msgid="8925025450214912325">"Thuthukisa impilo yebhethri"</string>
@@ -2988,8 +3002,7 @@
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Nqamula le-VPN"</string>
<string name="vpn_disconnect" msgid="7753808961085867345">"Nqamula"</string>
<string name="vpn_version" msgid="6344167191984400976">"Uhlobo"</string>
- <!-- no translation found for vpn_version_info (5717671228402924155) -->
- <skip />
+ <string name="vpn_version_info" msgid="5717671228402924155">"Uhlobo <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Khohlwa i-VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Shintshanisa i-VPN ekhona?"</string>
<string name="vpn_set_vpn_title" msgid="1667539483005810682">"Setha i-VPN ehlala ivuliwe?"</string>
@@ -3412,7 +3425,7 @@
<string name="zen_mode_select_schedule_time_example" msgid="2690518300573994725">"\"9 AM - 5 PM phakathi neviki\""</string>
<string name="zen_mode_select_schedule_calendar" msgid="8098396764270136497">"Imicimbi yekhalenda"</string>
<string name="zen_modes_summary_some_active" msgid="4780578487747956559">"{count,plural,offset:2 =0{}=1{Okuthi {mode_1} kuyasebenza}=2{Okuthi {mode_1} nokuthi {mode_2} kuyasebenza}=3{Okuthi {mode_1}, {mode_2}, nokuthi {mode_3} kuyasebenza}one{Okuthi {mode_1}, {mode_2}, kanye nokwengeziwe okungu-# kuyasebenza}other{Okuthi {mode_1}, {mode_2}, kanye nokwengeziwe okungu-# kuyasebenza}}"</string>
- <string name="zen_modes_summary_none_active" msgid="7076119084658457243">"{count,plural, =0{}=1{Imodi e-1 ingavuleka ngokuzenzakalela}one{Amamodi angu-# angavuleka ngokuzenzakalela}other{Amamodi angu-# angavuleka ngokuzenzakalela}}"</string>
+ <string name="zen_modes_summary" msgid="2576893588489258390">"{count,plural, =0{Ungaphazamisi}=1{{mode_1}}=2{{mode_1}, {mode_2}}one{{mode_1}, {mode_2}, {mode_3}}other{{mode_1}, {mode_2}, {mode_3}}}"</string>
<string name="zen_mode_active_text" msgid="5002406772481439437">"KUVULIWE"</string>
<string name="zen_mode_disabled_needs_setup" msgid="389269759040103728">"Akusethiwe"</string>
<string name="zen_mode_disabled_by_user" msgid="138592173630683253">"Kukhutshaziwe"</string>
@@ -3716,6 +3729,16 @@
<string name="notification_polite_description" msgid="5497748284893832854">"Uma uthola izaziso eziningi ngesikhathi esifushane, idivayisi yakho izokwehlisa ivolumu yayo futhi inciphise izexwayiso imizuzu engafika kwemi-2. Izingcingo, ama-alamu, nezingxoxo ezibalulekile azithinteki. \n\nIzaziso ezitholwe ngesikhathi sokupholisa zingatholwa ngokudonsela phansi usuka phezulu esikrinini."</string>
<string name="notification_polite_work" msgid="8823596456640216391">"Sebenzisa kumaphrofayela omsebenzi"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"Kusebenzise kuma-app ephrofayela yomsebenzi"</string>
+ <!-- no translation found for notification_bundle_title (460988459835922719) -->
+ <skip />
+ <!-- no translation found for notification_bundle_on (1596327200778050642) -->
+ <skip />
+ <!-- no translation found for notification_bundle_off (1550261372988157377) -->
+ <skip />
+ <!-- no translation found for notification_bundle_main_control_title (4746182488388939403) -->
+ <skip />
+ <!-- no translation found for notification_bundle_description (3896142878395333784) -->
+ <skip />
<string name="vr_listeners_title" msgid="4960357292472540964">"Amasevisi omsizi we-VR"</string>
<string name="no_vr_listeners" msgid="8442646085375949755">"Azikho izinhlelo zokusebenza ezifakiwe ezicele ukusetshenziswa njengamasevisi wesisizi se-VR."</string>
<string name="vr_listener_security_warning_title" msgid="7026351795627615177">"Vumela isevisi ye-VR ukufinyelela i-<xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -5460,6 +5483,7 @@
<string name="audio_streams_main_page_password_dialog_join_button" msgid="2967747276379153408">"Lalela ukusakaza"</string>
<string name="audio_streams_main_page_qr_code_scanner_summary" msgid="5312980105735143360">"Skena ikhodi ye-QR yokusakaza komsindo ukuze ulalele nge-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="audio_streams_main_page_password_dialog_cannot_edit" msgid="9020898619297520153">"Ayikwazi ukuhlela iphasiwedi ngenkathi yabelana. Ukuze ushintshe iphasiwedi, qala uvale ukwabelana ngokuqoshiwe."</string>
+ <string name="audio_streams_main_page_password_dialog_format_alert" msgid="4129498127640454717">"Iphasiwedi yakho kumelwe ibe nezinhlamvu ezi-4 kuya kweziyi-16 futhi kumelwe isebenzise kuphela izinhlamvu zamagama, izinombolo kanye nezimpawu"</string>
<string name="audio_streams_qr_code_scanner_label" msgid="8799703301071378034">"Iskena sekhodi ye-QR"</string>
<string name="audio_streams_qr_code_help_with_link" msgid="5542328067190486479"><annotation id="link">"Udinga usizo?"</annotation></string>
<string name="homepage_search" msgid="6759334912284663559">"Amasethingi Okusesha"</string>
@@ -5468,10 +5492,14 @@
<string name="contacts_storage_device_only_preference_label" msgid="970250816918108264">"Idivayisi kuphela"</string>
<string name="contacts_storage_device_only_preference_summary" msgid="2339782491812039153">"Oxhumana nabo abasha ngeke bavumelaniswe ne-akhawunti"</string>
<string name="contacts_storage_selection_message" msgid="8082077300632059003">"Oxhumana nabo bazolondolozwa kudivayisi yakho futhi bavumelaniswe ne-akhawunti yakho ngokuzenzakalelayo"</string>
- <string name="contacts_storage_no_account_set" msgid="1548101985417720782">"Ayikho isethi ezenzakalelayo"</string>
+ <string name="contacts_storage_set_default_account_error_message" msgid="849847649756411393">"Iphutha ekusetheni i-akhawunti ezenzekelayo"</string>
+ <string name="contacts_storage_no_account_set_summary" msgid="7454973781666475276">"Ayikho isethi ezenzekelayo"</string>
+ <string name="contacts_storage_local_account_summary" msgid="5034805108128685712">"Idivayisi kuphela"</string>
+ <!-- no translation found for contacts_storage_account_title (4939024280942927810) -->
+ <skip />
<string name="contacts_storage_first_time_add_account_message" msgid="5161093169928132323">"Faka i-akhawunti ukuze uqalise"</string>
- <!-- no translation found for search_gesture_feature_title (7037117019612710960) -->
+ <!-- no translation found for contacts_storage_account_category_title (6427149157377815586) -->
<skip />
- <!-- no translation found for search_gesture_feature_summary (1793056495030564014) -->
- <skip />
+ <string name="search_gesture_feature_title" msgid="7037117019612710960">"Khethela Ukusesha"</string>
+ <string name="search_gesture_feature_summary" msgid="1793056495030564014">"Thinta uphinde ubambe inkinobho yokubuyela ekhasini lasekhaya noma isibambi sokufuna ukuze useshe usebenzisa okuqukethwe okusesikrinini sakho."</string>
</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index ed0bce4..febdb04 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1567,7 +1567,7 @@
<item>@*android:drawable/ic_zen_mode_icon_child</item>
<item>@*android:drawable/ic_zen_mode_icon_animal_paw</item>
<!-- Generic / abstract -->
- <item>@*android:drawable/ic_zen_mode_type_unknown</item> <!-- Star badge -->
+ <item>@*android:drawable/ic_zen_mode_icon_star_badge</item>
<item>@*android:drawable/ic_zen_mode_type_managed</item> <!-- Two people / Supervisor -->
<item>@*android:drawable/ic_zen_mode_type_other</item> <!-- Star -->
<item>@*android:drawable/ic_zen_mode_icon_heart</item>
diff --git a/res/values/config.xml b/res/values/config.xml
index 09f941f..4e4c5c4 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -772,6 +772,9 @@
58.0001 29.2229,56.9551 26.8945,55.195
</string>
+ <!-- Duration in milliseconds of the udfps title/sub-title scrolling once animation. -->
+ <integer name="config_biometrics_header_scroll_duration">1000</integer>
+
<!-- Whether auto data switching on secondary SIM enables cross-SIM calling on both SIMs. -->
<bool name="config_auto_data_switch_enables_cross_sim_calling">false</bool>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 5961b95..96bbaed 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -159,6 +159,10 @@
<dimen name="sfps_enroll_finish_icon_margin_top">-24dp</dimen>
<dimen name="udfps_lottie_translate_y">0dp</dimen>
<dimen name="udfps_lottie_padding_top">20dp</dimen>
+ <dimen name="biometrics_glif_header_height">274dp</dimen>
+ <item name="biometrics_glif_header_height_ratio" format="float" type="dimen">0.27</item>
+ <!-- For showing when Display / Font size set to largest -->
+ <item name="biometrics_glif_header_height_ratio_large" format="float" type="dimen">0.37</item>
<!-- Face -->
<item name="face_preview_translate_y" format="float" type="dimen">0</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b62df60..6c79d60 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -33,9 +33,9 @@
<string name="device_info_protected_single_press">Tap to show info</string>
<!-- [CHAR LIMIT=NONE] Device Info screen. Countdown for user taps to enable development settings -->
<string name="show_dev_countdown">{count, plural,
- =1 {You are now # step away from being a developer.}
- other {You are now # steps away from being a developer.}
- }</string>
+ =1 {You are now # step away from being a developer.}
+ other {You are now # steps away from being a developer.}
+ }</string>
<!-- [CHAR LIMIT=NONE] Device Info screen. Confirmation that developer settings are enabled -->
<string name="show_dev_on">You are now a developer!</string>
<!-- [CHAR LIMIT=NONE] Device Info screen. Okay we get it, stop pressing, you already have it on -->
@@ -136,6 +136,8 @@
<string name="keywords_add_bt_device">bluetooth</string>
<!-- Title for bluetooth auto on toggle [CHAR LIMIT=60] -->
<string name="bluetooth_screen_auto_on_title">Automatically turn on tomorrow</string>
+ <!-- Summary for bluetooth auto on toggle [CHAR LIMIT=60] -->
+ <string name="bluetooth_screen_auto_on_summary">If you turn off Bluetooth, it turns on again the next day</string>
<!-- Button to help user to pair right ear of the hearing aid device. It will show when only one of the hearing aid device set is connected. [CHAR LIMIT=20] -->
@@ -260,6 +262,13 @@
<string name="bluetooth_disable_leaudio_summary">Disables Bluetooth LE audio feature if the device supports LE audio hardware capabilities.</string>
<!-- Setting toggle title for switch Bluetooth LE Audio mode. [CHAR LIMIT=40] -->
<string name="bluetooth_leaudio_mode">Bluetooth LE Audio mode</string>
+
+ <!-- Setting toggle title for enabling Bluetooth LE Audio UI preview. [CHAR LIMIT=none] -->
+ <string name="bluetooth_leaudio_broadcast_ui">Enable Bluetooth LE Audio Broadcast UI preview</string>
+ <!-- Summary of toggle for enabling Bluetooth LE Audio UI preview. [CHAR LIMIT=none]-->
+ <string name="bluetooth_leaudio_broadcast_ui_summary">Enables the LE Audio Sharing UI preview
+ including personal audio sharing and private broadcast</string>
+
<!-- Setting toggle title for enabling Bluetooth LE Audio toggle in Device Details. [CHAR LIMIT=40] -->
<string name="bluetooth_show_leaudio_device_details">Show LE audio toggle in Device Details</string>
@@ -393,6 +402,18 @@
<!-- Category for the app's locale picker activity. [CHAR LIMIT=50]-->
<string name="all_supported_app_locales_title">All languages</string>
+ <!-- Category for suggested locales. [CHAR LIMIT=50]-->
+ <string name="suggested_locales_title">Suggested</string>
+
+ <!-- Category for the locale picker. [CHAR LIMIT=50]-->
+ <string name="all_supported_locales_title">All languages</string>
+
+ <!-- Category for the locale region picker. [CHAR LIMIT=50]-->
+ <string name="all_supported_locales_regions_title">All regions</string>
+
+ <!-- Category for the numbering system of locale region picker. [CHAR LIMIT=50]-->
+ <string name="all_supported_numbering_system_title">All numbering systems</string>
+
<!-- Title for preference of the system default locale. [CHAR LIMIT=50]-->
<string name="preference_of_system_locale_title">System language</string>
@@ -441,6 +462,15 @@
<!-- The text of the confirmation dialog for saying this selected locale is unavailable to use. [CHAR LIMIT=NONE]-->
<string name="desc_unavailable_locale">This language can’t be used as a system language, but you’ve let apps and websites know you prefer this language.</string>
+ <!-- Menu item in the locale menu [CHAR LIMIT=30] -->
+ <string name="locale_search_menu">Search</string>
+ <!-- Title for the language selection screen [CHAR LIMIT=25] -->
+ <string name="language_selection_title">Add a language</string>
+ <!-- Title for the region selection screen [CHAR LIMIT=25] -->
+ <string name="country_selection_title">Region preference</string>
+ <!-- Hint text in a search edit box (used to filter long language / country lists) [CHAR LIMIT=25] -->
+ <string name="search_language_hint">Type language name</string>
+
<!-- Regional Preferences begin -->
<!-- The title of the menu entry of regional preferences. [CHAR LIMIT=50] -->
<string name="regional_preferences_title">Regional preferences</string>
@@ -502,9 +532,9 @@
<!-- The title of the confirmation dialog shown when the user selects one / several languages and tries to remove them [CHAR LIMIT=60] -->
<string name="dlg_remove_locales_title">{count, plural,
- =1 {Remove selected language?}
- other {Remove selected languages?}
- }</string>
+ =1 {Remove selected language?}
+ other {Remove selected languages?}
+ }</string>
<!-- The text of the confirmation dialog shown when the user selects several languages and tries to remove them [CHAR LIMIT=NONE] -->
<string name="dlg_remove_locales_message">Text will be displayed in another language.</string>
@@ -654,9 +684,9 @@
<string name="location_settings_summary_location_off">Off</string>
<!-- Summary for Location settings when location is on, explaining how many apps have location permission [CHAR LIMIT=NONE]-->
<string name="location_settings_summary_location_on">{count, plural,
- =1 {On / # app has access to location}
- other {On / # apps have access to location}
- }</string>
+ =1 {On / # app has access to location}
+ other {On / # apps have access to location}
+ }</string>
<!-- Location settings, loading the number of apps which have location permission [CHAR LIMIT=30] -->
<string name="location_settings_loading_app_permission_stats">Loading\u2026</string>
<!-- Location settings footer warning text when location is on [CHAR LIMIT=NONE] -->
@@ -845,9 +875,9 @@
<string name="fingerprint_add_title">Add fingerprint</string>
<!-- Message showing the current number of fingerprints set up. Shown for a menu item that launches fingerprint settings or enrollment. -->
<string name="security_settings_fingerprint_preference_summary">{count, plural,
- =1 {Fingerprint added}
- other {# fingerprints added}
- }</string>
+ =1 {Fingerprint added}
+ other {# fingerprints added}
+ }</string>
<!-- message shown in summary field when no fingerprints are registered -->
<string name="security_settings_fingerprint_preference_summary_none">Setup needed</string>
<!-- Introduction title shown in fingerprint enrollment to introduce the fingerprint feature [CHAR LIMIT=29] -->
@@ -1227,6 +1257,16 @@
<string name="security_settings_fingerprint_bad_calibration_title">Can\u2019t use fingerprint sensor</string>
<!-- Text shown during fingerprint enrollment to indicate bad sensor calibration. [CHAR LIMIT=100] -->
<string name="security_settings_fingerprint_bad_calibration">Visit a repair provider.</string>
+
+ <!-- Key for screen off udfps unlock feature. [CHAR LIMIT=NONE] -->
+ <string name="security_settings_screen_off_unlock_udfps_key" translatable="false">security_settings_screen_off_unlock_udfps</string>
+ <!-- Title for Key for screen off udfps unlock feature. [CHAR LIMIT=NONE] -->
+ <string name="security_settings_screen_off_unlock_udfps_title">Screen-off Fingerprint Unlock</string>
+ <!-- Description for screen off udfps unlock feature. [CHAR LIMIT=NONE] -->
+ <string name="security_settings_screen_off_unlock_udfps_description">Use Fingerprint Unlock even when the screen is off</string>
+ <!-- Description for screen off udfps unlock feature. [CHAR LIMIT=NONE] -->
+ <string name="security_settings_screen_off_unlock_udfps_keywords">Screen-off, Unlock</string>
+
<!-- Title for the section that has additional security settings. [CHAR LIMIT=60] -->
<string name="security_advanced_settings">More security settings</string>
<!-- String for the "More security settings" summary when a work profile is on the device. [CHAR_LIMIT=NONE] -->
@@ -1448,9 +1488,9 @@
<string name="private_space_category_hide">Hide</string>
<!-- Header on pattern confirm screen inside private space settings when separate lock set for private space [CHAR LIMIT=50] -->
<string name="private_space_confirm_your_pattern_header">Confirm your private space pattern</string>
- <!-- Header on PIN confirm screen inside private space settings when separate lock set for private space [CHAR LIMIT=50] -->
+ <!-- Header on PIN confirm screen inside private space settings when separate lock set for private space [CHAR LIMIT=50] -->
<string name="private_space_confirm_your_pin_header">Re-enter your private space PIN</string>
- <!-- Header on password confirm screen inside private space when separate lock set for private space[CHAR LIMIT=50] -->
+ <!-- Header on password confirm screen inside private space when separate lock set for private space[CHAR LIMIT=50] -->
<string name="private_space_confirm_your_password_header">Re-enter your private space password</string>
<!-- Text shown when "Add fingerprint" button is disabled -->
@@ -1686,21 +1726,21 @@
<!-- Hint shown in dialog screen when password is too short -->
<string name="lockpassword_password_too_short">{count, plural,
- =1 {Must contain at least # character}
- other {Must be at least # characters}
- }</string>
+ =1 {Must contain at least # character}
+ other {Must be at least # characters}
+ }</string>
<!-- Hint shown in dialog screen when password is too short and only using numbers. [CHAR LIMIT=NONE] -->
<string name="lockpassword_password_too_short_all_numeric">
{count, plural,
- =1 {If using only numbers, must be at least 1 digit}
- other {If using only numbers, must be at least # digits}
+ =1 {If using only numbers, must be at least 1 digit}
+ other {If using only numbers, must be at least # digits}
}
</string>
<!-- Hint shown in dialog screen when PIN is too short -->
<string name="lockpassword_pin_too_short">{count, plural,
- =1 {PIN must contain at least # digit}
- other {PIN must be at least # digits}
- }</string>
+ =1 {PIN must contain at least # digit}
+ other {PIN must be at least # digits}
+ }</string>
<!-- Hint shown in dialog screen when PIN is too short with Additional text indicating minAutoConfirmLen(eg: 6) digits PIN offer additional security -->
<string name="lockpassword_pin_too_short_autoConfirm_extra_message">{count, plural,
@@ -1710,14 +1750,14 @@
<!-- Error shown in popup when password is too long -->
<string name="lockpassword_password_too_long">{count, plural,
- =1 {Must be fewer than # character}
- other {Must be fewer than # characters}
- }</string>
+ =1 {Must be fewer than # character}
+ other {Must be fewer than # characters}
+ }</string>
<!-- Error shown in popup when PIN is too long -->
<string name="lockpassword_pin_too_long">{count, plural,
- =1 {Must be fewer than # digit}
- other {Must be fewer than # digits}
- }</string>
+ =1 {Must be fewer than # digit}
+ other {Must be fewer than # digits}
+ }</string>
<!-- Error shown when in PIN mode and PIN has been used recently. Please keep this string short! -->
<string name="lockpassword_pin_recently_used">Device admin doesn\'t allow using a recent PIN</string>
@@ -1727,45 +1767,45 @@
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of letters -->
<string name="lockpassword_password_requires_letters">{count, plural,
- =1 {Must contain at least 1 letter}
- other {Must contain at least # letters}
- }</string>
+ =1 {Must contain at least 1 letter}
+ other {Must contain at least # letters}
+ }</string>
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of lowercase letters -->
<string name="lockpassword_password_requires_lowercase">{count, plural,
- =1 {Must contain at least 1 lowercase letter}
- other {Must contain at least # lowercase letters}
- }</string>
+ =1 {Must contain at least 1 lowercase letter}
+ other {Must contain at least # lowercase letters}
+ }</string>
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of uppercase letters -->
<string name="lockpassword_password_requires_uppercase">{count, plural,
- =1 {Must contain at least 1 uppercase letter}
- other {Must contain at least # uppercase letters}
- }</string>
+ =1 {Must contain at least 1 uppercase letter}
+ other {Must contain at least # uppercase letters}
+ }</string>
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of numerical digits -->
<string name="lockpassword_password_requires_numeric">{count, plural,
- =1 {Must contain at least 1 numerical digit}
- other {Must contain at least # numerical digits}
- }</string>
+ =1 {Must contain at least 1 numerical digit}
+ other {Must contain at least # numerical digits}
+ }</string>
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of special symbols -->
<string name="lockpassword_password_requires_symbols">{count, plural,
- =1 {Must contain at least 1 special symbol}
- other {Must contain at least # special symbols}
- }</string>
+ =1 {Must contain at least 1 special symbol}
+ other {Must contain at least # special symbols}
+ }</string>
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of non-letter characters -->
<string name="lockpassword_password_requires_nonletter">{count, plural,
- =1 {Must contain at least 1 non-letter character}
- other {Must contain at least # non-letter characters}
- }</string>
+ =1 {Must contain at least 1 non-letter character}
+ other {Must contain at least # non-letter characters}
+ }</string>
<!-- Error shown when in PASSWORD mode and password doesn't contain the required number of non-numerical characters -->
<string name="lockpassword_password_requires_nonnumerical">{count, plural,
- =1 {Must contain at least 1 non-numerical character}
- other {Must contain at least # non-numerical characters}
- }</string>
+ =1 {Must contain at least 1 non-numerical character}
+ other {Must contain at least # non-numerical characters}
+ }</string>
<!-- Error shown when in PASSWORD mode and password has been used recently. Please keep this string short! -->
<string name="lockpassword_password_recently_used">Device admin doesn\'t allow using a recent
@@ -1801,9 +1841,9 @@
<!-- Summary of preference to manage device admin apps, informing the user how many device admin apps are installed and active -->
<string name="number_of_device_admins">{count, plural,
- =1 {# active app}
- other {# active apps}
- }</string>
+ =1 {# active app}
+ other {# active apps}
+ }</string>
<!-- Title of preference to manage trust agents -->
<string name="manage_trust_agents">Trust agents</string>
@@ -1816,9 +1856,9 @@
<!-- Summary of preference to manage device policies when there is trust agent-->
<string name="manage_trust_agents_summary_on">{count, plural,
- =1 {1 active trust agent}
- other {# active trust agents}
- }</string>
+ =1 {1 active trust agent}
+ other {# active trust agents}
+ }</string>
<!-- Bluetooth settings -->
<!--Used as title on second screen after selecting Bluetooth settings -->
@@ -2412,19 +2452,19 @@
<!-- Wi-Fi Advanced Settings --> <skip />
<!-- Wi-Fi settings screen, Saved networks summary. This shows below the "Saved networks" item and indicates the number of networks, not including passpoint network, a user has saved. [CHAR LIMIT=30] -->
<string name="wifi_saved_access_points_summary">{count, plural,
- =1 {1 network}
- other {# networks}
- }</string>
+ =1 {1 network}
+ other {# networks}
+ }</string>
<!-- Wi-Fi settings screen, Saved networks summary. This shows below the "Saved networks" item and indicates the number of passpoint networks a user has saved. [CHAR LIMIT=30] -->
<string name="wifi_saved_passpoint_access_points_summary">{count, plural,
- =1 {1 subscription}
- other {# subscriptions}
- }</string>
+ =1 {1 subscription}
+ other {# subscriptions}
+ }</string>
<!-- Wi-Fi settings screen, Saved networks summary. This shows below the "Saved networks" item and indicates number of whole kinds networks, if there are both normal saved networks and saved passpoint networks. The number will be at least 2, so the one case is only to prevent lint error. [CHAR LIMIT=60] -->
<string name="wifi_saved_all_access_points_summary">{count, plural,
- =1 {1 network & subscription}
- other {# networks & subscriptions}
- }</string>
+ =1 {1 network & subscription}
+ other {# networks & subscriptions}
+ }</string>
<!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's SSID. [CHAR LIMIT=20] -->
<string name="wifi_advanced_ssid_title">SSID</string>
<!-- Wi-Fi settings screen, advanced, title of the item to show the device's Wi-Fi MAC address. [CHAR LIMIT=50] -->
@@ -2850,16 +2890,12 @@
<string name="brightness">Brightness level</string>
<!-- Sound & display settings screen, setting option name to enable adaptive brightness [CHAR LIMIT=30] -->
<string name="auto_brightness_title">Adaptive brightness</string>
- <!-- Note: The content description title is only applied in adaptive brightness detailed page in setup wizard flow, to make the consistency with other accessibility suw pages. -->
- <!-- ContentDescription title for adaptive brightness detailed page footer. [CHAR LIMIT=60] -->
- <string name="auto_brightness_content_description_title">About adaptive brightness</string>
<!-- Description about the feature adaptive brightness -->
<string name="auto_brightness_description">Your screen brightness will automatically adjust to your environment and activities. You can move the slider manually to help adaptive brightness learn your preferences.</string>
<!-- Setting option summary when adaptive brightness is on [CHAR LIMIT=NONE] -->
<string name="auto_brightness_summary_on">On</string>
<!-- Setting option summary when adaptive brightness is off [CHAR LIMIT=NONE] -->
<string name="auto_brightness_summary_off">Off</string>
-
<!-- Display settings screen, display white balance settings title [CHAR LIMIT=30] -->
<string name="display_white_balance_title">Display white balance</string>
<!-- Display settings screen, display white balance settings summary [CHAR LIMIT=NONE] -->
@@ -2998,11 +3034,11 @@
<!-- Dark UI screen footer summary text shown to indicate Modes may turn on/off Dark theme automatically according to their triggers. [CHAR LIMIT=NONE] -->
<string name="dark_ui_modes_footer_summary">
{count, plural, offset:2
- =0 {Modes can also activate dark theme}
- =1 {{mode_1} also activates dark theme}
- =2 {{mode_1} and {mode_2} also activate dark theme}
- =3 {{mode_1}, {mode_2}, and {mode_3} also activate dark theme}
- other {{mode_1}, {mode_2}, and # more also activate dark theme}
+ =0 {Modes can also activate dark theme}
+ =1 {{mode_1} also activates dark theme}
+ =2 {{mode_1} and {mode_2} also activate dark theme}
+ =3 {{mode_1}, {mode_2}, and {mode_3} also activate dark theme}
+ other {{mode_1}, {mode_2}, and # more also activate dark theme}
}
</string>
<!-- Dark UI screen footer action text linking to Modes settings. [CHAR LIMIT=NONE] -->
@@ -3153,9 +3189,9 @@
<string name="wrong_pin_code_pukked">Incorrect SIM PIN code you must now contact your carrier to unlock your device.</string>
<!-- Instructions telling the user that they entered the wrong SIM PIN while trying to unlock the keyguard. Displayed in a dialog box. [CHAR LIMIT=100] -->
<string name="wrong_pin_code">{count, plural,
- =1 {Incorrect SIM PIN code, you have # remaining attempt before you must contact your carrier to unlock your device.}
- other {Incorrect SIM PIN code, you have # remaining attempts.}
- }</string>
+ =1 {Incorrect SIM PIN code, you have # remaining attempt before you must contact your carrier to unlock your device.}
+ other {Incorrect SIM PIN code, you have # remaining attempts.}
+ }</string>
<!-- This is instruction text to inform the user that they have entered the wrong SIM PIN while trying to unlock the keyguard.
The variable will be replaced with a number. [CHAR LIMIT=NONE] -->
@@ -3324,27 +3360,27 @@
<!-- Dialog body informing user about an unmountable storage device. [CHAR LIMIT=NONE]-->
<string name="storage_dialog_unmountable">This <xliff:g id="name" example="SD card">^1</xliff:g> is corrupted.
-\n\nTo use this <xliff:g id="name" example="SD card">^1</xliff:g>, you have to set it up first.</string>
+ \n\nTo use this <xliff:g id="name" example="SD card">^1</xliff:g>, you have to set it up first.</string>
<!-- Body of dialog informing user about consequences of formatting an internal storage device [CHAR LIMIT=NONE]-->
<string name="storage_internal_format_details">You can format this SD card to store photos, videos, music,
and more and access them on other devices.
\n\n<b>All data on this SD card will be erased.</b>
\n\n<b>Before formatting</b>
-\n\n<b>Back up photos & other media</b>
-\nMove your media files to alternative storage on this device, or transfer them to a computer using a USB cable.
-\n\n<b>Back up apps</b>
-\nAll apps stored on this <xliff:g id="name" example="SD card">^1</xliff:g> will be uninstalled and their data will be erased. To keep these apps, move them to alternative storage on this device.</string>
+ \n\n<b>Back up photos & other media</b>
+ \nMove your media files to alternative storage on this device, or transfer them to a computer using a USB cable.
+ \n\n<b>Back up apps</b>
+ \nAll apps stored on this <xliff:g id="name" example="SD card">^1</xliff:g> will be uninstalled and their data will be erased. To keep these apps, move them to alternative storage on this device.</string>
<!-- Body of dialog informing user about consequences of ejecting an internal storage device [CHAR LIMIT=NONE]-->
<string name="storage_internal_unmount_details"><b>When you eject this <xliff:g id="name" example="SD card">^1</xliff:g>, apps stored on it will stop working, and media files stored on it will not be available until it is reinserted.</b>
-\n\nThis <xliff:g id="name" example="SD card">^1</xliff:g> is formatted to work on this device only. It won\u2019t work on any others.</string>
+ \n\nThis <xliff:g id="name" example="SD card">^1</xliff:g> is formatted to work on this device only. It won\u2019t work on any others.</string>
<!-- Body of dialog informing user about consequences of forgetting an internal storage device [CHAR LIMIT=NONE]-->
<string name="storage_internal_forget_details">To use the apps, photos, or data this <xliff:g id="name" example="SD card">^1</xliff:g> contains, reinsert it.
-\n\nAlternatively, you can choose to forget this storage if the device isn\u2019t available.
-\n\nIf you choose to forget, all the data the device contains will be lost forever.
-\n\nYou can reinstall the apps later, but their data stored on this device will be lost.</string>
+ \n\nAlternatively, you can choose to forget this storage if the device isn\u2019t available.
+ \n\nIf you choose to forget, all the data the device contains will be lost forever.
+ \n\nYou can reinstall the apps later, but their data stored on this device will be lost.</string>
<!-- Title of dialog confirming that user wants to forget an internal storage device [CHAR LIMIT=32]-->
<string name="storage_internal_forget_confirm_title">Forget <xliff:g id="name" example="SD card">^1</xliff:g>?</string>
@@ -3378,7 +3414,7 @@
<string name="storage_wizard_move_confirm_title">Move <xliff:g id="app" example="Calculator">^1</xliff:g></string>
<!-- Body of wizard step prompting user to move an app [CHAR LIMIT=NONE] -->
<string name="storage_wizard_move_confirm_body">Moving <xliff:g id="app" example="Calculator">^1</xliff:g> and its data to <xliff:g id="name" example="SD card">^2</xliff:g> will take only a few moments. You won\u2019t be able to use the app until the move is complete.
-\n\nDon\u2019t remove the <xliff:g id="name" example="SD card">^2</xliff:g> during the move.
+ \n\nDon\u2019t remove the <xliff:g id="name" example="SD card">^2</xliff:g> during the move.
</string>
<!-- Body of lock screen challenge message explaining that the given user must be unlocked before data can be moved [CHAR LIMIT=64] -->
@@ -3388,7 +3424,7 @@
<string name="storage_wizard_move_progress_title">Moving <xliff:g id="app" example="Calculator">^1</xliff:g>\u2026</string>
<!-- Body of wizard step showing app move progress [CHAR LIMIT=NONE] -->
<string name="storage_wizard_move_progress_body">Don\u2019t remove the <xliff:g id="name" example="SD card">^1</xliff:g> during the move.
-\n\nThe <xliff:g id="app" example="Calculator">^2</xliff:g> app on this device won\u2019t be available until the move is complete.
+ \n\nThe <xliff:g id="app" example="Calculator">^2</xliff:g> app on this device won\u2019t be available until the move is complete.
</string>
<!-- This is the title of a full-screen message. After this question, the user will get to choose how they want to use the storage device that they have in their phone. The placeholder is for the specific device (e.g. SD card, USB drive, etc.). [CHAR LIMIT=32] -->
@@ -3408,7 +3444,7 @@
<string name="storage_wizard_format_confirm_v2_title">Format this <xliff:g id="name" example="SD card">^1</xliff:g>?</string>
<!-- Body of a dialog. This text is confirming that the user wants to use their SD card as extra phone storage, but the formatting process will erase existing content on the card. The first placeholder is for the name of the device (e.g. a brand name of the SD card or USB drive). The second and third placeholders are for the general references (e.g. SD card, USB drive). [CHAR LIMIT=NONE] -->
<string name="storage_wizard_format_confirm_v2_body">This <xliff:g id="name" example="SanDisk SD card">^1</xliff:g> needs to be formatted to store apps, files, and media.
-\n\nFormatting will erase existing content on the <xliff:g id="name" example="SD card">^2</xliff:g>. To avoid losing content, back it up to another <xliff:g id="name" example="SD card">^3</xliff:g> or device.</string>
+ \n\nFormatting will erase existing content on the <xliff:g id="name" example="SD card">^2</xliff:g>. To avoid losing content, back it up to another <xliff:g id="name" example="SD card">^3</xliff:g> or device.</string>
<!-- Body of a dialog. This text is confirming that the user wants to use their SD card as portable storage, but the formatting process will erase existing content on the card. The first placeholder is for the name of the device (e.g. a brand name of the SD card or USB drive). The second and third placeholders are for the general references (e.g. SD card, USB drive). [CHAR LIMIT=NONE] -->
<string name="storage_wizard_format_confirm_v2_body_external">This <xliff:g id="name" example="SanDisk SD card">^1</xliff:g> needs to be formatted to store photos, videos, music, and more.
\n\nFormatting will erase existing content on the <xliff:g id="name" example="SD card">^2</xliff:g>. To avoid losing content, back it up to another <xliff:g id="name" example="SD card">^3</xliff:g> or device.</string>
@@ -3437,8 +3473,8 @@
<string name="storage_wizard_slow_v2_title">Slow <xliff:g id="name" example="SD card">^1</xliff:g></string>
<!-- Strings that are part of a full-screen message. These strings let the user know that their storage device is slow, and include some options they can try. The first placeholder is for the name of the storage device (e.g. brand name of the SD card), and the second and third placeholders are for the general references (e.g. SD card, USB drive, etc.). [CHAR LIMIT=NONE] -->
<string name="storage_wizard_slow_v2_body">You can still use this <xliff:g id="name" example="SanDisk SD card">^1</xliff:g>, but it may be slow.
-\n\nApps stored on this <xliff:g id="name" example="SD card">^2</xliff:g> may not work properly, and content transfers could take a long time.
-\n\nTry using a faster <xliff:g id="name" example="SD card">^3</xliff:g>, or use this <xliff:g id="name" example="SD card">^4</xliff:g> for portable storage instead.</string>
+ \n\nApps stored on this <xliff:g id="name" example="SD card">^2</xliff:g> may not work properly, and content transfers could take a long time.
+ \n\nTry using a faster <xliff:g id="name" example="SD card">^3</xliff:g>, or use this <xliff:g id="name" example="SD card">^4</xliff:g> for portable storage instead.</string>
<!-- Action of a dialog. This action will start the wizard from the beginning, letting the user make an alternative choice. [CHAR LIMIT=32] -->
<string name="storage_wizard_slow_v2_start_over">Start over</string>
<!-- Action of a dialog. This action will continue the wizard, meaning the user acknowledges their card is slow. [CHAR LIMIT=32] -->
@@ -3753,9 +3789,9 @@
[CHAR LIMIT=NONE]-->
<string name="location_app_permission_summary_location_on">{count, plural,
- =1 {# of {total} apps has access to location}
- other {# of {total} apps have access to location}
- }</string>
+ =1 {# of {total} apps has access to location}
+ other {# of {total} apps have access to location}
+ }</string>
<!-- [CHAR LIMIT=50] Location settings screen, sub category for recent location access -->
<string name="location_category_recent_location_access">Recent access</string>
<!-- Location settings screen, displayed when there're more than three recent location access apps [CHAR LIMIT=30] -->
@@ -4141,9 +4177,9 @@
<string name="recent_app_category_title">Recently opened apps</string>
<!-- Preference title for showing all apps on device [CHAR_LIMIT=50]-->
<string name="see_all_apps_title">{count, plural,
- =1 {See all apps}
- other {See all # apps}
- }</string>
+ =1 {See all apps}
+ other {See all # apps}
+ }</string>
<!-- Title of the dialog that asks the user to contact the IT admin to reset password [CHAR LIMIT=40] -->
<string name="forgot_password_title">Contact your IT admin</string>
@@ -4174,9 +4210,9 @@
<string name="cache_size_label">Cache</string>
<!-- Manage applications, individual application info storage screen. Describes the number of URIs (directories or files) an app has been granted access (by another apps)-->
<string name="uri_permissions_text">{count, plural,
- =1 {1 item}
- other {# items}
- }</string>
+ =1 {1 item}
+ other {# items}
+ }</string>
<!-- Manage applications, individual application info storage screen. Button below list of URIs. -->
<string name="clear_uri_btn_text">Clear access</string>
<!-- Manage applications, Header name used for other controls -->
@@ -4229,7 +4265,7 @@
<string name="clear_activities">Clear default preferences</string>
<!-- Manage applications, individual application info screen, screen, message text under screen compatibility heading -->
<string name="screen_compatibility_text">This app may not be designed for your screen. You can control how it
- adjusts to your screen here.</string>
+ adjusts to your screen here.</string>
<!-- Manage applications, individual application screen, checkbox to control asking for compatibility mode. -->
<string name="ask_compatibility">Ask when launched</string>
<!-- Manage applications, individual application screen, checkbox to control compatibility mode. -->
@@ -4493,10 +4529,10 @@
<!-- Warning message about security implications of enabling a spell checker, displayed as a dialog
message when the user selects to enable a spell checker. -->
<string name="spellchecker_security_warning">This spell checker may be able to collect
- all the text you type, including personal data like passwords and credit
- card numbers. It comes from the app
- <xliff:g id="spellchecker_application_name">%1$s</xliff:g>.
- Use this spell checker?</string>
+ all the text you type, including personal data like passwords and credit
+ card numbers. It comes from the app
+ <xliff:g id="spellchecker_application_name">%1$s</xliff:g>.
+ Use this spell checker?</string>
<!-- Image button description for spell checker quick settings. -->
<string name="spellchecker_quick_settings">Settings</string>
<!-- Image button description for spell checker language. -->
@@ -4546,6 +4582,8 @@
<string name="sticky_keys_summary">Press one key at a time for shortcuts instead of holding keys down together</string>
<!-- Title for a toggle switch for 'mouse' keys, an accessibility setting that allows the mouse pointer to be controlled using certain keys on a physical keyboard if keyboard is connected. [CHAR LIMIT=35] -->
<string name="mouse_keys">Mouse keys</string>
+ <!-- Title for a toggle switch for 'mouse' keys under mouse key main page, an accessibility setting that allows the mouse pointer to be controlled using certain keys on a physical keyboard if keyboard is connected. [CHAR LIMIT=35] -->
+ <string name="mouse_keys_main_title">Use mouse keys</string>
<!-- Summary text for the accessibility setting 'Mouse keys' preference sub-screen. [CHAR LIMIT=100] -->
<string name="mouse_keys_summary">Use your keyboard to control the pointer</string>
<!-- Title for the 'Mouse reverse scrolling' preference switch, which reverses the direction of mouse scroll wheels so that moving the wheel up scrolls the content down. [CHAR LIMIT=60] -->
@@ -4556,6 +4594,21 @@
<string name="mouse_swap_primary_button">Swap left and right buttons</string>
<!-- Summary text for the 'Swap buttons' preference switch indicating to users that when this switch is enabled, their left click will behave as though it is the right click (secondary action) and that the right click will be the primary action. [CHAR LIMIT=NONE] -->
<string name="mouse_swap_primary_button_summary">Use the left mouse button as your right</string>
+ <!-- page title for Mouse key main page. [CHAR LIMIT=NONE] -->
+ <string name="mouse_key_main_page_title">Mouse keys for <xliff:g id="keyboard name" example="my keyboard">%s</xliff:g></string>
+ <!-- Summary text for Mouse keys directional image. [CHAR LIMIT=NONE] -->
+ <string name="mouse_keys_directional_summary">Use the \“<xliff:g id="directional_label" example="7,8,9,u,o,j,k,l">%s</xliff:g>\” keys to move the mouse pointer</string>
+ <!-- Summary text for Mouse keys click image. [CHAR LIMIT=NONE] -->
+ <string name="mouse_keys_click_summary">Use the \“<xliff:g id="click_label" example="i">%s</xliff:g>\” key to click the primary mouse button</string>
+ <!-- Summary text for Mouse keys press hold image. [CHAR LIMIT=NONE] -->
+ <string name="mouse_keys_press_hold_summary">Use the \“<xliff:g id="press_hold_label" example="m">%s</xliff:g>\” key to press & hold the primary mouse button</string>
+ <!-- Summary text for Mouse keys release image. [CHAR LIMIT=NONE] -->
+ <string name="mouse_keys_release_summary">Use the \“<xliff:g id="release_label" example=",">%s</xliff:g>\” key to release the primary mouse button</string>
+ <!-- Summary text for Mouse keys toggle scroll image. [CHAR LIMIT=NONE] -->
+ <string name="mouse_keys_toggle_scroll_summary">Use the \“<xliff:g id="release_label_1" example=".">%1$s</xliff:g>\” key to toggle scroll mode. This will make the \“<xliff:g id="release_label_2" example="8, k, o, u">%2$s</xliff:g>\” keys scroll the view top, down, left or right</string>
+ <!-- Summary text for Mouse keys click secondary button image. [CHAR LIMIT=NONE] -->
+ <string name="mouse_keys_release2_summary">Use the \“<xliff:g id="release_2_label" example="/">%s</xliff:g>\” key to click the secondary mouse button</string>
+
<!-- Title for the button to trigger the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=35] -->
<string name="keyboard_shortcuts_helper">Keyboard shortcuts</string>
<!-- Summary text for the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=100] -->
@@ -4571,6 +4624,8 @@
<string name="trackpad_settings">Touchpad</string>
<!-- Title for the button to trigger the 'trackpad settings' page if connect with a touchpad and a mouse. [CHAR LIMIT=35] -->
<string name="trackpad_mouse_settings">Touchpad & mouse</string>
+ <!-- Title for the button to trigger the 'mouse settings' page if connect with a mouse. [CHAR LIMIT=35] -->
+ <string name="mouse_settings">Mouse</string>
<!-- Summary text for the 'trackpad settings' page. [CHAR LIMIT=100] -->
<string name="trackpad_settings_summary">Pointer speed, gestures</string>
@@ -5139,18 +5194,18 @@
<string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction">To start and stop magnification, quickly tap the screen twice with %1$d fingers</string>
<!-- Instruction for the accessibility tutorial dialog in accessibility service with quick settings shortcut. [CHAR LIMIT=NONE]-->
<string name="accessibility_tutorial_dialog_message_quick_setting">{count, plural,
- =1 {To use this feature, swipe down from the top of your screen. Then, find the {featureName} tile.}
- other {To use this feature, swipe down from the top of your screen with # fingers. Then, find the {featureName} tile.}
- }</string>
+ =1 {To use this feature, swipe down from the top of your screen. Then, find the {featureName} tile.}
+ other {To use this feature, swipe down from the top of your screen with # fingers. Then, find the {featureName} tile.}
+ }</string>
<!-- Warning for the accessibility shortcut type that is not available immediately during device setup when chosen, but will be available after setup. [CHAR LIMIT=NONE]-->
<string name="accessibility_tutorial_dialog_shortcut_unavailable_in_suw">This shortcut will be available after you finish device setup.</string>
<!-- Message for the accessibility tutorial dialog when user enables an accessibility service while using gesture navigation and touch exploration is not enabled. [CHAR LIMIT=NONE] -->
<string name="accessibility_tutorial_dialog_message_gesture">To use this feature, swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold.</string>
<!-- Instruction for the accessibility tutorial dialog when user enables an accessibility service while using gesture navigation. [CHAR LIMIT=NONE] -->
<string name="accessibility_tutorial_dialog_gesture_shortcut_instruction">{count, plural,
- =1 {To use this feature, swipe up from the bottom of your screen}
- other {To use this feature, swipe up with # fingers from the bottom of your screen}
- }</string>
+ =1 {To use this feature, swipe up from the bottom of your screen}
+ other {To use this feature, swipe up with # fingers from the bottom of your screen}
+ }</string>
<!-- Message for the accessibility tutorial dialog when user enables an accessibility service while using gesture navigation and touch exploration is enabled. [CHAR LIMIT=NONE] -->
<string name="accessibility_tutorial_dialog_message_gesture_talkback">To use this feature, swipe up from the bottom of the screen with 3 fingers.\n\nTo switch between features, swipe up with 3 fingers and hold.</string>
<!-- Message for the accessibility tutorial dialog when user chooses gesture navigation in navigation settings, an accessibility service is using the accessibility button, and touch exploration is disabled. [CHAR LIMIT=NONE] -->
@@ -5183,9 +5238,9 @@
<string name="accessibility_shortcut_edit_dialog_summary_software">Tap the accessibility button <xliff:g id="accessibility_icon" example="[Icon]">%s</xliff:g> at the bottom of your screen. To switch between features, touch & hold the accessibility button.</string>
<!-- Summary for gesture shortcut option -->
<string name="accessibility_shortcut_edit_dialog_summary_gesture">{count, plural,
- =1 {Swipe up from the bottom of your screen. To switch between features, swipe up and hold.}
- other {Swipe up with # fingers from the bottom of your screen. To switch between features, swipe up with # fingers and hold.}
- }</string>
+ =1 {Swipe up from the bottom of your screen. To switch between features, swipe up and hold.}
+ other {Swipe up with # fingers from the bottom of your screen. To switch between features, swipe up with # fingers and hold.}
+ }</string>
<!-- Summary for software shortcut in accessibility edit shortcut dialog when user had enabled the accessibility floating button mode (Floating over other apps). [CHAR LIMIT=NONE] -->
<string name="accessibility_shortcut_edit_dialog_summary_software_floating"><annotation id="link">More options</annotation></string>
<!-- Footer to show help link content description. [CHAR LIMIT=NONE] -->
@@ -5194,14 +5249,14 @@
<string name="accessibility_shortcut_edit_dialog_title_quick_settings">Quick Settings</string>
<!-- Summary for quick settings shortcut option in accessibility edit shortcut dialog. [CHAR LIMIT=NONE] -->
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings">{count, plural,
- =1 {Swipe down from the top of your screen}
- other {Swipe down with # fingers from the top of your screen}
- }</string>
+ =1 {Swipe down from the top of your screen}
+ other {Swipe down with # fingers from the top of your screen}
+ }</string>
<!-- Summary for quick settings shortcut option in accessibility edit shortcut dialog in Setup Wizard. [CHAR LIMIT=NONE] -->
<string name="accessibility_shortcut_edit_dialog_summary_quick_settings_suw">{count, plural,
- =1 {Swipe down from the top of your screen. This shortcut will be available after you finish device setup.}
- other {Swipe down with # fingers from the top of your screen. This shortcut will be available after you finish device setup.}
- }</string>
+ =1 {Swipe down from the top of your screen. This shortcut will be available after you finish device setup.}
+ other {Swipe down with # fingers from the top of your screen. This shortcut will be available after you finish device setup.}
+ }</string>
<!-- Shown as one of the item in the chosen accessibility shortcut types list presented as a label next to the shortcut toggle. [CHAR LIMIT=NONE] -->
<string name="accessibility_feature_shortcut_setting_summary_quick_settings">Quick Settings</string>
<!-- Title for hardware shortcut in accessibility edit shortcut dialog. [CHAR LIMIT=NONE] -->
@@ -5621,25 +5676,25 @@
<!-- Subtitle for the accessibility preference to configure feature that performs click action soon after mouse/trackpad pointer stops moving, in case delay before click is extremely short. Placeholder will be set to the number of milliseconds to which the delay amounts. [CHAR LIMIT=NONE] -->
<string name="accessibilty_autoclick_preference_subtitle_short_delay">{count, plural,
- =1 {Short ({time} second)}
- other {Short ({time} seconds)}
- }</string>
+ =1 {Short ({time} second)}
+ other {Short ({time} seconds)}
+ }</string>
<!-- Subtitle for the accessibility preference to configure feature that performs click action soon after mouse/trackpad pointer stops moving, in case delay before click is extremely short. Placeholder will be set to the number of milliseconds to which the delay amounts. [CHAR LIMIT=NONE] -->
<string name="accessibilty_autoclick_preference_subtitle_medium_delay">{count, plural,
- =1 {Medium ({time} second)}
- other {Medium ({time} seconds)}
- }</string>
+ =1 {Medium ({time} second)}
+ other {Medium ({time} seconds)}
+ }</string>
<!-- Subtitle for the accessibility preference to configure feature that performs click action soon after mouse/trackpad pointer stops moving, in case delay before click is extremely short. Placeholder will be set to the number of milliseconds to which the delay amounts. [CHAR LIMIT=NONE] -->
<string name="accessibilty_autoclick_preference_subtitle_long_delay">{count, plural,
- =1 {Long ({time} second)}
- other {Long ({time} seconds)}
- }</string>
+ =1 {Long ({time} second)}
+ other {Long ({time} seconds)}
+ }</string>
<!-- Summary for autoclick seekbar settings preference when user selected custom item. [CHAR LIMIT=35] -->
<string name="accessibilty_autoclick_delay_unit_second">{count, plural,
- =1 {{time} second}
- other {{time} seconds}
- }</string>
+ =1 {{time} second}
+ other {{time} seconds}
+ }</string>
<!-- Title for accessibility menu item to launch a settings activity. [CHAR LIMIT=15] -->
<string name="accessibility_menu_item_settings">Settings</string>
@@ -5801,15 +5856,15 @@
<string name="print_settings_summary_no_service">Off</string>
<string name="print_settings_summary">{count, plural,
- =1 {1 print service on}
- other {# print services on}
- }</string>
+ =1 {1 print service on}
+ other {# print services on}
+ }</string>
<!-- Print setting summary in settings screenm indicating how many print jobs are active [CHAR LIMIT=None] -->
<string name="print_jobs_summary">{count, plural,
- =1 {1 print job}
- other {# print jobs}
- }</string>
+ =1 {1 print job}
+ other {# print jobs}
+ }</string>
<!-- Title for print service settings screen [CHAR LIMIT=25] -->
<string name="print_settings_title">Print services</string>
@@ -5894,7 +5949,7 @@
<string name="power_usage_summary">What has been using the battery</string>
<!-- Display the battery level and status [CHAR_LIMIT=60] -->
<string name="power_usage_level_and_status"><xliff:g id="level">%1$s</xliff:g>
- - <xliff:g id="status">%2$s</xliff:g></string>
+ - <xliff:g id="status">%2$s</xliff:g></string>
<!-- Display time remaining until battery is discharged [CHAR_LIMIT=60] -->
<string name="power_discharge_remaining"><xliff:g id="remain">%1$s</xliff:g> remaining</string>
<!-- Display time remaining until battery is charged [CHAR_LIMIT=60] -->
@@ -5978,6 +6033,10 @@
<!-- Title for the battery summary tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_summary_title">Apps are running normally</string>
+ <!-- Title for the battery replacement tip [CHAR LIMIT=NONE] -->
+ <string name="battery_tip_replacement_title">Battery replacement recommended</string>
+ <!-- Summary for the battery replacement tip [CHAR LIMIT=NONE] -->
+ <string name="battery_tip_replacement_summary">Battery capacity and charging performance are reduced, and battery replacement is recommended.</string>
<!-- Title for the low battery tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_low_battery_title">Battery level low</string>
<!-- Summary for the low battery tip [CHAR LIMIT=NONE] -->
@@ -6012,30 +6071,30 @@
<string name="battery_tip_dialog_message_footer">Includes high-power background activity</string>
<!-- Title for restricted app preference, showing how many app need to be restricted [CHAR LIMIT=NONE] -->
<string name="battery_tip_restrict_title">{count, plural,
- =1 {Restrict # app}
- other {Restrict # apps}
- }</string>
+ =1 {Restrict # app}
+ other {Restrict # apps}
+ }</string>
<!-- Title for restricted app preference, showing how many app been restricted [CHAR LIMIT=NONE] -->
<string name="battery_tip_restrict_handled_title">{count, plural,
- =1 {{label} recently restricted}
- other {# apps recently restricted}
- }</string>
+ =1 {{label} recently restricted}
+ other {# apps recently restricted}
+ }</string>
<!-- Summary for restricted app preference, showing the impact of the apps [CHAR LIMIT=NONE] -->
<string name="battery_tip_restrict_summary">{count, plural,
- =1 {{label} has high background battery usage}
- other {# apps have high background battery usage}
- }</string>
+ =1 {{label} has high background battery usage}
+ other {# apps have high background battery usage}
+ }</string>
<!-- Summary for restricted app preference, showing the impact of the apps [CHAR LIMIT=NONE] -->
<string name="battery_tip_restrict_handled_summary">{count, plural,
- =1 {This app can\'t run in the background}
- other {These apps can\'t run in the background}
- }</string>
+ =1 {This app can\'t run in the background}
+ other {These apps can\'t run in the background}
+ }</string>
<!-- Title for dialog to restrict the app [CHAR LIMIT=NONE] -->
<string name="battery_tip_restrict_app_dialog_title">{count, plural,
- =1 {Restrict app?}
- other {Restrict # apps?}
- }</string>
+ =1 {Restrict app?}
+ other {Restrict # apps?}
+ }</string>
<!-- Message for battery tip dialog to show the info to restrict the app [CHAR LIMIT=NONE] -->
<string name="battery_tip_restrict_app_dialog_message">To save battery, stop <xliff:g id="app">%1$s</xliff:g> from using battery in the background. This app may not work properly and notifications may be delayed.</string>
<!-- Message for battery tip dialog to show the info to restrict the app, below it app list will be shown as a view [CHAR LIMIT=NONE] -->
@@ -6069,9 +6128,9 @@
<string name="restricted_app_title">Restricted apps</string>
<!-- Summary for restricted app preference, clicking it will goes to restricted app list [CHAR LIMIT=NONE] -->
<string name="restricted_app_summary">{count, plural,
- =1 {Limiting battery usage for # app}
- other {Limiting battery usage for # apps}
- }</string>
+ =1 {Limiting battery usage for # app}
+ other {Limiting battery usage for # apps}
+ }</string>
<!-- Summary for restricted app to show the restriction time [CHAR LIMIT=NONE] -->
<string name="restricted_app_time_summary">Restricted <xliff:g id="time" example="5 days ago">%1$s</xliff:g></string>
@@ -6091,9 +6150,9 @@
<!-- Summary for battery manager, showing app restricted -->
<string name="battery_manager_app_restricted">{count, plural,
- =1 {# app restricted}
- other {# apps restricted}
- }</string>
+ =1 {# app restricted}
+ other {# apps restricted}
+ }</string>
<!-- Summary for top level battery tile if battery is not present. [CHAR LIMIT=NONE] -->
<string name="battery_missing_message">Problem reading the battery meter.</string>
@@ -6581,9 +6640,9 @@
<string name="remove_credential_management_app_dialog_message">This app won\u2019t manage certificates, but it will stay on your device. Any certificates installed by the app will be uninstalled.</string>
<!-- List item found in the credential management app's authentication policy [CHAR LIMIT=NONE] -->
<string name="number_of_urls">{count, plural,
- =1 {# URL}
- other {# URLs}
- }</string>
+ =1 {# URL}
+ other {# URLs}
+ }</string>
<!-- Sound settings screen, setting check box label -->
<string name="emergency_tone_title">Emergency dialing signal</string>
@@ -6685,9 +6744,9 @@
<!-- app summary of notification app list screen [CHAR LIMIT=100] -->
<string name="notification_history_count">{count, plural,
- =1 {# notification}
- other {# notifications}
- }</string>
+ =1 {# notification}
+ other {# notifications}
+ }</string>
<!-- Category title for phone call's ringtone and vibration settings in the Sound Setting.
[CHAR LIMIT=40] -->
@@ -7108,9 +7167,9 @@
<string name="done_button">Done</string>
<!-- Title of Dialog warning users of SSL monitoring. [CHAR LIMIT=NONE] -->
<string name="ssl_ca_cert_dialog_title">{count, plural,
- =1 {Trust or remove certificate}
- other {Trust or remove certificates}
- }</string>
+ =1 {Trust or remove certificate}
+ other {Trust or remove certificates}
+ }</string>
<!-- Text of message to show to device owner user whose administrator has installed a SSL CA Cert. [CHAR LIMIT=NONE] -->
<string name="ssl_ca_cert_info_message_device_owner"> {numberOfCertificates, plural,
=1 {{orgName} has installed a certificate authority on your device, which may allow them to monitor your device network activity, including emails, apps, and secure websites.\n\nFor more information about this certificate, contact your admin.}
@@ -7125,9 +7184,9 @@
<string name="ssl_ca_cert_warning_message">A third party is capable of monitoring your network activity, including emails, apps, and secure websites.\n\nA trusted credential installed on your device is making this possible.</string>
<!-- Label on button that will take the user to the Trusted Credentials settings page. [CHAR LIMIT=NONE]-->
<string name="ssl_ca_cert_settings_button">{count, plural,
- =1 {Check certificate}
- other {Check certificates}
- }</string>
+ =1 {Check certificate}
+ other {Check certificates}
+ }</string>
<!-- User settings screen title [CHAR LIMIT=40] -->
<string name="user_settings_title">Users</string>
@@ -7400,6 +7459,8 @@
<string name="help_url_battery" translatable="false"></string>
<!-- Help URL, Battery Defender [DO NOT TRANSLATE] -->
<string name="help_url_battery_defender" translatable="false"></string>
+ <!-- Help URL, Battery Replacement [DO NOT TRANSLATE] -->
+ <string name="help_url_battery_replacement" translatable="false"></string>
<!-- Help URL, Dock Defender [DO NOT TRANSLATE] -->
<string name="help_url_dock_defender" translatable="false"></string>
<!-- Help URL, Incompatible charging [DO NOT TRANSLATE] -->
@@ -8085,9 +8146,9 @@
<!-- Zen Modes: Summary for the Do not Disturb option that describes how many automatic rules (schedules) are enabled [CHAR LIMIT=NONE]-->
<string name="zen_mode_settings_schedules_summary">
{count, plural,
- =0 {None}
- =1 {1 schedule set}
- other {# schedules set}
+ =0 {None}
+ =1 {1 schedule set}
+ other {# schedules set}
}
</string>
@@ -8123,20 +8184,22 @@
<!-- Modes: Summary for the modes segment, when at least one mode is active. [CHAR LIMIT=NONE]-->
<string name="zen_modes_summary_some_active">
{count, plural, offset:2
- =0 {}
- =1 {{mode_1} is active}
- =2 {{mode_1} and {mode_2} are active}
- =3 {{mode_1}, {mode_2}, and {mode_3} are active}
- other {{mode_1}, {mode_2}, and # more are active}
+ =0 {}
+ =1 {{mode_1} is active}
+ =2 {{mode_1} and {mode_2} are active}
+ =3 {{mode_1}, {mode_2}, and {mode_3} are active}
+ other {{mode_1}, {mode_2}, and # more are active}
}
</string>
<!-- Modes: Summary for the modes segment, when no modes are active. [CHAR LIMIT=NONE]-->
- <string name="zen_modes_summary_none_active">
+ <!-- Note: The "0" option should never actually occur. -->
+ <string name="zen_modes_summary">
{count, plural,
- =0 {}
- =1 {1 mode can turn on automatically}
- other {# modes can turn on automatically}
+ =0 {Do Not Disturb}
+ =1 {{mode_1}}
+ =2 {{mode_1}, {mode_2}}
+ other {{mode_1}, {mode_2}, {mode_3}}
}
</string>
@@ -8437,25 +8500,25 @@
<!-- Do not disturb: Summary for zen mode duration setting indicating how long dnd will last when dnd is manually toggled on [CHAR LIMIT=NONE] -->
<string name="zen_mode_duration_summary_time_hours">
{count, plural,
- =1 {1 hour}
- other {# hours}
+ =1 {1 hour}
+ other {# hours}
}
</string>
<!-- Do not disturb: Summary for zen mode duration setting indicating how long dnd will last when toggled on -->
<string name="zen_mode_duration_summary_time_minutes">
{count, plural,
- =1 {1 minute}
- other {# minutes}
+ =1 {1 minute}
+ other {# minutes}
}
</string>
<!-- Summary for the Sound Do not Disturb option when DND isn't currently on. [CHAR LIMIT=NONE]-->
<string name="zen_mode_sound_summary_off">
{count, plural,
- =0 {Off}
- =1 {Off / 1 schedule can turn on automatically}
- other {Off / # schedules can turn on automatically}
+ =0 {Off}
+ =1 {Off / 1 schedule can turn on automatically}
+ other {Off / # schedules can turn on automatically}
}
</string>
@@ -8798,9 +8861,9 @@
<!-- [CHAR LIMIT=100] summary text on link to 'all conversations' page, some conversations are priority -->
<string name="priority_conversation_count">{count, plural,
- =1 {# priority conversation}
- other {# priority conversations}
- }</string>
+ =1 {# priority conversation}
+ other {# priority conversations}
+ }</string>
<!-- [CHAR LIMIT=100] preference category title -->
<string name="important_conversations">Priority conversations</string>
@@ -8897,13 +8960,13 @@
<!-- app summary of notification app list screen [CHAR LIMIT=100] -->
<string name="notifications_sent_daily">{count, plural,
- =1 {About # notification per day}
- other {About # notifications per day}
- }</string>
+ =1 {About # notification per day}
+ other {About # notifications per day}
+ }</string>
<string name="notifications_sent_weekly">{count, plural,
- =1 {About # notification per week}
- other {About # notifications per week}
- }</string>
+ =1 {About # notification per week}
+ other {About # notifications per week}
+ }</string>
<!-- app summary of notification app list screen [CHAR LIMIT=100] -->
<string name="notifications_sent_never">Never</string>
@@ -8943,7 +9006,7 @@
<!-- Title for a warning message about security implications of enabling a notification
listener, displayed as a dialog message. [CHAR LIMIT=NONE] -->
<string name="notification_listener_security_warning_title">Allow notification access for
- <xliff:g id="service" example="NotificationReader">%1$s</xliff:g>?</string>
+ <xliff:g id="service" example="NotificationReader">%1$s</xliff:g>?</string>
<!-- Summary for a warning message about security implications of enabling a notification
listener, displayed as a dialog message. [CHAR LIMIT=NONE] -->
<string name="notification_listener_security_warning_summary">
@@ -8997,6 +9060,13 @@
<string name="notification_polite_work">Apply to work profiles</string>
<string name="notification_polite_work_summary">Apply to work profile apps</string>
+ <!-- Title for Bundled Notifications setting [CHAR LIMIT=45]-->
+ <string name="notification_bundle_title">Bundled notifications</string>
+ <string name="notification_bundle_on">On</string>
+ <string name="notification_bundle_off">Off</string>
+ <string name="notification_bundle_main_control_title">Use notification bundling</string>
+ <string name="notification_bundle_description">Notifications with similar themes will be silenced and grouped together for a quieter experience. Bundling will override an app\'s own notification settings.</string>
+
<!-- Title for managing VR (virtual reality) helper services. [CHAR LIMIT=50] -->
<string name="vr_listeners_title">VR helper services</string>
@@ -9007,7 +9077,7 @@
<!-- Title for a warning message about security implications of enabling a VR
listener, displayed as a dialog message. [CHAR LIMIT=NONE] -->
<string name="vr_listener_security_warning_title">Allow VR service access for
- <xliff:g id="service" example="VrCore">%1$s</xliff:g>?</string>
+ <xliff:g id="service" example="VrCore">%1$s</xliff:g>?</string>
<!-- Summary for a warning message about security implications of enabling a VR
listener, displayed as a dialog message. [CHAR LIMIT=NONE] -->
<string name="vr_listener_security_warning_summary">
@@ -9114,9 +9184,9 @@
<!-- Summary of preference to manage connected work and personal apps, informing the user how many apps are connected -->
<string name="interact_across_profiles_number_of_connected_apps">{count, plural,
- =1 {# app connected}
- other {# apps connected}
- }</string>
+ =1 {# app connected}
+ other {# apps connected}
+ }</string>
<!-- Banner title. This banner lets a user know that they need to install an app in their
work profile in order to connect it to the corresponding personal app.
@@ -9188,9 +9258,9 @@
<!-- [CHAR LIMIT=NONE] Footer listing a count of deleted channels. -->
<string name="deleted_channels">{count, plural,
- =1 {# category deleted}
- other {# categories deleted}
- }</string>
+ =1 {# category deleted}
+ other {# categories deleted}
+ }</string>
<!-- [CHAR LIMIT=NONE] App notification settings: Block option title -->
<string name="app_notification_block_title">Block all</string>
@@ -9351,9 +9421,9 @@
<!-- [CHAR LIMIT=NONE] Zen mode settings: Number of conversations allowed to bypass DND -->
<string name="zen_mode_conversations_count">
{count, plural,
- =0 {None}
- =1 {1 conversation}
- other {# conversations}
+ =0 {None}
+ =1 {1 conversation}
+ other {# conversations}
}
</string>
@@ -9385,11 +9455,11 @@
<!-- Zen mode settings: Starred contacts summary [CHAR LIMIT=NONE] -->
<string name="zen_mode_starred_contacts_summary_contacts">
{count, plural, offset:2
- =0 {None}
- =1 {{contact_1}}
- =2 {{contact_1} and {contact_2}}
- =3 {{contact_1}, {contact_2}, and {contact_3}}
- other {{contact_1}, {contact_2}, and # others}
+ =0 {None}
+ =1 {{contact_1}}
+ =2 {{contact_1} and {contact_2}}
+ =3 {{contact_1}, {contact_2}, and {contact_3}}
+ other {{contact_1}, {contact_2}, and # others}
}
</string>
@@ -9416,9 +9486,9 @@
<!-- Zen mode settings: Senders in contacts can bypass DND summary summary [CHAR LIMIT=NONE] -->
<string name="zen_mode_contacts_count">
{count, plural,
- =0 {None}
- =1 {1 contact}
- other {# contacts}
+ =0 {None}
+ =1 {1 contact}
+ other {# contacts}
}
</string>
<!-- [CHAR LIMIT=40] Zen mode settings: Calls or messages option value: From anyone -->
@@ -9494,11 +9564,11 @@
<!-- [CHAR LIMIT=NONE] Zen mode settings: Lists apps that can bypass DND. For example, "Nest, Messages, and 2 more can interrupt". -->
<string name="zen_mode_apps_subtext">
{count, plural, offset:2
- =0 {No apps can interrupt}
- =1 {{app_1} can interrupt}
- =2 {{app_1} and {app_2} can interrupt}
- =3 {{app_1}, {app_2}, and {app_3} can interrupt}
- other {{app_1}, {app_2}, and # more can interrupt}
+ =0 {No apps can interrupt}
+ =1 {{app_1} can interrupt}
+ =2 {{app_1} and {app_2} can interrupt}
+ =3 {{app_1}, {app_2}, and {app_3} can interrupt}
+ other {{app_1}, {app_2}, and # more can interrupt}
}
</string>
<!-- Modes: Entry in the "apps that can bypass DND" list that corresponds to a work profile app (e.g. "Chrome (Work)" [CHAR LIMIT=15]. -->
@@ -9533,11 +9603,11 @@
<!-- [CHAR LIMIT=NONE] Zen mode settings: Lists apps that can bypass DND. For example, "Nest, Messages, and 2 more can interrupt". -->
<string name="zen_mode_bypassing_apps_subtext">
{count, plural, offset:2
- =0 {No apps can interrupt}
- =1 {{app_1} can interrupt}
- =2 {{app_1} and {app_2} can interrupt}
- =3 {{app_1}, {app_2}, and {app_3} can interrupt}
- other {{app_1}, {app_2}, and # more can interrupt}
+ =0 {No apps can interrupt}
+ =1 {{app_1} can interrupt}
+ =2 {{app_1} and {app_2} can interrupt}
+ =3 {{app_1}, {app_2}, and {app_3} can interrupt}
+ other {{app_1}, {app_2}, and # more can interrupt}
}
</string>
<!-- [CHAR LIMIT=100] Zen mode settings: Allow apps to bypass DND title-->
@@ -9551,11 +9621,11 @@
<!-- [CHAR LIMIT=NONE] Zen mode settings: Summary for sound interruption settings -->
<string name="zen_mode_other_sounds_summary">
{count, plural, offset:2
- =0 {Nothing can interrupt}
- =1 {{sound_category_1} can interrupt}
- =2 {{sound_category_1} and {sound_category_2} can interrupt}
- =3 {{sound_category_1}, {sound_category_2}, and {sound_category_3} can interrupt}
- other {{sound_category_1}, {sound_category_2}, and # more can interrupt}
+ =0 {Nothing can interrupt}
+ =1 {{sound_category_1} can interrupt}
+ =2 {{sound_category_1} and {sound_category_2} can interrupt}
+ =3 {{sound_category_1}, {sound_category_2}, and {sound_category_3} can interrupt}
+ other {{sound_category_1}, {sound_category_2}, and # more can interrupt}
}
</string>
<!-- [CHAR LIMIT=120] Zen mode settings: No sounds are allowed to bypass DND -->
@@ -9599,14 +9669,14 @@
<string name="zen_mode_summary_alarms_only_indefinite">Change to alarms only indefinitely</string>
<!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only for < 60 minutes. -->
<string name="zen_mode_summary_alarms_only_by_minute">{count, plural,
- =1 {Change to alarms only for one minute until {time}}
- other {Change to alarms only for # minutes (until {time})}
- }</string>
+ =1 {Change to alarms only for one minute until {time}}
+ other {Change to alarms only for # minutes (until {time})}
+ }</string>
<!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only for N hours. -->
<string name="zen_mode_summary_alarms_only_by_hour">{count, plural,
- =1 {Change to alarms only for one hour until {time}}
- other {Change to alarms only for # hours until {time}}
- }</string>
+ =1 {Change to alarms only for one hour until {time}}
+ other {Change to alarms only for # hours until {time}}
+ }</string>
<!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only until a specific time. -->
<string name="zen_mode_summary_alarms_only_by_time">Change to alarms only until <xliff:g id="formattedTime" example="10:00 PM">%1$s</xliff:g></string>
<!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: Turn on all notifications. -->
@@ -9828,13 +9898,13 @@
<!-- Title, message and button for verified links dialog. -->
<string name="app_launch_verified_links_title">{count, plural,
- =1 {# verified link}
- other {# verified links}
- }</string>
+ =1 {# verified link}
+ other {# verified links}
+ }</string>
<string name="app_launch_verified_links_message">{count, plural,
- =1 {This link is verified and automatically opens in this app.}
- other {These links are verified and automatically open in this app.}
- }</string>
+ =1 {This link is verified and automatically opens in this app.}
+ other {These links are verified and automatically open in this app.}
+ }</string>
<!-- OK button for verified links dialog. [CHAR LIMIT=20] -->
<string name="app_launch_dialog_ok">OK</string>
<!-- Info icon description of the verified links. [CHAR LIMIT=NONE] -->
@@ -9847,9 +9917,9 @@
<!-- Title and button for supported links dialog. -->
<string name="app_launch_supported_links_title">{count, plural,
- =1 {# supported link}
- other {# supported links}
- }</string>
+ =1 {# supported link}
+ other {# supported links}
+ }</string>
<!-- Add button for supported links dialog. [CHAR LIMIT=20] -->
<string name="app_launch_supported_links_add">Add</string>
<!-- The subtext of the link title in supported links dialog. [CHAR LIMIT=30] -->
@@ -9885,15 +9955,15 @@
<!-- Permissions preference summary [CHAR LIMIT=40] -->
<string name="notifications_categories_off">{count, plural,
- =1 {# category turned off}
- other {# categories turned off}
- }</string>
+ =1 {# category turned off}
+ other {# categories turned off}
+ }</string>
<!-- Runtime permissions preference summary. Number of additional permissions granted. [CHAR LIMIT=40] -->
<string name="runtime_permissions_additional_count">{count, plural,
- =1 {# additional permission}
- other {# additional permissions}
- }</string>
+ =1 {# additional permission}
+ other {# additional permissions}
+ }</string>
<!-- Runtime permissions preference summary, shown when the app has no permissions granted. [CHAR LIMIT=40] -->
<string name="runtime_permissions_summary_no_permissions_granted">No permissions granted</string>
@@ -9915,9 +9985,9 @@
<!-- Summary of number of apps that have not been used for months. [CHAR LIMIT=40]-->
<string name="unused_apps_summary">{count, plural,
- =1 {# unused app}
- other {# unused apps}
- }</string>
+ =1 {# unused app}
+ other {# unused apps}
+ }</string>
<!-- Label for category for unused app settings for an app. [CHAR LIMIT=40]-->
<string name="unused_apps_category">Unused app settings</string>
@@ -9985,9 +10055,9 @@
<!-- Summary for allow app to open supported links [CHAR LIMIT=42] -->
<string name="app_link_open_always_summary">{count, plural,
- =1 {App claims to handle # link}
- other {App claims to handle # links}
- }</string>
+ =1 {App claims to handle # link}
+ other {App claims to handle # links}
+ }</string>
<!-- Footer of open supported links settings [CHAR LIMIT=NONE] -->
<string name="open_supported_links_footer">App claims to handle following links:</string>
@@ -10257,9 +10327,9 @@
<!-- Description of number of apps using memory [CHAR LIMIT=NONE] -->
<string name="memory_usage_apps_summary">{count, plural,
- =1 {1 app used memory in the last {time}}
- other {# apps used memory in the last {time}}
- }</string>
+ =1 {1 app used memory in the last {time}}
+ other {# apps used memory in the last {time}}
+ }</string>
<!-- Label for toggle that enables the profiling/aggregating of memory usage [CHAR LIMIT=80]-->
<string name="force_enable_pss_profiling_title">Enable memory usage profiling</string>
@@ -10359,6 +10429,10 @@
<!-- Description for setting that allows apps to send full screen intents. [CHAR LIMIT=NONE] -->
<string name="footer_description_full_screen_intent">Allow this app to show notifications that take up the full screen when the device is locked. Apps may use these to highlight alarms, incoming calls, or other urgent notifications.</string>
+ <string name="write_system_preferences_page_title">Write system preferences</string>
+ <string name="write_system_preferences_switch_title">Allow this app to modify system preferences on your behalf</string>
+ <string name="write_system_preferences_footer_description">This permission allows an app to modify core system preferences.</string>
+
<!-- Media management apps settings title [CHAR LIMIT=40] -->
<string name="media_management_apps_title">Media management apps</string>
<!-- Label for a setting which controls whether an app can manage media files [CHAR LIMIT=45] -->
@@ -10685,9 +10759,9 @@
<!-- Description of number of apps allowed to ignore Data Saver [CHAR LIMIT=NONE] -->
<string name="data_saver_unrestricted_summary">{count, plural,
- =1 {1 app allowed to use unrestricted mobile data when Data Saver is on}
- other {# apps allowed to use unrestricted mobile data when Data Saver is on}
- }</string>
+ =1 {1 app allowed to use unrestricted mobile data when Data Saver is on}
+ other {# apps allowed to use unrestricted mobile data when Data Saver is on}
+ }</string>
<!-- Data usage title text [CHAR LIMIT=30] -->
<string name="data_usage_title">Primary data</string>
@@ -10712,9 +10786,9 @@
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
<string name="billing_cycle_days_left">{count, plural,
- =1 {# day left}
- other {# days left}
- }</string>
+ =1 {# day left}
+ other {# days left}
+ }</string>
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
<string name="billing_cycle_none_left">No time remaining</string>
@@ -11291,9 +11365,9 @@
<string name="enterprise_privacy_apps_count_estimation_info">Number of apps is estimated. It may not include apps installed outside of the Play Store.</string>
<!-- Summary indicating the number of apps that a label (e.g. installed apps or apps granted a particular permission) refers to. The number shown is a minimum as there may be additional apps we do not know about. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_number_packages_lower_bound">{count, plural,
- =1 {Minimum # app}
- other {Minimum # apps}
- }</string>
+ =1 {Minimum # app}
+ other {Minimum # apps}
+ }</string>
<!-- Label indicating that the admin granted one or more apps access to the device's location. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_location_access">Location permissions</string>
<!-- Label indicating that the admin granted one or more apps access to the microphone. [CHAR LIMIT=NONE] -->
@@ -11304,9 +11378,9 @@
<string name="enterprise_privacy_enterprise_set_default_apps">Default apps</string>
<!-- Summary indicating the number of apps that a label (e.g. installed apps or apps granted a particular permission) refers to. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_number_packages">{count, plural,
- =1 {# app}
- other {# apps}
- }</string>
+ =1 {# app}
+ other {# apps}
+ }</string>
<!-- Label explaining that the current input method was set by the admin. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_input_method">Default keyboard</string>
<!-- Summary indicating the input method set by the admin. [CHAR LIMIT=NONE] -->
@@ -11327,9 +11401,9 @@
<string name="enterprise_privacy_ca_certs_work">Trusted credentials in your work profile</string>
<!-- Summary indicating the number of trusted CA certificates installed by the admin. The number shown is a minimum as there may be additional CA certificates we do not know about. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_number_ca_certs">{count, plural,
- =1 {Minimum # CA certificate}
- other {Minimum # CA certificates}
- }</string>
+ =1 {Minimum # CA certificate}
+ other {Minimum # CA certificates}
+ }</string>
<!-- Label explaining that the admin can lock the device and change the user's password. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_lock_device">Admin can lock the device and reset password</string>
<!-- Label explaining that the admin can wipe the device remotely. [CHAR LIMIT=NONE] -->
@@ -11340,9 +11414,9 @@
<string name="enterprise_privacy_failed_password_wipe_work">Failed password attempts before deleting work profile data</string>
<!-- Summary indicating the number of mistyped passwords after which the device or work profile wipes itself. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_number_failed_password_wipe">{count, plural,
- =1 {# attempt}
- other {# attempts}
- }</string>
+ =1 {# attempt}
+ other {# attempts}
+ }</string>
<!-- Message indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=NONE] -->
<string name="do_disclosure_generic">This device is managed by your organization.</string>
<!-- Message indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=NONE] -->
@@ -11405,25 +11479,25 @@
<!-- Strings for displaying which applications were set as default for specific actions. -->
<!-- Title for the apps that have been set as default handlers of camera-related intents. [CHAR LIMIT=30] -->
<string name="default_camera_app_title">{count, plural,
- =1 {Camera app}
- other {Camera apps}
- }</string>
+ =1 {Camera app}
+ other {Camera apps}
+ }</string>
<!-- Title for the app that has been set as default handler of calendar-related intents. [CHAR LIMIT=30] -->
<string name="default_calendar_app_title">Calendar app</string>
<!-- Title for the app that has been set as default handler of contacts-related intents. [CHAR LIMIT=30] -->
<string name="default_contacts_app_title">Contacts app</string>
<!-- Title for the apps that have been set as default handlers of new email intents. [CHAR LIMIT=30] -->
<string name="default_email_app_title">{count, plural,
- =1 {Email client app}
- other {Email client apps}
- }</string>
+ =1 {Email client app}
+ other {Email client apps}
+ }</string>
<!-- Title for the app that has been set as default handler of geo-related intents. [CHAR LIMIT=30] -->
<string name="default_map_app_title">Map app</string>
<!-- Title for the apps that have been set as default handlers of call-related intents. [CHAR LIMIT=30] -->
<string name="default_phone_app_title">{count, plural,
- =1 {Phone app}
- other {Phone apps}
- }</string>
+ =1 {Phone app}
+ other {Phone apps}
+ }</string>
<!-- Template for concatenating two app names -->
<string name="app_names_concatenation_template_2"><xliff:g id="first_app_name">%1$s</xliff:g>, <xliff:g id="second_app_name">%2$s</xliff:g></string>
<!-- Template for concatenating three app names -->
@@ -11518,9 +11592,9 @@
<!-- Summary for passwords settings that shows how many passwords are saved for each autofill
service. [CHAR LIMIT=NONE] -->
<string name="autofill_passwords_count">{count, plural,
- =1 {# password}
- other {# passwords}
- }</string>
+ =1 {# password}
+ other {# passwords}
+ }</string>
<!-- DO NOT TRANSLATE Summary placeholder for when the passwords count is still loading or is
unavailable. -->
<string name="autofill_passwords_count_placeholder" translatable="false">\u2014</string>
@@ -12379,10 +12453,10 @@
<string name="choose_sim_title">Choose a SIM to use</string>
<!-- The body text of choose SIM activity. [CHAR LIMIT=NONE] -->
<string name="choose_sim_text">{count, plural,
- =1 {1 SIM is available on this device, but only one can be used at a time}
- =2 {2 SIMs are available on this device, but only one can be used at a time}
- other {# SIMs are available on this device, but only one can be used at a time}
- }</string>
+ =1 {1 SIM is available on this device, but only one can be used at a time}
+ =2 {2 SIMs are available on this device, but only one can be used at a time}
+ other {# SIMs are available on this device, but only one can be used at a time}
+ }</string>
<!-- String indicating that we are activating the profile [CHAR LIMIT=NONE] -->
<string name="choose_sim_activating">Turning on<xliff:g id="ellipsis" example="...">…</xliff:g></string>
<!-- String indicating that we failed to activate the selected profile [CHAR LIMIT=NONE] -->
@@ -12513,9 +12587,9 @@
<!-- Summary for the accessibility usage preference in the Privacy page. [CHAR LIMIT=NONE] -->
<string name="accessibility_usage_summary">{count, plural,
- =1 {1 app has full access to your device}
- other {# apps have full access to your device}
- }</string>
+ =1 {1 app has full access to your device}
+ other {# apps have full access to your device}
+ }</string>
<!-- Label for the title on wfc disclaimer fragment. [CHAR LIMIT=40] -->
<string name="wfc_disclaimer_title_text">Important information</string>
@@ -13268,9 +13342,9 @@
<!-- Background Install Control UI -->
<!-- [CHAR LIMIT=NONE] Preference Feature Summary -->
<string name="background_install_preference_summary">{count, plural,
- =1 {# app}
- other {# apps}
- }</string>
+ =1 {# app}
+ other {# apps}
+ }</string>
<!-- [CHAR LIMIT=NONE] Feature Title -->
<string name="background_install_title">Apps installed in the background</string>
@@ -13282,14 +13356,14 @@
<string name="background_install_uninstall_button_description">Uninstall app</string>
<!-- [CHAR LIMIT=NONE] Before time period group list title -->
<string name="background_install_before">{count, plural,
- =1 {Apps installed in the last # month}
- other {Apps installed in the last # months}
- }</string>
+ =1 {Apps installed in the last # month}
+ other {Apps installed in the last # months}
+ }</string>
<!-- [CHAR LIMIT=NONE] After time period group list title -->
<string name="background_install_after">{count, plural,
- =1 {Apps installed more than # month ago}
- other {Apps installed more than # months ago}
- }</string>
+ =1 {Apps installed more than # month ago}
+ other {Apps installed more than # months ago}
+ }</string>
<!-- App Aspect Ratio (User Aspect Ratio Override) -->
<!-- [CHAR LIMIT=60] Aspect ratio title setting to choose app aspect ratio -->
@@ -13482,11 +13556,11 @@
<!--Text for Stylus Pointer Icon preference -->
<string name="show_stylus_pointer_icon">Show pointer while hovering</string>
- <!-- Developer settings title: Media DRM settings screen. [CHAR LIMIT=50] -->
+ <!-- Developer settings title: Media DRM settings screen. [CHAR LIMIT=50] -->
<string name="media_drm_settings_title">Media DRM settings</string>
- <!-- Developer settings title: select whether to enable force Software Secure Crypto fallback. [CHAR LIMIT=50] -->
+ <!-- Developer settings title: select whether to enable force Software Secure Crypto fallback. [CHAR LIMIT=50] -->
<string name="force_swcrypto_fallback_title">Force Software Secure Crypto</string>
- <!-- Developer settings summary: select to force Software Secure Crypto.[CHAR LIMIT=NONE] -->
+ <!-- Developer settings summary: select to force Software Secure Crypto.[CHAR LIMIT=NONE] -->
<string name="force_swcrypto_fallback_summary">Force DRM key management to use software-based whitebox crypto</string>
<!--Text for acquire msg on UDFPS devices -->
@@ -13706,8 +13780,10 @@
<string name="audio_streams_main_page_password_dialog_join_button">Listen to stream</string>
<!-- Le audio streams main page qr code scanner summary [CHAR LIMIT=NONE] -->
<string name="audio_streams_main_page_qr_code_scanner_summary">Scan an audio stream QR code to listen with <xliff:g example="LE headset" id="device_name">%1$s</xliff:g></string>
- <!-- Le audio streams password dialog [CHAR LIMIT=NONE] -->
+ <!-- Le audio streams password dialog not editable message [CHAR LIMIT=NONE] -->
<string name="audio_streams_main_page_password_dialog_cannot_edit">Can\u0027t edit password while sharing. To change the password, first turn off audio sharing.</string>
+ <!-- Le audio streams password dialog password format alert [CHAR LIMIT=NONE] -->
+ <string name="audio_streams_main_page_password_dialog_format_alert">Your password must contain 4-16 characters and use only letters, numbers and symbols</string>
<!-- Text for audio sharing qrcode scanner [CHAR LIMIT=none]-->
<string name="audio_streams_qr_code_scanner_label">QR code scanner</string>
<!-- Learn more link for audio sharing qrcode [CHAR LIMIT=none]-->
@@ -13729,11 +13805,18 @@
<string name="contacts_storage_device_only_preference_summary">New contacts won\'t be synced with an account</string>
<!-- Text for explaining the selection in Contacts Storage Settings [CHAR LIMIT=NONE] -->
<string name="contacts_storage_selection_message">Contacts will be saved to your device and synced to your account by default</string>
+ <!-- Text for error toast when there's error setting the default account in Contacts Storage Settings [CHAR LIMIT=NONE] -->
+ <string name="contacts_storage_set_default_account_error_message">Error setting the default account</string>
<!-- Text for displaying when no account is set as default account [CHAR LIMIT=50] -->
- <string name="contacts_storage_no_account_set">No default set</string>
+ <string name="contacts_storage_no_account_set_summary">No default set</string>
+ <!-- Text for displaying when default account is set as local only [CHAR LIMIT=50] -->
+ <string name="contacts_storage_local_account_summary">Device only</string>
+ <!-- Text for displaying eligible account preference title [CHAR LIMIT=50] -->
+ <string name="contacts_storage_account_title">Device and %1$s</string>
<!-- Text for add account selection message when no account has been added [CHAR LIMIT=100] -->
<string name="contacts_storage_first_time_add_account_message">Add an account to get started</string>
-
+ <!-- Text for account preference category title for contacts storage settings page [CHAR LIMIT=100] -->
+ <string name="contacts_storage_account_category_title">Where to save contacts</string>
<!-- Circle to Search (shared between all entrypoints) -->
<!-- Name of Google's new feature to circle to search anything on your phone screen,
without switching apps. Also used as the setting title. [CHAR LIMIT=60] -->
diff --git a/res/values/styles_preference_expressive.xml b/res/values/styles_preference_expressive.xml
new file mode 100644
index 0000000..a6fe2f1
--- /dev/null
+++ b/res/values/styles_preference_expressive.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 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.
+ -->
+
+<!-- This file only contains custom attribute and style definition for preferences -->
+<!-- Things unrelated to preference framework UI customization should go to other styles files -->
+<resources>
+
+ <style name="SettingsPreferenceTheme.Expressive" parent="@style/PreferenceTheme.SettingsLib.Expressive">
+ <item name="apnPreferenceStyle">@style/ApnPreference</item>
+ <item name="cardPreferenceStyle">@style/CardPreference</item>
+ <item name="slicePreferenceStyle">@style/SlicePreference</item>
+ <item name="seekBarPreferenceStyle">@style/SettingsSeekBarPreference</item>
+ <item name="twoStateButtonPreferenceStyle">@style/TwoStateButtonPreference</item>
+ <item name="preferenceFragmentCompatStyle">@style/SettingsPreferenceFragmentStyle</item>
+ </style>
+</resources>
diff --git a/res/values/themes_expressive.xml b/res/values/themes_expressive.xml
new file mode 100644
index 0000000..8342fe0
--- /dev/null
+++ b/res/values/themes_expressive.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2024 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:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <style name="Theme.Settings.Expressive" parent="Theme.SettingsBase.Expressive">
+ <item name="android:clipToPadding">false</item>
+ <item name="android:clipChildren">false</item>
+ <item name="preferenceTheme">@style/SettingsPreferenceTheme.Expressive</item>
+ <item name="android:listPreferredItemHeight">72dip</item>
+ <item name="android:homeAsUpIndicator">@drawable/ic_arrow_back</item>
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:datePickerDialogTheme">@style/PickerDialogTheme.Settings</item>
+
+ <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
+ <item name="face_layout_theme">@style/FaceLayoutTheme</item>
+ <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
+
+ <!-- For edge-to-edge -->
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+
+ <!-- For wifi icon -->
+ <item name="wifi_signal">@drawable/wifi_signal</item>
+ <item name="wifi_signal_color">?android:attr/colorAccent</item>
+ <item name="wifi_friction">@drawable/wifi_friction</item>
+
+ <item name="side_margin">0dp</item>
+ <item name="sudListItemIconColor">?android:attr/colorAccent</item>
+
+ <!-- Redefine the ActionBar style for contentInsetStart -->
+ <item name="android:actionBarStyle">@style/Widget.ActionBar</item>
+
+ <item name="preferenceBackgroundColor">@drawable/preference_background</item>
+
+ <!-- For AndroidX AlertDialog -->
+ <item name="alertDialogTheme">@style/Theme.AlertDialog</item>
+
+ <item name="*android:lockPatternStyle">@style/LockPatternStyle</item>
+
+ <!-- For AppBarLayout -->
+ <item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
+ <item name="colorPrimaryVariant">@android:color/white</item>
+
+ <!-- For slice view in settings -->
+ <item name="sliceViewStyle">@style/Widget.SliceView.Settings</item>
+
+ <item name="notification_importance_button_background_color_unselected">@android:color/transparent</item>
+ <item name="notification_importance_button_border_color_unselected">?androidprv:attr/materialColorOutlineVariant</item>
+ <item name="notification_importance_button_foreground_color_unselected">?androidprv:attr/materialColorOnSurfaceVariant</item>
+
+ <item name="notification_importance_button_background_color_selected">?androidprv:attr/materialColorSecondaryContainer</item>
+ <item name="notification_importance_button_border_color_selected">?androidprv:attr/materialColorOnSecondaryContainer</item>
+ <item name="notification_importance_button_foreground_color_selected">?androidprv:attr/materialColorOnSecondaryContainer</item>
+
+ <!-- For AppCompat widgets, e.g. TextInputLayout -->
+ <item name="colorAccent">?android:attr/colorAccent</item>
+ </style>
+
+ <style name="Theme.Settings.Expressive.NoActionBar">
+ <item name="android:windowActionBar">false</item>
+ <item name="android:windowNoTitle">true</item>
+ <item name="colorSurface">@color/settingslib_colorSurface</item>
+ </style>
+
+ <style name="Theme.SubSettings.Expressive.Base" parent="Theme.Settings.Expressive.NoActionBar">
+ <!-- Redefine the ActionBar style for contentInsetStart -->
+ <item name="android:actionBarStyle">@style/Widget.ActionBar.SubSettings</item>
+
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+ </style>
+
+ <style name="Theme.SubSettings.Expressive" parent="Theme.SubSettings.Expressive.Base"/>
+</resources>
diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml
index 7a19928..3a1bcd3 100644
--- a/res/xml/accessibility_autoclick_settings.xml
+++ b/res/xml/accessibility_autoclick_settings.xml
@@ -21,7 +21,8 @@
<com.android.settingslib.widget.TopIntroPreference
android:key="accessibility_autoclick_intro"
- android:title="@string/accessibility_autoclick_intro_text"/>
+ android:title="@string/accessibility_autoclick_intro_text"
+ settings:searchable="false"/>
<com.android.settingslib.widget.IllustrationPreference
android:key="accessibility_autoclick_banner"
@@ -29,32 +30,42 @@
settings:searchable="false"
settings:lottie_rawRes="@drawable/accessibility_dwell"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_autoclick_default"
android:title="@string/accessibility_autoclick_default_title"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_autoclick_200ms"
android:title="@string/accessibility_autoclick_short_title"
android:summary="@string/accessibility_autoclick_short_summary"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_autoclick_600ms"
android:title="@string/accessibility_autoclick_medium_title"
android:summary="@string/accessibility_autoclick_medium_summary"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_autoclick_1sec"
android:title="@string/accessibility_autoclick_long_title"
android:summary="@string/accessibility_autoclick_long_summary"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_autoclick_custom"
android:title="@string/accessibility_autoclick_custom_title"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
<com.android.settingslib.widget.LayoutPreference
@@ -62,6 +73,7 @@
android:layout="@layout/accessibility_autoclick_custom_seekbar"
android:selectable="false"
android:visibility="gone"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/>
<com.android.settings.accessibility.AccessibilityFooterPreference
diff --git a/res/xml/accessibility_control_timeout_settings.xml b/res/xml/accessibility_control_timeout_settings.xml
index 4f1c2b3..4c65d89 100644
--- a/res/xml/accessibility_control_timeout_settings.xml
+++ b/res/xml/accessibility_control_timeout_settings.xml
@@ -22,35 +22,46 @@
<com.android.settingslib.widget.TopIntroPreference
android:key="accessibility_control_timeout_intro"
- android:title="@string/accessibility_control_timeout_preference_intro_text"/>
+ android:title="@string/accessibility_control_timeout_preference_intro_text"
+ settings:searchable="false"/>
<com.android.settingslib.widget.IllustrationPreference
android:key="accessibility_control_timeout_banner"
settings:lottie_rawRes="@raw/a11y_timeout_banner"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_timeout_default"
android:title="@string/accessibility_timeout_default"
- settings:controller="com.android.settings.accessibility.AccessibilityTimeoutController"/>
+ settings:searchable="false"
+ settings:controller="com.android.settings.accessibility.AccessibilityTimeoutController" />
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_timeout_10secs"
android:title="@string/accessibility_timeout_10secs"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.AccessibilityTimeoutController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_timeout_30secs"
android:title="@string/accessibility_timeout_30secs"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.AccessibilityTimeoutController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_timeout_1min"
android:title="@string/accessibility_timeout_1min"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.AccessibilityTimeoutController"/>
+ <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="accessibility_control_timeout_2mins"
android:title="@string/accessibility_timeout_2mins"
+ settings:searchable="false"
settings:controller="com.android.settings.accessibility.AccessibilityTimeoutController"/>
<com.android.settings.accessibility.AccessibilityFooterPreference
diff --git a/res/xml/accessibility_hearing_aids.xml b/res/xml/accessibility_hearing_aids.xml
index 9c6e661..1612828 100644
--- a/res/xml/accessibility_hearing_aids.xml
+++ b/res/xml/accessibility_hearing_aids.xml
@@ -20,7 +20,8 @@
android:title="@string/accessibility_hearingaid_title">
<com.android.settingslib.widget.TopIntroPreference
- android:title="@string/accessibility_hearingaid_intro" />
+ android:title="@string/accessibility_hearingaid_intro"
+ settings:searchable="false" />
<PreferenceCategory
android:key="available_hearing_devices"
diff --git a/res/xml/accessibility_settings_for_setup_wizard.xml b/res/xml/accessibility_settings_for_setup_wizard.xml
index 25b8a5a..2509543 100644
--- a/res/xml/accessibility_settings_for_setup_wizard.xml
+++ b/res/xml/accessibility_settings_for_setup_wizard.xml
@@ -37,11 +37,10 @@
settings:useAdminDisabledSummary="true"
settings:userRestriction="no_config_brightness"/>
- <com.android.settingslib.PrimarySwitchPreference
+ <com.android.settingslib.RestrictedSwitchPreference
android:key="@string/preference_key_auto_brightness"
android:icon="@drawable/ic_suw_brightness_auto"
android:title="@string/auto_brightness_title"
- android:fragment="com.android.settings.accessibility.AutoBrightnessPreferenceFragmentForSetupWizard"
settings:useAdminDisabledSummary="true"
settings:userRestriction="no_config_brightness"
settings:controller="com.android.settings.display.AutoBrightnessPreferenceControllerForSetupWizard"/>
diff --git a/res/xml/adaptive_connectivity_settings.xml b/res/xml/adaptive_connectivity_settings.xml
index 6306006..0c8ff88 100644
--- a/res/xml/adaptive_connectivity_settings.xml
+++ b/res/xml/adaptive_connectivity_settings.xml
@@ -29,7 +29,7 @@
settings:lottie_rawRes="@drawable/ic_enhanced_connectivity"/>
<com.android.settingslib.widget.MainSwitchPreference
- android:key="adaptive_connectivity"
+ android:key="adaptive_connectivity_enabled"
android:title="@string/adaptive_connectivity_main_switch_title"
settings:controller="com.android.settings.network.AdaptiveConnectivityTogglePreferenceController"/>
diff --git a/res/xml/apn_editor.xml b/res/xml/apn_editor.xml
deleted file mode 100644
index e5c04e0..0000000
--- a/res/xml/apn_editor.xml
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/apn_edit">
- <EditTextPreference
- android:title="@string/apn_name"
- android:dialogTitle="@string/apn_name"
- android:key="apn_name"
- android:singleLine="true"
- android:inputType="text"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_apn"
- android:dialogTitle="@string/apn_apn"
- android:key="apn_apn"
- android:singleLine="true"
- android:inputType="textEmailAddress"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_http_proxy"
- android:dialogTitle="@string/apn_http_proxy"
- android:key="apn_http_proxy"
- android:singleLine="true"
- android:inputType="textUri"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_http_port"
- android:dialogTitle="@string/apn_http_port"
- android:key="apn_http_port"
- android:singleLine="true"
- android:inputType="number"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_user"
- android:dialogTitle="@string/apn_user"
- android:key="apn_user"
- android:singleLine="true"
- android:inputType="textEmailAddress"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_password"
- android:dialogTitle="@string/apn_password"
- android:key="apn_password"
- android:singleLine="true"
- android:inputType="textPassword"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_server"
- android:dialogTitle="@string/apn_server"
- android:key="apn_server"
- android:singleLine="true"
- android:inputType="textUri"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_mmsc"
- android:dialogTitle="@string/apn_mmsc"
- android:key="apn_mmsc"
- android:singleLine="true"
- android:inputType="textUri"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_mms_proxy"
- android:dialogTitle="@string/apn_mms_proxy"
- android:key="apn_mms_proxy"
- android:singleLine="true"
- android:inputType="textUri"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_mms_port"
- android:dialogTitle="@string/apn_mms_port"
- android:key="apn_mms_port"
- android:singleLine="true"
- android:inputType="number"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_mcc"
- android:dialogTitle="@string/apn_mcc"
- android:key="apn_mcc"
- android:singleLine="true"
- android:inputType="number"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_mnc"
- android:dialogTitle="@string/apn_mnc"
- android:key="apn_mnc"
- android:singleLine="true"
- android:inputType="number"
- android:persistent="false"
- />
- <ListPreference
- android:title="@string/apn_auth_type"
- android:key="auth_type"
- android:entries="@array/apn_auth_entries"
- android:entryValues="@array/apn_auth_values"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/apn_type"
- android:dialogTitle="@string/apn_type"
- android:key="apn_type"
- android:singleLine="true"
- android:inputType="textNoSuggestions"
- android:persistent="false"
- />
- <ListPreference
- android:title="@string/apn_protocol"
- android:dialogTitle="@string/apn_protocol"
- android:key="apn_protocol"
- android:entries="@array/apn_protocol_entries"
- android:entryValues="@array/apn_protocol_values"
- android:persistent="false"
- />
- <ListPreference
- android:title="@string/apn_roaming_protocol"
- android:dialogTitle="@string/apn_roaming_protocol"
- android:key="apn_roaming_protocol"
- android:entries="@array/apn_protocol_entries"
- android:entryValues="@array/apn_protocol_values"
- android:persistent="false"
- />
- <SwitchPreferenceCompat
- android:title="@string/carrier_enabled"
- android:key="carrier_enabled"
- android:enabled="false"
- android:summaryOn="@string/carrier_enabled_summaryOn"
- android:summaryOff="@string/carrier_enabled_summaryOff"
- android:persistent="false"
- />
- <MultiSelectListPreference
- android:title="@string/bearer"
- android:key="bearer_multi"
- android:entries="@array/bearer_entries"
- android:entryValues="@array/bearer_values"
- android:persistent="false"
- style="@style/SettingsMultiSelectListPreference"
- />
- <ListPreference
- android:title="@string/mvno_type"
- android:key="mvno_type"
- android:entries="@array/mvno_type_entries"
- android:entryValues="@array/mvno_type_values"
- android:persistent="false"
- />
- <EditTextPreference
- android:title="@string/mvno_match_data"
- android:dialogTitle="@string/mvno_match_data"
- android:key="mvno_match_data"
- android:singleLine="true"
- android:inputType="text"
- android:persistent="false"
- />
-</PreferenceScreen>
diff --git a/res/xml/bluetooth_screen.xml b/res/xml/bluetooth_screen.xml
index 51507fb..e815d44 100644
--- a/res/xml/bluetooth_screen.xml
+++ b/res/xml/bluetooth_screen.xml
@@ -21,6 +21,7 @@
<SwitchPreferenceCompat
android:key="bluetooth_auto_on_settings_toggle"
android:title="@string/bluetooth_screen_auto_on_title"
+ android:summary="@string/bluetooth_screen_auto_on_summary"
settings:controller="com.android.settings.bluetooth.BluetoothAutoOnPreferenceController"/>
<Preference
diff --git a/res/xml/bundle_notifications_settings.xml b/res/xml/bundle_notifications_settings.xml
new file mode 100644
index 0000000..34efd7d
--- /dev/null
+++ b/res/xml/bundle_notifications_settings.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:title="@string/notification_bundle_title">
+
+ <com.android.settingslib.widget.IllustrationPreference
+ android:key="illustration"
+ settings:searchable="false"
+ android:selectable="false"
+ app:lottie_cacheComposition="false"
+ settings:dynamicColor="true"/>
+
+ <com.android.settingslib.widget.TopIntroPreference
+ android:key="feature_description"
+ settings:searchable="false"
+ android:title="@string/notification_bundle_description"/>
+
+ <com.android.settingslib.widget.MainSwitchPreference
+ android:key="global_pref"
+ android:title="@string/notification_bundle_main_control_title"
+ settings:controller="com.android.settings.notification.BundleGlobalPreferenceController" />
+
+ <CheckBoxPreference
+ android:key="promotions"
+ android:title="@*android:string/promotional_notification_channel_label"
+ settings:controller="com.android.settings.notification.BundleTypePreferenceController"/>
+
+ <CheckBoxPreference
+ android:key="news"
+ android:title="@*android:string/news_notification_channel_label"
+ settings:controller="com.android.settings.notification.BundleTypePreferenceController"/>
+
+ <CheckBoxPreference
+ android:key="social"
+ android:title="@*android:string/social_notification_channel_label"
+ settings:controller="com.android.settings.notification.BundleTypePreferenceController"/>
+
+ <CheckBoxPreference
+ android:key="recs"
+ android:title="@*android:string/recs_notification_channel_label"
+ settings:controller="com.android.settings.notification.BundleTypePreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/captioning_settings.xml b/res/xml/captioning_settings.xml
index 8cf05be..747923f 100644
--- a/res/xml/captioning_settings.xml
+++ b/res/xml/captioning_settings.xml
@@ -22,7 +22,8 @@
<com.android.settingslib.widget.TopIntroPreference
android:key="captioning_intro"
- android:title="@string/accessibility_captioning_preference_intro"/>
+ android:title="@string/accessibility_captioning_preference_intro"
+ settings:searchable="false"/>
<com.android.settingslib.widget.IllustrationPreference
android:key="captioning_preview"
@@ -44,7 +45,8 @@
<Preference
android:fragment="com.android.settings.accessibility.CaptioningMoreOptionsFragment"
android:key="captioning_more_options"
- android:title="@string/captioning_more_options_title" />
+ android:title="@string/captioning_more_options_title"
+ settings:searchable="false" />
<com.android.settings.accessibility.AccessibilityFooterPreference
android:key="captioning_settings_footer"
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index c88b7ba..aedf0b4 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -43,6 +43,14 @@
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.notification.history.NotificationHistoryActivity" />
</Preference>
+
+ <Preference
+ android:fragment="com.android.settings.notification.BundlePreferenceFragment"
+ android:key="bundle_notifications_preference"
+ android:persistent="false"
+ android:order="12"
+ android:title="@string/notification_bundle_title"
+ settings:controller="com.android.settings.notification.BundlePreferenceController" />
</PreferenceCategory>
<PreferenceCategory
diff --git a/res/xml/contacts_storage_settings.xml b/res/xml/contacts_storage_settings.xml
index 7cbabe7..691a1cc 100644
--- a/res/xml/contacts_storage_settings.xml
+++ b/res/xml/contacts_storage_settings.xml
@@ -22,6 +22,12 @@
<com.android.settingslib.widget.TopIntroPreference
android:title="@string/contacts_storage_selection_message" />
+ <PreferenceCategory
+ android:key="account_category"
+ android:persistent="false"
+ android:title="@string/contacts_storage_account_category_title">
+ </PreferenceCategory>
+
<com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="device_only_account_preference"
android:summary="@string/contacts_storage_device_only_preference_summary"
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index a4addf6..25bc062 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -199,10 +199,11 @@
android:title="@string/enable_terminal_title"
android:summary="@string/enable_terminal_summary" />
- <SwitchPreferenceCompat
- android:key="enable_linux_terminal"
+ <Preference
+ android:key="linux_terminal"
android:title="@string/enable_linux_terminal_title"
- android:summary="@string/enable_linux_terminal_summary" />
+ android:summary="@string/enable_linux_terminal_summary"
+ android:fragment="com.android.settings.development.linuxterminal.LinuxTerminalDashboardFragment" />
<SwitchPreferenceCompat
android:key="bugreport_in_power"
@@ -394,6 +395,11 @@
android:entryValues="@array/bluetooth_leaudio_mode_values"/>
<SwitchPreferenceCompat
+ android:key="bluetooth_leaudio_broadcast_ui"
+ android:title="@string/bluetooth_leaudio_broadcast_ui"
+ android:summary="@string/bluetooth_leaudio_broadcast_ui_summary"/>
+
+ <SwitchPreferenceCompat
android:key="bluetooth_show_leaudio_device_details"
android:title="@string/bluetooth_show_leaudio_device_details"/>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 4e52cf4..3baf439 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -28,12 +28,13 @@
<com.android.settingslib.RestrictedPreference
android:key="@string/preference_key_brightness_level"
android:title="@string/brightness"
+ android:persistent="false"
settings:keywords="@string/keywords_display_brightness_level"
settings:useAdminDisabledSummary="true"
settings:userRestriction="no_config_brightness"/>
<com.android.settingslib.PrimarySwitchPreference
- android:key="@string/preference_key_auto_brightness"
+ android:key="screen_brightness_mode"
android:title="@string/auto_brightness_title"
android:fragment="com.android.settings.display.AutoBrightnessSettings"
settings:useAdminDisabledSummary="true"
diff --git a/res/xml/dream_fragment_overview.xml b/res/xml/dream_fragment_overview.xml
index fff6bfe..bfc9855 100644
--- a/res/xml/dream_fragment_overview.xml
+++ b/res/xml/dream_fragment_overview.xml
@@ -27,11 +27,6 @@
settings:controller="com.android.settings.dream.DreamMainSwitchPreferenceController"
settings:searchable="false"/>
- <Preference
- android:key="when_to_start"
- android:title="@string/screensaver_settings_when_to_dream"
- android:fragment="com.android.settings.dream.WhenToDreamPicker"/>
-
<PreferenceCategory
android:title="@string/dream_picker_category">
<com.android.settingslib.widget.LayoutPreference
@@ -40,6 +35,11 @@
android:layout="@layout/dream_picker_layout"/>
</PreferenceCategory>
+ <Preference
+ android:key="when_to_start"
+ android:title="@string/screensaver_settings_when_to_dream"
+ android:fragment="com.android.settings.dream.WhenToDreamPicker"/>
+
<SwitchPreferenceCompat
android:key="dream_complications_toggle"
android:title="@string/dream_complications_toggle_title"
diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index 4613cb0..7618399 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -19,7 +19,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/languages_settings"
- android:key="languages_settings">
+ android:key="language_settings">
<PreferenceCategory
android:key="languages_category"
android:title="@string/locale_picker_category_title">
diff --git a/res/xml/linux_terminal_settings.xml b/res/xml/linux_terminal_settings.xml
new file mode 100644
index 0000000..bfb7328
--- /dev/null
+++ b/res/xml/linux_terminal_settings.xml
@@ -0,0 +1,33 @@
+<!--
+ Copyright 2024 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.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/enable_linux_terminal_title">
+
+ <com.android.settings.widget.SettingsMainSwitchPreference
+ android:key="enable_linux_terminal"
+ android:title="@string/enable_linux_terminal_summary"
+ settings:controller="com.android.settings.development.linuxterminal.EnableLinuxTerminalPreferenceController" />
+
+ <com.android.settingslib.widget.FooterPreference
+ android:key="disable_linux_terminal_footer"
+ android:title="@string/disable_linux_terminal_disclaimer"
+ android:selectable="false"
+ settings:searchable="false"/>
+
+</PreferenceScreen>
diff --git a/res/xml/mouse_keys_main_page.xml b/res/xml/mouse_keys_main_page.xml
new file mode 100644
index 0000000..d781b51
--- /dev/null
+++ b/res/xml/mouse_keys_main_page.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2024 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.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/mouse_keys"
+ android:key="mouse_key_main_page">
+
+ <com.android.settingslib.widget.MainSwitchPreference
+ android:key="mouse_keys_main_switch"
+ android:title="@string/mouse_keys_main_title"
+ settings:controller="com.android.settings.inputmethod.KeyboardAccessibilityMouseKeysController"/>
+
+ <com.android.settingslib.widget.LayoutPreference
+ android:key="mouse_keys_list"
+ android:layout="@layout/mouse_keys_image_list"/>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index aec064b..1a9e646 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -64,6 +64,7 @@
</PreferenceCategory>
<PreferenceCategory
+ android:key="legal_category"
android:title="@string/my_device_info_legal_category_title">
<!-- Legal information -->
@@ -157,6 +158,7 @@
</PreferenceCategory>
<PreferenceCategory
+ android:key="device_identifiers_category"
android:title="@string/my_device_info_device_identifiers_category_title">
<!--IP address -->
diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml
index 292f182..7a33367 100644
--- a/res/xml/network_provider_internet.xml
+++ b/res/xml/network_provider_internet.xml
@@ -30,6 +30,7 @@
settings:allowDividerAbove="true"
settings:keywords="@string/keywords_internet"
settings:useAdminDisabledSummary="true"
+ settings:userRestriction="no_config_wifi"
settings:controller="com.android.settings.network.InternetPreferenceControllerV2" />
<com.android.settingslib.RestrictedPreference
@@ -56,7 +57,7 @@
settings:controller="com.android.settings.network.MobileNetworkSummaryController" />
<com.android.settingslib.RestrictedSwitchPreference
- android:key="airplane_mode"
+ android:key="airplane_mode_on"
android:title="@string/airplane_mode"
android:icon="@drawable/ic_airplanemode_active"
android:order="-5"
@@ -80,6 +81,7 @@
android:title="@string/data_saver_title"
android:icon="@drawable/ic_settings_data_usage"
android:order="10"
+ android:persistent="false"
settings:isPreferenceVisible="@bool/config_show_data_saver"
android:fragment="com.android.settings.datausage.DataSaverSummary"/>
diff --git a/res/xml/one_handed_settings.xml b/res/xml/one_handed_settings.xml
index ab4d6f7..ad3bf3a 100644
--- a/res/xml/one_handed_settings.xml
+++ b/res/xml/one_handed_settings.xml
@@ -24,7 +24,8 @@
<com.android.settingslib.widget.TopIntroPreference
android:key="gesture_one_handed_mode_intro"
- android:title="@string/one_handed_mode_intro_text"/>
+ android:title="@string/one_handed_mode_intro_text"
+ settings:searchable="false"/>
<com.android.settingslib.widget.IllustrationPreference
android:key="one_handed_header"
diff --git a/res/xml/physical_keyboard_a11y_settings.xml b/res/xml/physical_keyboard_a11y_settings.xml
index 3bfe199..9d634c0 100644
--- a/res/xml/physical_keyboard_a11y_settings.xml
+++ b/res/xml/physical_keyboard_a11y_settings.xml
@@ -44,14 +44,15 @@
android:title="@string/slow_keys"
android:defaultValue="false"
android:summary="@string/slow_keys_summary"
- settings:controller="com.android.settings.inputmethod.KeyboardAccessibilitySlowKeysController" />
+ settings:controller="com.android.settings.inputmethod.KeyboardAccessibilitySlowKeysController"/>
- <SwitchPreferenceCompat
+ <com.android.settingslib.PrimarySwitchPreference
android:key="keyboard_a11y_page_mouse_keys"
android:title="@string/mouse_keys"
android:summary="@string/mouse_keys_summary"
android:defaultValue="false"
- settings:controller="com.android.settings.inputmethod.KeyboardAccessibilityMouseKeysController" />
+ android:fragment="com.android.settings.inputmethod.MouseKeysMainPageFragment"
+ settings:controller="com.android.settings.inputmethod.KeyboardAccessibilityMouseKeysController"/>
</PreferenceCategory>
diff --git a/res/xml/power_background_usage_detail.xml b/res/xml/power_background_usage_detail.xml
index 5c7b6a5..32d80b5 100644
--- a/res/xml/power_background_usage_detail.xml
+++ b/res/xml/power_background_usage_detail.xml
@@ -25,22 +25,25 @@
android:layout="@layout/settings_entity_header"
android:selectable="false"/>
- <com.android.settingslib.widget.MainSwitchPreference
- android:key="allow_background_usage"
- android:title="@string/manager_battery_usage_allow_background_usage_title"
- settings:controller="com.android.settings.fuelgauge.AllowBackgroundPreferenceController"/>
+ <PreferenceCategory
+ android:key="battery_optimization_mode_category"
+ android:layout="@layout/settingslib_preference_category_no_title"
+ settings:controller="com.android.settings.fuelgauge.BatteryOptimizationModePreferenceController">
- <com.android.settingslib.widget.SelectorWithWidgetPreference
- android:key="optimized_preference"
- android:title="@string/manager_battery_usage_optimized_title"
- android:summary="@string/manager_battery_usage_optimized_summary"
- settings:controller="com.android.settings.fuelgauge.OptimizedPreferenceController"/>
+ <com.android.settingslib.widget.MainSwitchPreference
+ android:key="background_usage_allowability_switch"
+ android:title="@string/manager_battery_usage_allow_background_usage_title"/>
- <com.android.settingslib.widget.SelectorWithWidgetPreference
- android:key="unrestricted_preference"
- android:title="@string/manager_battery_usage_unrestricted_title"
- android:summary="@string/manager_battery_usage_unrestricted_summary"
- settings:controller="com.android.settings.fuelgauge.UnrestrictedPreferenceController"/>
+ <com.android.settingslib.widget.SelectorWithWidgetPreference
+ android:key="optimized_preference"
+ android:title="@string/manager_battery_usage_optimized_title"
+ android:summary="@string/manager_battery_usage_optimized_summary"/>
+
+ <com.android.settingslib.widget.SelectorWithWidgetPreference
+ android:key="unrestricted_preference"
+ android:title="@string/manager_battery_usage_unrestricted_title"
+ android:summary="@string/manager_battery_usage_unrestricted_summary"/>
+ </PreferenceCategory>
<com.android.settingslib.widget.FooterPreference
android:key="app_usage_footer_preference"
diff --git a/res/xml/power_usage_detail.xml b/res/xml/power_usage_detail.xml
index f3b30b6..655dbc5 100644
--- a/res/xml/power_usage_detail.xml
+++ b/res/xml/power_usage_detail.xml
@@ -48,12 +48,12 @@
<PreferenceCategory
android:title="@string/manager_battery_usage_category_title"
- android:key="manage_battery_usage_category">
+ android:key="background_usage_allowability_category"
+ settings:controller="com.android.settings.fuelgauge.BackgroundUsageAllowabilityPreferenceController">
<com.android.settingslib.PrimarySwitchPreference
- android:key="allow_background_usage"
- android:title="@string/manager_battery_usage_allow_background_usage_title"
- settings:controller="com.android.settings.fuelgauge.AllowBackgroundPreferenceController"/>
+ android:key="background_usage_allowability_switch"
+ android:title="@string/manager_battery_usage_allow_background_usage_title"/>
</PreferenceCategory>
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 77c6b73..794061a 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -59,7 +59,7 @@
settings:keywords="@string/keywords_battery_adaptive_preferences" />
<SwitchPreferenceCompat
- android:key="battery_percentage"
+ android:key="status_bar_show_battery_percent"
android:title="@string/battery_percentage"
android:summary="@string/battery_percentage_description"
settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" />
diff --git a/res/xml/regional_preference_main_page.xml b/res/xml/regional_preference_main_page.xml
index 5c46f8c..704019f 100644
--- a/res/xml/regional_preference_main_page.xml
+++ b/res/xml/regional_preference_main_page.xml
@@ -20,41 +20,46 @@
android:key="regional_preferences">
<com.android.settingslib.widget.TopIntroPreference
+ android:key="regional_pref_intro"
android:title="@string/regional_preferences_main_page_sub_title"
- android:persistent="false" />
+ android:persistent="false"/>
- <Preference
- android:key="key_temperature_unit"
- android:title="@string/temperature_preferences_title"
- android:summary="@string/default_string_of_regional_preference"
- settings:controller="com.android.settings.regionalpreferences.TemperatureUnitController"
- settings:fragment="com.android.settings.regionalpreferences.TemperatureUnitFragment">
- <extra
- android:name="arg_key_regional_preference"
- android:value="mu" />
- </Preference>
+ <PreferenceCategory
+ android:key="regional_preferences_category"
+ android:layout="@layout/settingslib_preference_category_no_title">
+ <Preference
+ android:key="key_temperature_unit"
+ android:title="@string/temperature_preferences_title"
+ android:summary="@string/default_string_of_regional_preference"
+ settings:controller="com.android.settings.regionalpreferences.TemperatureUnitController"
+ settings:fragment="com.android.settings.regionalpreferences.TemperatureUnitFragment">
+ <extra
+ android:name="arg_key_regional_preference"
+ android:value="mu"/>
+ </Preference>
- <Preference
- android:key="key_first_day_of_week"
- android:title="@string/first_day_of_week_preferences_title"
- android:summary="@string/default_string_of_regional_preference"
- settings:controller="com.android.settings.regionalpreferences.FirstDayOfWeekController"
- settings:fragment="com.android.settings.regionalpreferences.FirstDayOfWeekItemFragment">
- <extra
- android:name="arg_key_regional_preference"
- android:value="fw" />
- </Preference>
+ <Preference
+ android:key="key_first_day_of_week"
+ android:title="@string/first_day_of_week_preferences_title"
+ android:summary="@string/default_string_of_regional_preference"
+ settings:controller="com.android.settings.regionalpreferences.FirstDayOfWeekController"
+ settings:fragment="com.android.settings.regionalpreferences.FirstDayOfWeekItemFragment">
+ <extra
+ android:name="arg_key_regional_preference"
+ android:value="fw"/>
+ </Preference>
- <Preference
- android:key="key_numbering_system"
- android:title="@string/numbers_preferences_title"
- android:summary="@string/default_string_of_regional_preference"
- settings:controller="com.android.settings.regionalpreferences.NumberingSystemController"
- settings:fragment="com.android.settings.regionalpreferences.NumberingPreferencesFragment">
- <extra
- android:name="arg_key_regional_preference"
- android:value="arg_value_language_select" />
- </Preference>
+ <Preference
+ android:key="key_numbering_system"
+ android:title="@string/numbers_preferences_title"
+ android:summary="@string/default_string_of_regional_preference"
+ settings:controller="com.android.settings.regionalpreferences.NumberingSystemController"
+ settings:fragment="com.android.settings.regionalpreferences.NumberingPreferencesFragment">
+ <extra
+ android:name="arg_key_regional_preference"
+ android:value="arg_value_language_select"/>
+ </Preference>
+ </PreferenceCategory>
<com.android.settingslib.widget.FooterPreference
android:key="regional_pref_footer"
diff --git a/res/xml/regional_preferences_first_day_of_week.xml b/res/xml/regional_preferences_first_day_of_week.xml
index d9de5e5..2848748 100644
--- a/res/xml/regional_preferences_first_day_of_week.xml
+++ b/res/xml/regional_preferences_first_day_of_week.xml
@@ -21,6 +21,7 @@
android:key="regional_preference_first_day_of_week">
<com.android.settingslib.widget.TopIntroPreference
+ android:key="first_day_of_week_intro"
android:title="@string/regional_preferences_option_page_sub_title"
android:persistent="false" />
diff --git a/res/xml/regional_preferences_temperature.xml b/res/xml/regional_preferences_temperature.xml
index 2519dfa..888a0ec 100644
--- a/res/xml/regional_preferences_temperature.xml
+++ b/res/xml/regional_preferences_temperature.xml
@@ -21,6 +21,7 @@
android:key="regional_preference_temperature">
<com.android.settingslib.widget.TopIntroPreference
+ android:key="temperature_unit_intro"
android:title="@string/regional_preferences_option_page_sub_title"
android:persistent="false" />
diff --git a/res/xml/security_settings_fingerprint.xml b/res/xml/security_settings_fingerprint.xml
index 9c8b0a3..32f0924 100644
--- a/res/xml/security_settings_fingerprint.xml
+++ b/res/xml/security_settings_fingerprint.xml
@@ -40,7 +40,16 @@
android:title="@string/security_settings_require_screen_on_to_auth_title"
android:summary="@string/security_settings_require_screen_on_to_auth_description"
settings:keywords="@string/security_settings_require_screen_on_to_auth_keywords"
- settings:controller="com.android.settings.biometrics.fingerprint.FingerprintSettingsRequireScreenOnToAuthPreferenceController" />
+ settings:controller="com.android.settings.biometrics.fingerprint.FingerprintSettingsRequireScreenOnToAuthPreferenceController"
+ settings:isPreferenceVisible="false"/>
+
+ <com.android.settingslib.RestrictedSwitchPreference
+ android:key="@string/security_settings_screen_off_unlock_udfps_key"
+ android:title="@string/security_settings_screen_off_unlock_udfps_title"
+ android:summary="@string/security_settings_screen_off_unlock_udfps_description"
+ settings:keywords="@string/security_settings_screen_off_unlock_udfps_keywords"
+ settings:controller="com.android.settings.biometrics.fingerprint.FingerprintSettingsScreenOffUnlockUdfpsPreferenceController"
+ settings:isPreferenceVisible="false"/>
</PreferenceCategory>
<PreferenceCategory
diff --git a/res/xml/special_access.xml b/res/xml/special_access.xml
index d0fe980..f3a5f32 100644
--- a/res/xml/special_access.xml
+++ b/res/xml/special_access.xml
@@ -107,6 +107,11 @@
settings:controller="com.android.settings.spa.app.specialaccess.UseFullScreenIntentPreferenceController" />
<Preference
+ android:key="write_system_preferences"
+ android:title="@string/write_system_preferences_page_title"
+ settings:controller="com.android.settings.spa.app.specialaccess.WriteSystemPreferencesPreferenceController" />
+
+ <Preference
android:key="picture_in_picture"
android:title="@string/picture_in_picture_title"
android:order="-1100"
diff --git a/res/xml/system_language_picker.xml b/res/xml/system_language_picker.xml
new file mode 100644
index 0000000..cccf56e
--- /dev/null
+++ b/res/xml/system_language_picker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2024 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.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/language_selection_title"
+ android:key="key_system_language_picker_page">
+
+ <PreferenceCategory
+ android:key="system_language_suggested_category"
+ android:title="@string/suggested_locales_title"/>
+
+ <PreferenceCategory
+ android:key="system_language_all_supported_category"
+ android:title="@string/all_supported_locales_title"/>
+
+</PreferenceScreen>
diff --git a/res/xml/terms_of_address.xml b/res/xml/terms_of_address.xml
index 90cbe52..3c1ba31 100644
--- a/res/xml/terms_of_address.xml
+++ b/res/xml/terms_of_address.xml
@@ -24,22 +24,22 @@
android:title="@string/terms_of_address_intro_title"
android:persistent="false"/>
- <com.android.settings.widget.TickButtonPreference
+ <com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="key_terms_of_address_not_specified"
android:title="@string/terms_of_address_not_specified"
settings:controller="com.android.settings.localepicker.TermsOfAddressNotSpecifiedController"/>
- <com.android.settings.widget.TickButtonPreference
+ <com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="key_terms_of_address_feminine"
android:title="@string/terms_of_address_feminine"
settings:controller="com.android.settings.localepicker.TermsOfAddressFeminineController"/>
- <com.android.settings.widget.TickButtonPreference
+ <com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="key_terms_of_address_masculine"
android:title="@string/terms_of_address_masculine"
settings:controller="com.android.settings.localepicker.TermsOfAddressMasculineController"/>
- <com.android.settings.widget.TickButtonPreference
+ <com.android.settingslib.widget.SelectorWithWidgetPreference
android:key="key_terms_of_address_neutral"
android:title="@string/terms_of_address_neutral"
settings:controller="com.android.settings.localepicker.TermsOfAddressNeutralController"/>
diff --git a/res/xml/wifi_calling_settings.xml b/res/xml/wifi_calling_settings.xml
index c45f702..2ce408b 100644
--- a/res/xml/wifi_calling_settings.xml
+++ b/res/xml/wifi_calling_settings.xml
@@ -16,7 +16,7 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:key="wifi_calling_settings"
+ android:key="wifi_calling"
android:title="@string/wifi_calling_settings_title">
<com.android.settings.widget.SettingsMainSwitchPreference
diff --git a/src/com/android/settings/MainClearConfirm.java b/src/com/android/settings/MainClearConfirm.java
index c9887e8..5aee5de 100644
--- a/src/com/android/settings/MainClearConfirm.java
+++ b/src/com/android/settings/MainClearConfirm.java
@@ -17,6 +17,8 @@
package com.android.settings;
+import static android.content.Context.MODE_PRIVATE;
+
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import android.app.ProgressDialog;
@@ -25,6 +27,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -33,6 +36,7 @@
import android.os.UserManager;
import android.service.oemlock.OemLockManager;
import android.service.persistentdata.PersistentDataBlockManager;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -42,6 +46,7 @@
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
+import com.android.settings.network.telephony.SubscriptionActionDialogActivity;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.template.FooterBarMixin;
@@ -90,7 +95,7 @@
} else {
pdbManager = null;
}
-
+ setSimDialogProgressState();
if (shouldWipePersistentDataBlock(pdbManager)) {
new AsyncTask<Void, Void, Void>() {
@@ -128,6 +133,17 @@
} else {
doMainClear();
}
+
+ }
+
+ private void setSimDialogProgressState() {
+ if (getActivity() != null) {
+ final SharedPreferences prefs = getActivity().getSharedPreferences(
+ SubscriptionActionDialogActivity.SIM_ACTION_DIALOG_PREFS, MODE_PRIVATE);
+ prefs.edit().putInt(SubscriptionActionDialogActivity.KEY_PROGRESS_STATE,
+ SubscriptionActionDialogActivity.PROGRESS_IS_SHOWING).apply();
+ Log.d(TAG, "SIM dialog setProgressState: 1");
+ }
}
private ProgressDialog getProgressDialog() {
diff --git a/src/com/android/settings/PreferenceRestrictionMixin.kt b/src/com/android/settings/PreferenceRestrictionMixin.kt
new file mode 100644
index 0000000..8a36407
--- /dev/null
+++ b/src/com/android/settings/PreferenceRestrictionMixin.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2024 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.settings
+
+import android.content.Context
+import android.os.UserHandle
+import android.os.UserManager
+import androidx.annotation.CallSuper
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin
+import com.android.settingslib.RestrictedLockUtilsInternal
+import com.android.settingslib.metadata.PreferenceRestrictionProvider
+
+/** Mixin to support restriction. */
+interface PreferenceRestrictionMixin : PreferenceRestrictionProvider {
+
+ /**
+ * Keys for restriction.
+ *
+ * Preference is restricted when **ANY** key in the list is restricted.
+ */
+ val restrictionKeys: Array<String>
+
+ val useAdminDisabledSummary: Boolean
+ get() = false
+
+ @CallSuper fun isEnabled(context: Context) = !context.hasBaseUserRestriction(restrictionKeys)
+
+ override fun isRestricted(context: Context) =
+ context.getRestrictionEnforcedAdmin(restrictionKeys) != null
+}
+
+/** Returns the admin that has enforced restriction on given keys. */
+fun Context.getRestrictionEnforcedAdmin(restrictionKeys: Array<String>): EnforcedAdmin? {
+ val userId = UserHandle.myUserId()
+ return restrictionKeys.firstNotNullOfOrNull {
+ RestrictedLockUtilsInternal.checkIfRestrictionEnforced(this, it, userId)
+ }
+}
+
+/** Returns if there is **any** base user restriction on given keys. */
+fun Context.hasBaseUserRestriction(restrictionKeys: Array<String>): Boolean {
+ val userManager = getSystemService(UserManager::class.java) ?: return false
+ val userHandle = UserHandle.of(UserHandle.myUserId())
+ return restrictionKeys.any { userManager.hasBaseUserRestriction(it, userHandle) }
+}
diff --git a/src/com/android/settings/RestrictedListPreference.java b/src/com/android/settings/RestrictedListPreference.java
index d75f1b8..d5bc341 100644
--- a/src/com/android/settings/RestrictedListPreference.java
+++ b/src/com/android/settings/RestrictedListPreference.java
@@ -33,6 +33,7 @@
import android.widget.ListAdapter;
import android.widget.ListView;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AlertDialog.Builder;
import androidx.preference.ListPreferenceDialogFragmentCompat;
@@ -40,11 +41,14 @@
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
+import com.android.settingslib.RestrictedPreferenceHelperProvider;
import java.util.ArrayList;
import java.util.List;
-public class RestrictedListPreference extends CustomListPreference {
+public class RestrictedListPreference extends CustomListPreference implements
+ RestrictedPreferenceHelperProvider {
+
private final RestrictedPreferenceHelper mHelper;
private final List<RestrictedItem> mRestrictedItems = new ArrayList<>();
private boolean mRequiresActiveUnlockedProfile = false;
@@ -62,6 +66,11 @@
}
@Override
+ public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
+ return mHelper;
+ }
+
+ @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mHelper.onBindViewHolder(holder);
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index b04f3af..09ee97f 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -111,6 +111,7 @@
public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ }
public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }
public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ }
+ public static class AppStorageSettingsActivity extends SettingsActivity { /* empty */ }
public static class ManageAssistActivity extends SettingsActivity { /* empty */ }
public static class HighPowerApplicationsActivity extends SettingsActivity { /* empty */ }
public static class BackgroundCheckSummaryActivity extends SettingsActivity { /* empty */ }
@@ -484,6 +485,7 @@
public static class NetworkDashboardActivity extends SettingsActivity {}
public static class ConnectedDeviceDashboardActivity extends SettingsActivity {}
public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ }
+ public static class PowerUsageAdvancedActivity extends SettingsActivity { /* empty */ }
public static class StorageDashboardActivity extends SettingsActivity {}
public static class AccountDashboardActivity extends SettingsActivity {}
public static class SystemDashboardActivity extends SettingsActivity {}
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index a79ba80..c81d504 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -73,6 +73,7 @@
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.widget.SettingsThemeHelper;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -169,6 +170,9 @@
private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
+ private static final int EXPRESSIVE_BACK_ICON =
+ com.android.settingslib.collapsingtoolbar.R.drawable.settingslib_expressive_icon_back;
+
private String mFragmentClass;
private String mHighlightMenuKey;
@@ -301,10 +305,17 @@
// If this is in setup flow, don't apply theme. Because light theme needs to be applied
// in SettingsBaseActivity#onCreate().
if (isSubSettings(intent) && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
- setTheme(R.style.Theme_SubSettings);
+ int themeId = SettingsThemeHelper.isExpressiveTheme(this)
+ ? R.style.Theme_SubSettings_Expressive : R.style.Theme_SubSettings;
+ setTheme(themeId);
}
setContentView(R.layout.settings_main_prefs);
+ mMainSwitch = findViewById(R.id.switch_bar);
+ if (mMainSwitch != null) {
+ mMainSwitch.setMetricsCategory(lookupMetricsCategory());
+ mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1);
+ }
getSupportFragmentManager().addOnBackStackChangedListener(this);
@@ -324,12 +335,6 @@
launchSettingFragment(initialFragmentName, intent);
}
- mMainSwitch = findViewById(R.id.switch_bar);
- if (mMainSwitch != null) {
- mMainSwitch.setMetricsCategory(lookupMetricsCategory());
- mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1);
- }
-
// see if we should show Back/Next buttons
if (intent.getBooleanExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false)) {
@@ -388,6 +393,9 @@
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
+ if (SettingsThemeHelper.isExpressiveTheme(this)) {
+ actionBar.setHomeAsUpIndicator(EXPRESSIVE_BACK_ICON);
+ }
actionBar.setDisplayShowTitleEnabled(true);
}
}
diff --git a/src/com/android/settings/SettingsApplication.java b/src/com/android/settings/SettingsApplication.java
index b1177dd..99d3d92 100644
--- a/src/com/android/settings/SettingsApplication.java
+++ b/src/com/android/settings/SettingsApplication.java
@@ -24,6 +24,7 @@
import android.net.Uri;
import android.provider.Settings;
import android.util.FeatureFlagUtils;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -45,6 +46,7 @@
import com.android.settingslib.metadata.PreferenceScreenMetadata;
import com.android.settingslib.metadata.PreferenceScreenRegistry;
import com.android.settingslib.metadata.ProvidePreferenceScreenOptions;
+import com.android.settingslib.preference.PreferenceBindingFactory;
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -58,8 +60,9 @@
)
public class SettingsApplication extends Application {
+ private static final String TAG = "SettingsApplication";
private WeakReference<SettingsHomepageActivity> mHomeActivity = new WeakReference<>(null);
- @Nullable private BiometricsEnvironment mBiometricsEnvironment;
+ @Nullable volatile private BiometricsEnvironment mBiometricsEnvironment;
@Override
protected void attachBaseContext(Context base) {
@@ -74,6 +77,7 @@
if (Flags.catalyst()) {
PreferenceScreenRegistry.INSTANCE.setPreferenceScreensSupplier(
this::getPreferenceScreens);
+ PreferenceBindingFactory.setDefaultFactory(new SettingsPreferenceBindingFactory());
}
BackupRestoreStorageManager.getInstance(this)
@@ -138,20 +142,23 @@
@Nullable
public BiometricsEnvironment getBiometricEnvironment() {
- if (Flags.fingerprintV2Enrollment()) {
- if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
- final FingerprintManager fpm = getSystemService(FingerprintManager.class);
- if (mBiometricsEnvironment == null) {
- mBiometricsEnvironment = new BiometricsEnvironment(this, fpm);
+ BiometricsEnvironment localEnvironment = mBiometricsEnvironment;
+ if (localEnvironment == null) {
+ synchronized (this) {
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
+ return null;
}
- return mBiometricsEnvironment;
-
- } else {
- return null;
+ final FingerprintManager fpm = getSystemService(FingerprintManager.class);
+ localEnvironment = mBiometricsEnvironment;
+ if (fpm != null && localEnvironment == null) {
+ mBiometricsEnvironment = localEnvironment = new BiometricsEnvironment(this,
+ fpm);
+ } else {
+ Log.e(TAG, "Error when creating environment, fingerprint manager was null");
+ }
}
-
}
- return null;
+ return localEnvironment;
}
@Override
diff --git a/src/com/android/settings/SettingsPreferenceBindingFactory.kt b/src/com/android/settings/SettingsPreferenceBindingFactory.kt
new file mode 100644
index 0000000..b0fa4d9
--- /dev/null
+++ b/src/com/android/settings/SettingsPreferenceBindingFactory.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2024 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.settings
+
+import androidx.preference.Preference
+import com.android.settingslib.RestrictedPreferenceHelperProvider
+import com.android.settingslib.metadata.PreferenceHierarchyNode
+import com.android.settingslib.preference.DefaultPreferenceBindingFactory
+import com.android.settingslib.preference.PreferenceBinding
+
+/** Preference binding factory for settings app. */
+class SettingsPreferenceBindingFactory : DefaultPreferenceBindingFactory() {
+ override fun bind(
+ preference: Preference,
+ node: PreferenceHierarchyNode,
+ preferenceBinding: PreferenceBinding?,
+ ) {
+ super.bind(preference, node, preferenceBinding)
+
+ // handle restriction consistently
+ val metadata = node.metadata
+ if (metadata is PreferenceRestrictionMixin) {
+ if (preference is RestrictedPreferenceHelperProvider) {
+ preference.getRestrictedPreferenceHelper().apply {
+ useAdminDisabledSummary(metadata.useAdminDisabledSummary)
+ val context = preference.context
+ val restrictionKeys = metadata.restrictionKeys
+ if (!context.hasBaseUserRestriction(restrictionKeys)) {
+ setDisabledByAdmin(context.getRestrictionEnforcedAdmin(restrictionKeys))
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 66397c0..66ccb6f 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -16,6 +16,8 @@
package com.android.settings;
+import static com.android.settings.SettingsActivity.EXTRA_FRAGMENT_ARG_KEY;
+
import android.app.Activity;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
@@ -33,6 +35,8 @@
import android.view.ViewGroup;
import android.widget.Button;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.XmlRes;
import androidx.fragment.app.DialogFragment;
@@ -45,12 +49,14 @@
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.flags.Flags;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settings.widget.HighlightablePreferenceGroupAdapter;
import com.android.settings.widget.LoadingViewController;
import com.android.settingslib.CustomDialogPreferenceCompat;
import com.android.settingslib.CustomEditTextPreferenceCompat;
import com.android.settingslib.core.instrumentation.Instrumentable;
+import com.android.settingslib.preference.PreferenceScreenCreator;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.widget.LayoutPreference;
@@ -173,6 +179,24 @@
}
}
+ @Override
+ protected final int getPreferenceScreenResId(@NonNull Context context) {
+ return getPreferenceScreenResId();
+ }
+
+ /** Returns if catalyst is enabled on current screen. */
+ protected final boolean isCatalystEnabled() {
+ return getPreferenceScreenCreator() != null;
+ }
+
+ protected @Nullable PreferenceScreenCreator getPreferenceScreenCreator() {
+ if (!Flags.catalyst()) {
+ return null;
+ }
+ Context context = getContext();
+ return context != null ? getPreferenceScreenCreator(context) : null;
+ }
+
public View setPinnedHeaderView(int layoutResId) {
final LayoutInflater inflater = getActivity().getLayoutInflater();
final View pinnedHeader =
@@ -367,9 +391,13 @@
@Override
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
final Bundle arguments = getArguments();
- mAdapter = new HighlightablePreferenceGroupAdapter(preferenceScreen,
- arguments == null
- ? null : arguments.getString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY),
+ String key = arguments == null ? null : arguments.getString(EXTRA_FRAGMENT_ARG_KEY);
+ if (Flags.catalyst() && key == null) {
+ Activity activity = getActivity();
+ Intent intent = activity != null ? activity.getIntent() : null;
+ key = intent != null ? intent.getStringExtra(EXTRA_FRAGMENT_ARG_KEY) : null;
+ }
+ mAdapter = new HighlightablePreferenceGroupAdapter(preferenceScreen, key,
mPreferenceHighlighted);
return mAdapter;
}
diff --git a/src/com/android/settings/SettingsService.kt b/src/com/android/settings/SettingsService.kt
index 2cd706b..70713c3 100644
--- a/src/com/android/settings/SettingsService.kt
+++ b/src/com/android/settings/SettingsService.kt
@@ -16,15 +16,44 @@
package com.android.settings
+import android.app.Application
import android.content.Intent
-import android.os.IBinder
import com.android.settings.flags.Flags
+import com.android.settingslib.graph.PreferenceGetterRequest
+import com.android.settingslib.graph.PreferenceSetterRequest
+import com.android.settingslib.ipc.ApiPermissionChecker
import com.android.settingslib.service.PreferenceService
/** Service to expose settings APIs. */
-class SettingsService : PreferenceService({ _, _, _ -> true }) {
+class SettingsService :
+ PreferenceService(
+ graphPermissionChecker = ApiPermissionChecker.alwaysAllow(),
+ setterPermissionChecker = SetterPermissionChecker(),
+ getterPermissionChecker = GetterPermissionChecker(),
+ ) {
- override fun onBind(intent: Intent): IBinder? {
- return if (!Flags.catalystService()) null else super.onBind(intent)
- }
+ override fun onBind(intent: Intent) =
+ if (Flags.catalystService()) super.onBind(intent) else null
+}
+
+/** Permission checker for external setter API. */
+private class SetterPermissionChecker : ApiPermissionChecker<PreferenceSetterRequest> {
+
+ override fun hasPermission(
+ application: Application,
+ myUid: Int,
+ callingUid: Int,
+ request: PreferenceSetterRequest,
+ ) = true
+}
+
+/** Permission checker for external getter API. */
+private class GetterPermissionChecker : ApiPermissionChecker<PreferenceGetterRequest> {
+
+ override fun hasPermission(
+ application: Application,
+ myUid: Int,
+ callingUid: Int,
+ request: PreferenceGetterRequest,
+ ) = true
}
diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java
index 4950650..210543f 100644
--- a/src/com/android/settings/UserCredentialsSettings.java
+++ b/src/com/android/settings/UserCredentialsSettings.java
@@ -291,23 +291,23 @@
// Certificates can be installed into SYSTEM_UID or WIFI_UID through CertInstaller.
final int myUserId = UserHandle.myUserId();
final int systemUid = UserHandle.getUid(myUserId, Process.SYSTEM_UID);
- final int wifiUid = UserHandle.getUid(myUserId, Process.WIFI_UID);
-
try {
KeyStore processKeystore = KeyStore.getInstance(KEYSTORE_PROVIDER);
processKeystore.load(null);
KeyStore wifiKeystore = null;
- if (myUserId == 0) {
- wifiKeystore = KeyStore.getInstance(KEYSTORE_PROVIDER);
- wifiKeystore.load(new AndroidKeyStoreLoadStoreParameter(
- KeyProperties.NAMESPACE_WIFI));
- }
List<Credential> credentials = new ArrayList<>();
credentials.addAll(getCredentialsForUid(processKeystore, systemUid).values());
- if (wifiKeystore != null) {
- credentials.addAll(getCredentialsForUid(wifiKeystore, wifiUid).values());
+
+ UserManager userManager = getContext().getSystemService(UserManager.class);
+ if (userManager.isAdminUser()) {
+ wifiKeystore = KeyStore.getInstance(KEYSTORE_PROVIDER);
+ wifiKeystore.load(
+ new AndroidKeyStoreLoadStoreParameter(KeyProperties.NAMESPACE_WIFI));
+ credentials.addAll(
+ getCredentialsForUid(wifiKeystore, Process.WIFI_UID).values());
}
+
return credentials;
} catch (Exception e) {
throw new RuntimeException("Failed to load credentials from Keystore.", e);
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 481ad65..adda094 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1516,13 +1516,13 @@
final UserManager userManager = context.getSystemService(
UserManager.class);
final int status = biometricManager.canAuthenticate(getEffectiveUserId(
- userManager, userId), BiometricManager.Authenticators.MANDATORY_BIOMETRICS);
+ userManager, userId), BiometricManager.Authenticators.IDENTITY_CHECK);
switch(status) {
case BiometricManager.BIOMETRIC_SUCCESS:
return BiometricStatus.OK;
case BiometricManager.BIOMETRIC_ERROR_LOCKOUT:
return BiometricStatus.LOCKOUT;
- case BiometricManager.BIOMETRIC_ERROR_MANDATORY_NOT_ACTIVE:
+ case BiometricManager.BIOMETRIC_ERROR_IDENTITY_CHECK_NOT_ACTIVE:
case BiometricManager.BIOMETRIC_ERROR_NOT_ENABLED_FOR_APPS:
return BiometricStatus.NOT_ACTIVE;
default:
@@ -1582,7 +1582,7 @@
final Intent intent = new Intent();
if (android.hardware.biometrics.Flags.mandatoryBiometrics()) {
intent.putExtra(BIOMETRIC_PROMPT_AUTHENTICATORS,
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS);
+ BiometricManager.Authenticators.IDENTITY_CHECK);
}
intent.putExtra(BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT,
resources.getString(R.string.cancel));
diff --git a/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragment.java b/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragment.java
index 6eb2112..7713e14 100644
--- a/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragment.java
@@ -19,12 +19,18 @@
import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
/** Settings fragment containing bluetooth audio routing. */
+@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class AccessibilityAudioRoutingFragment extends RestrictedDashboardFragment {
private static final String TAG = "AccessibilityAudioRoutingFragment";
@@ -47,6 +53,25 @@
return TAG;
}
+ @VisibleForTesting
+ static boolean isPageSearchEnabled(Context context) {
+ if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_AUDIO_ROUTING)) {
+ return false;
+ }
+
+ final HearingAidHelper mHelper = new HearingAidHelper(context);
+ return mHelper.isHearingAidSupported();
+ }
+
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider(R.xml.accessibility_audio_routing_fragment);
+ new BaseSearchIndexProvider(R.xml.accessibility_audio_routing_fragment) {
+ @Override
+ protected boolean isPageSearchEnabled(Context context) {
+ if (Flags.fixA11ySettingsSearch()) {
+ return AccessibilityAudioRoutingFragment.isPageSearchEnabled(context);
+ } else {
+ return super.isPageSearchEnabled(context);
+ }
+ }
+ };
}
diff --git a/src/com/android/settings/accessibility/AccessibilityHearingAidsFragment.java b/src/com/android/settings/accessibility/AccessibilityHearingAidsFragment.java
index 0f551b0..09e2d97 100644
--- a/src/com/android/settings/accessibility/AccessibilityHearingAidsFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityHearingAidsFragment.java
@@ -26,6 +26,7 @@
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceCategory;
import com.android.internal.accessibility.AccessibilityShortcutController;
@@ -118,6 +119,21 @@
return getText(R.string.accessibility_hearing_device_shortcut_title);
}
+ @VisibleForTesting
+ static boolean isPageSearchEnabled(Context context) {
+ final HearingAidHelper mHelper = new HearingAidHelper(context);
+ return mHelper.isHearingAidSupported();
+ }
+
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider(R.xml.accessibility_hearing_aids);
+ new BaseSearchIndexProvider(R.xml.accessibility_hearing_aids) {
+ @Override
+ protected boolean isPageSearchEnabled(Context context) {
+ if (Flags.fixA11ySettingsSearch()) {
+ return AccessibilityHearingAidsFragment.isPageSearchEnabled(context);
+ } else {
+ return super.isPageSearchEnabled(context);
+ }
+ }
+ };
}
diff --git a/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
deleted file mode 100644
index 19db266..0000000
--- a/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2024 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.settings.accessibility;
-
-import static android.app.Activity.RESULT_CANCELED;
-
-import android.app.settings.SettingsEnums;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceScreen;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.settings.R;
-import com.android.settings.display.AutoBrightnessSettings;
-import com.android.settingslib.Utils;
-import com.android.settingslib.widget.FooterPreference;
-
-import com.google.android.setupcompat.template.FooterBarMixin;
-import com.google.android.setupdesign.GlifPreferenceLayout;
-
-/**
- * Fragment for adaptive brightness settings in the SetupWizard.
- */
-public class AutoBrightnessPreferenceFragmentForSetupWizard extends AutoBrightnessSettings {
-
- private static final String FOOTER_PREFERENCE_KEY = "auto_brightness_footer";
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- updateFooterContentDescription();
-
- if (view instanceof GlifPreferenceLayout) {
- final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
- final String title = getContext().getString(
- R.string.auto_brightness_title);
- final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
- icon.setTintList(Utils.getColorAttr(getContext(), android.R.attr.colorPrimary));
- AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
- /* description= */ null, icon);
-
- final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
- AccessibilitySetupWizardUtils.setPrimaryButton(getContext(), mixin, R.string.done,
- () -> {
- setResult(RESULT_CANCELED);
- finish();
- });
- }
- }
-
- @NonNull
- @Override
- public RecyclerView onCreateRecyclerView(@NonNull LayoutInflater inflater,
- @NonNull ViewGroup parent, @Nullable Bundle savedInstanceState) {
- if (parent instanceof GlifPreferenceLayout) {
- final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
- return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
- }
- return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
- }
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.SUW_ACCESSIBILITY_AUTO_BRIGHTNESS;
- }
-
- private void updateFooterContentDescription() {
- final PreferenceScreen screen = getPreferenceScreen();
- final FooterPreference footerPreference = screen.findPreference(FOOTER_PREFERENCE_KEY);
- if (footerPreference != null) {
- String title = getString(R.string.auto_brightness_content_description_title);
- final StringBuilder sb = new StringBuilder();
- sb.append(title).append("\n\n").append(footerPreference.getTitle());
- footerPreference.setContentDescription(sb);
- }
- }
-}
diff --git a/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceController.java b/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceController.java
index c8692a1..6d78469 100644
--- a/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceController.java
+++ b/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceController.java
@@ -18,11 +18,14 @@
import android.bluetooth.BluetoothProfile;
import android.content.Context;
+import android.util.Log;
+import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.dashboard.DashboardFragment;
@@ -32,6 +35,9 @@
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.search.SearchIndexableRaw;
+
+import java.util.List;
/**
* Controller to update the {@link androidx.preference.PreferenceCategory} for all
@@ -44,6 +50,7 @@
BluetoothCallback {
private static final String TAG = "AvailableHearingDevicePreferenceController";
+ private static final String SEARCH_DATA_KEY_PREFIX = "a11y_available_hearing_device";
private BluetoothDeviceUpdater mAvailableHearingDeviceUpdater;
private final LocalBluetoothManager mLocalBluetoothManager;
@@ -56,6 +63,14 @@
context);
}
+ @VisibleForTesting
+ void init(AvailableHearingDeviceUpdater availableHearingDeviceUpdater) {
+ if (mAvailableHearingDeviceUpdater != null) {
+ throw new IllegalStateException("Should not call init() more than 1 time.");
+ }
+ mAvailableHearingDeviceUpdater = availableHearingDeviceUpdater;
+ }
+
/**
* Initializes objects in this controller. Need to call this before onStart().
*
@@ -107,4 +122,34 @@
getMetricsCategory());
}
}
+
+ @Override
+ public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) {
+ if (Flags.fixA11ySettingsSearch()) {
+ if (mLocalBluetoothManager == null) {
+ Log.d(TAG, "Bluetooth is not supported");
+ return;
+ }
+
+ for (CachedBluetoothDevice cachedDevice :
+ mLocalBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy()) {
+
+ if (!AvailableHearingDeviceUpdater.isAvailableHearingDevice(cachedDevice)) {
+ continue;
+ }
+
+ SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+ // Include the identity address and add prefix to ensure the key is unique and
+ // distinguish from Bluetooth's connected devices.
+ data.key = SEARCH_DATA_KEY_PREFIX
+ + cachedDevice.getName() + cachedDevice.getIdentityAddress();
+ data.title = cachedDevice.getName();
+ data.summaryOn = mContext.getString(R.string.accessibility_hearingaid_title);
+ data.screenTitle = mContext.getString(R.string.accessibility_hearingaid_title);
+ rawData.add(data);
+ }
+ } else {
+ super.updateDynamicRawDataToIndex(rawData);
+ }
+ }
}
diff --git a/src/com/android/settings/accessibility/AvailableHearingDeviceUpdater.java b/src/com/android/settings/accessibility/AvailableHearingDeviceUpdater.java
index 31d069a..b11e328 100644
--- a/src/com/android/settings/accessibility/AvailableHearingDeviceUpdater.java
+++ b/src/com/android/settings/accessibility/AvailableHearingDeviceUpdater.java
@@ -16,6 +16,7 @@
package com.android.settings.accessibility;
+import android.bluetooth.BluetoothDevice;
import android.content.Context;
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
@@ -34,10 +35,16 @@
super(context, devicePreferenceCallback, metricsCategory);
}
+ static boolean isAvailableHearingDevice(CachedBluetoothDevice cachedDevice) {
+ final BluetoothDevice device = cachedDevice.getDevice();
+ return cachedDevice.isHearingAidDevice()
+ && device.getBondState() == BluetoothDevice.BOND_BONDED
+ && device.isConnected();
+ }
+
@Override
public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
- return cachedDevice.isHearingAidDevice()
- && isDeviceConnected(cachedDevice)
+ return isAvailableHearingDevice(cachedDevice)
&& isDeviceInCachedDevicesList(cachedDevice);
}
diff --git a/src/com/android/settings/accessibility/CaptioningCustomController.java b/src/com/android/settings/accessibility/CaptioningCustomController.java
index 28a99a7..1b5b7e1 100644
--- a/src/com/android/settings/accessibility/CaptioningCustomController.java
+++ b/src/com/android/settings/accessibility/CaptioningCustomController.java
@@ -16,6 +16,7 @@
package com.android.settings.accessibility;
+import android.annotation.Nullable;
import android.content.ContentResolver;
import android.content.Context;
import android.os.Handler;
@@ -39,6 +40,7 @@
public class CaptioningCustomController extends BasePreferenceController
implements LifecycleObserver, OnStart, OnStop {
+ @Nullable
private Preference mCustom;
private final CaptionHelper mCaptionHelper;
private final ContentResolver mContentResolver;
@@ -50,32 +52,41 @@
);
public CaptioningCustomController(Context context, String preferenceKey) {
- super(context, preferenceKey);
- mCaptionHelper = new CaptionHelper(context);
- mContentResolver = context.getContentResolver();
- mSettingsContentObserver = new AccessibilitySettingsContentObserver(
- new Handler(Looper.getMainLooper()));
- mSettingsContentObserver.registerKeysToObserverCallback(CAPTIONING_FEATURE_KEYS,
- key -> refreshShowingCustom());
+ this(context, preferenceKey, new CaptionHelper(context),
+ new AccessibilitySettingsContentObserver(new Handler(Looper.getMainLooper())));
}
@VisibleForTesting
- CaptioningCustomController(Context context, String preferenceKey,
+ CaptioningCustomController(
+ Context context, String preferenceKey, CaptionHelper captionHelper,
AccessibilitySettingsContentObserver contentObserver) {
- this(context, preferenceKey);
+ super(context, preferenceKey);
+ mCaptionHelper = new CaptionHelper(context);
+ mContentResolver = context.getContentResolver();
mSettingsContentObserver = contentObserver;
+ mSettingsContentObserver.registerKeysToObserverCallback(CAPTIONING_FEATURE_KEYS, key -> {
+ if (mCustom != null) {
+ mCustom.setVisible(shouldShowPreference());
+ }
+ });
}
@Override
public int getAvailabilityStatus() {
- return AVAILABLE;
+ if (com.android.settings.accessibility.Flags.fixA11ySettingsSearch()) {
+ return (shouldShowPreference()) ? AVAILABLE : AVAILABLE_UNSEARCHABLE;
+ } else {
+ return AVAILABLE;
+ }
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mCustom = screen.findPreference(getPreferenceKey());
- refreshShowingCustom();
+ if (mCustom != null) {
+ mCustom.setVisible(shouldShowPreference());
+ }
}
@Override
@@ -88,9 +99,7 @@
mSettingsContentObserver.unregister(mContentResolver);
}
- private void refreshShowingCustom() {
- final boolean isCustomPreset =
- mCaptionHelper.getRawUserStyle() == CaptioningManager.CaptionStyle.PRESET_CUSTOM;
- mCustom.setVisible(isCustomPreset);
+ private boolean shouldShowPreference() {
+ return mCaptionHelper.getRawUserStyle() == CaptioningManager.CaptionStyle.PRESET_CUSTOM;
}
}
diff --git a/src/com/android/settings/accessibility/CaptioningWindowColorController.java b/src/com/android/settings/accessibility/CaptioningWindowColorController.java
index 238a75a..b72b973 100644
--- a/src/com/android/settings/accessibility/CaptioningWindowColorController.java
+++ b/src/com/android/settings/accessibility/CaptioningWindowColorController.java
@@ -19,10 +19,12 @@
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
+import android.view.accessibility.CaptioningManager;
import android.view.accessibility.CaptioningManager.CaptionStyle;
import androidx.preference.PreferenceScreen;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.accessibility.ListDialogPreference.OnValueChangedListener;
import com.android.settings.core.BasePreferenceController;
@@ -34,14 +36,26 @@
private final CaptionHelper mCaptionHelper;
private int mCachedNonDefaultOpacity = CaptionStyle.COLOR_UNSPECIFIED;
- public CaptioningWindowColorController(Context context, String preferenceKey) {
+ @VisibleForTesting
+ CaptioningWindowColorController(Context context, String preferenceKey,
+ CaptionHelper captionHelper) {
super(context, preferenceKey);
- mCaptionHelper = new CaptionHelper(context);
+ mCaptionHelper = captionHelper;
+ }
+
+ public CaptioningWindowColorController(Context context, String preferenceKey) {
+ this(context, preferenceKey, new CaptionHelper(context));
}
@Override
public int getAvailabilityStatus() {
- return AVAILABLE;
+ if (com.android.settings.accessibility.Flags.fixA11ySettingsSearch()) {
+ return (mCaptionHelper.getRawUserStyle()
+ == CaptioningManager.CaptionStyle.PRESET_CUSTOM)
+ ? AVAILABLE : AVAILABLE_UNSEARCHABLE;
+ } else {
+ return AVAILABLE;
+ }
}
@Override
diff --git a/src/com/android/settings/accessibility/CaptioningWindowOpacityController.java b/src/com/android/settings/accessibility/CaptioningWindowOpacityController.java
index ef28803..0e6c6ff 100644
--- a/src/com/android/settings/accessibility/CaptioningWindowOpacityController.java
+++ b/src/com/android/settings/accessibility/CaptioningWindowOpacityController.java
@@ -18,9 +18,11 @@
import android.content.Context;
import android.content.res.Resources;
+import android.view.accessibility.CaptioningManager;
import androidx.preference.PreferenceScreen;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.accessibility.ListDialogPreference.OnValueChangedListener;
import com.android.settings.core.BasePreferenceController;
@@ -31,14 +33,26 @@
private final CaptionHelper mCaptionHelper;
- public CaptioningWindowOpacityController(Context context, String preferenceKey) {
+ @VisibleForTesting
+ CaptioningWindowOpacityController(Context context, String preferenceKey,
+ CaptionHelper captionHelper) {
super(context, preferenceKey);
- mCaptionHelper = new CaptionHelper(context);
+ mCaptionHelper = captionHelper;
+ }
+
+ public CaptioningWindowOpacityController(Context context, String preferenceKey) {
+ this(context, preferenceKey, new CaptionHelper(context));
}
@Override
public int getAvailabilityStatus() {
- return AVAILABLE;
+ if (com.android.settings.accessibility.Flags.fixA11ySettingsSearch()) {
+ return (mCaptionHelper.getRawUserStyle()
+ == CaptioningManager.CaptionStyle.PRESET_CUSTOM)
+ ? AVAILABLE : AVAILABLE_UNSEARCHABLE;
+ } else {
+ return AVAILABLE;
+ }
}
@Override
diff --git a/src/com/android/settings/accessibility/ColorAndMotionScreen.kt b/src/com/android/settings/accessibility/ColorAndMotionScreen.kt
index 20a71e3..909b08b 100644
--- a/src/com/android/settings/accessibility/ColorAndMotionScreen.kt
+++ b/src/com/android/settings/accessibility/ColorAndMotionScreen.kt
@@ -17,16 +17,19 @@
package com.android.settings.accessibility
import android.content.Context
-import com.android.settings.flags.Flags
import com.android.settings.R
+import com.android.settings.flags.Flags
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen
class ColorAndMotionScreen : PreferenceScreenCreator {
- override val key: String = KEY
- override val title: Int = R.string.accessibility_color_and_motion_title
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.accessibility_color_and_motion_title
override fun isFlagEnabled(context: Context) = Flags.catalystAccessibilityColorAndMotion()
@@ -36,8 +39,7 @@
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
-
companion object {
const val KEY = "accessibility_color_and_motion"
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java
index 9c8560b..8b37c8f 100644
--- a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java
@@ -18,8 +18,6 @@
import android.accessibilityservice.AccessibilityServiceInfo;
-import com.android.settingslib.accessibility.AccessibilityUtils;
-
/**
* Fragment that does not have toggle bar to turn on service to use.
*
@@ -37,29 +35,4 @@
super.onInstallSwitchPreferenceToggleSwitch();
mToggleServiceSwitchPreference.setVisible(false);
}
-
- /**
- * {@inheritDoc}
- *
- * Enables accessibility service only when user had allowed permission. Disables
- * accessibility service when shortcutPreference is unchecked.
- */
- @Override
- public void onToggleClicked(ShortcutPreference preference) {
- super.onToggleClicked(preference);
- boolean enabled = getArguments().getBoolean(AccessibilitySettings.EXTRA_CHECKED)
- && preference.isChecked();
- AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, enabled);
- }
-
- /**
- * {@inheritDoc}
- *
- * Enables accessibility service when user clicks permission allow button.
- */
- @Override
- void onAllowButtonFromShortcutToggleClicked() {
- super.onAllowButtonFromShortcutToggleClicked();
- AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, true);
- }
}
diff --git a/src/com/android/settings/accessibility/PaletteListPreference.java b/src/com/android/settings/accessibility/PaletteListPreference.java
index eec8b5a..c29113c 100644
--- a/src/com/android/settings/accessibility/PaletteListPreference.java
+++ b/src/com/android/settings/accessibility/PaletteListPreference.java
@@ -24,6 +24,7 @@
import static com.google.common.primitives.Ints.max;
import android.content.Context;
+import android.content.res.ColorStateList;
import android.graphics.Paint.FontMetrics;
import android.graphics.drawable.GradientDrawable;
import android.util.AttributeSet;
@@ -39,6 +40,7 @@
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
+import com.android.settingslib.Utils;
import com.google.common.primitives.Floats;
import com.google.common.primitives.Ints;
@@ -128,6 +130,8 @@
final List<Integer> paletteColors = getPaletteColors(context);
final List<String> paletteData = getPaletteData(context);
+ final ColorStateList textColor =
+ Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary);
final float textPadding =
context.getResources().getDimension(R.dimen.accessibility_layout_margin_start_end);
final String maxLengthData =
@@ -143,6 +147,7 @@
for (int i = 0; i < paletteData.size(); ++i) {
final TextView textView = new TextView(context);
textView.setText(paletteData.get(i));
+ textView.setTextColor(textColor);
textView.setHeight(paletteItemHeight);
textView.setPaddingRelative(Math.round(textPadding), 0, 0, 0);
textView.setGravity(Gravity.CENTER_VERTICAL);
diff --git a/src/com/android/settings/accessibility/SavedHearingDevicePreferenceController.java b/src/com/android/settings/accessibility/SavedHearingDevicePreferenceController.java
index 20e227c..c6f5141 100644
--- a/src/com/android/settings/accessibility/SavedHearingDevicePreferenceController.java
+++ b/src/com/android/settings/accessibility/SavedHearingDevicePreferenceController.java
@@ -17,17 +17,26 @@
package com.android.settings.accessibility;
import android.content.Context;
+import android.util.Log;
+import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
+import com.android.settings.bluetooth.Utils;
import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.search.SearchIndexableRaw;
+
+import java.util.List;
/**
* Controller to update the {@link androidx.preference.PreferenceCategory} for all
@@ -39,11 +48,23 @@
BaseBluetoothDevicePreferenceController implements LifecycleObserver, OnStart, OnResume,
OnStop {
+ private static final String TAG = "SavedHearingDevicePreferenceController";
+ private static final String SEARCH_DATA_KEY_PREFIX = "a11y_saved_hearing_device";
private BluetoothDeviceUpdater mSavedHearingDeviceUpdater;
+ private final LocalBluetoothManager mLocalBluetoothManager;
public SavedHearingDevicePreferenceController(Context context,
String preferenceKey) {
super(context, preferenceKey);
+ mLocalBluetoothManager = Utils.getLocalBluetoothManager(context);
+ }
+
+ @VisibleForTesting
+ void init(SavedHearingDeviceUpdater savedHearingDeviceUpdater) {
+ if (mSavedHearingDeviceUpdater != null) {
+ throw new IllegalStateException("Should not call init() more than 1 time.");
+ }
+ mSavedHearingDeviceUpdater = savedHearingDeviceUpdater;
}
/**
@@ -86,4 +107,34 @@
mSavedHearingDeviceUpdater.forceUpdate();
}
}
+
+ @Override
+ public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) {
+ if (Flags.fixA11ySettingsSearch()) {
+ if (mLocalBluetoothManager == null) {
+ Log.d(TAG, "Bluetooth is not supported");
+ return;
+ }
+
+ for (CachedBluetoothDevice cachedDevice :
+ mLocalBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy()) {
+
+ if (!SavedHearingDeviceUpdater.isSavedHearingAidDevice(cachedDevice)) {
+ continue;
+ }
+
+ SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+ // Include the identity address and add prefix to ensure the key is unique and
+ // distinguish from Bluetooth's connected devices.
+ data.key = SEARCH_DATA_KEY_PREFIX
+ + cachedDevice.getName() + cachedDevice.getIdentityAddress();
+ data.title = cachedDevice.getName();
+ data.summaryOn = mContext.getString(R.string.accessibility_hearingaid_title);
+ data.screenTitle = mContext.getString(R.string.accessibility_hearingaid_title);
+ rawData.add(data);
+ }
+ } else {
+ super.updateDynamicRawDataToIndex(rawData);
+ }
+ }
}
diff --git a/src/com/android/settings/accessibility/SavedHearingDeviceUpdater.java b/src/com/android/settings/accessibility/SavedHearingDeviceUpdater.java
index 1de9c72..2d42fb9 100644
--- a/src/com/android/settings/accessibility/SavedHearingDeviceUpdater.java
+++ b/src/com/android/settings/accessibility/SavedHearingDeviceUpdater.java
@@ -36,14 +36,16 @@
super(context, devicePreferenceCallback, /* showConnectedDevice= */ false, metricsCategory);
}
- @Override
- public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
+ static boolean isSavedHearingAidDevice(CachedBluetoothDevice cachedDevice) {
final BluetoothDevice device = cachedDevice.getDevice();
- final boolean isSavedHearingAidDevice = cachedDevice.isHearingAidDevice()
+ return cachedDevice.isHearingAidDevice()
&& device.getBondState() == BluetoothDevice.BOND_BONDED
&& !device.isConnected();
+ }
- return isSavedHearingAidDevice && isDeviceInCachedDevicesList(cachedDevice);
+ @Override
+ public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
+ return isSavedHearingAidDevice(cachedDevice) && isDeviceInCachedDevicesList(cachedDevice);
}
@Override
diff --git a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
index 3b254e9..71c7134 100644
--- a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
+++ b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
@@ -20,6 +20,7 @@
import android.accounts.Account;
import android.accounts.AuthenticatorDescription;
import android.content.ClipData;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
@@ -186,9 +187,9 @@
prefIntent, mUserHandle);
} else {
Log.e(TAG,
- "Refusing to launch authenticator intent because"
- + "it exploits Settings permissions: "
- + prefIntent);
+ "Refusing to launch authenticator intent because "
+ + "it exploits Settings permissions: "
+ + prefIntent);
}
return true;
}
@@ -242,13 +243,19 @@
}
/**
- * Determines if the supplied Intent is safe. A safe intent is one that is
- * will launch a exported=true activity or owned by the same uid as the
+ * Determines if the supplied Intent is safe. A safe intent is one that
+ * will launch an exported=true activity or owned by the same uid as the
* authenticator supplying the intent.
*/
- private boolean isSafeIntent(PackageManager pm, Intent intent, String acccountType) {
+ @VisibleForTesting
+ boolean isSafeIntent(PackageManager pm, Intent intent, String accountType) {
+ if (TextUtils.equals(intent.getScheme(), ContentResolver.SCHEME_CONTENT)) {
+ Log.e(TAG, "Intent with a content scheme is unsafe.");
+ return false;
+ }
+
AuthenticatorDescription authDesc =
- mAuthenticatorHelper.getAccountTypeDescription(acccountType);
+ mAuthenticatorHelper.getAccountTypeDescription(accountType);
ResolveInfo resolveInfo = pm.resolveActivityAsUser(intent, 0, mUserHandle.getIdentifier());
if (resolveInfo == null) {
return false;
diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
index 851d763..62c5910 100644
--- a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
+++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
@@ -16,8 +16,6 @@
package com.android.settings.applications;
-import static android.webkit.Flags.updateServiceV2;
-
import android.Manifest;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
@@ -173,11 +171,9 @@
}
// Keep WebView default package enabled.
- if (updateServiceV2()) {
- String packageName = mWebViewUpdateServiceWrapper.getDefaultWebViewPackageName();
- if (packageName != null) {
- keepEnabledPackages.add(packageName);
- }
+ String packageName = mWebViewUpdateServiceWrapper.getDefaultWebViewPackageName();
+ if (packageName != null) {
+ keepEnabledPackages.add(packageName);
}
keepEnabledPackages.addAll(getEnabledPackageAllowlist());
diff --git a/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java b/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java
index 0550a9a..db239aa 100644
--- a/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java
+++ b/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java
@@ -36,6 +36,7 @@
import android.app.AppGlobals;
import android.app.compat.CompatChanges;
import android.content.Context;
+import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.LauncherApps;
@@ -44,6 +45,7 @@
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.util.ArrayMap;
+import android.util.Log;
import android.util.SparseIntArray;
import androidx.annotation.NonNull;
@@ -71,6 +73,7 @@
private static final boolean DEFAULT_VALUE_ENABLE_USER_ASPECT_RATIO_FULLSCREEN = true;
final boolean mIsUserMinAspectRatioAppDefaultFlagEnabled = Flags.userMinAspectRatioAppDefault();
+ private final boolean mIgnoreActivityOrientationRequest;
private final Context mContext;
private final IPackageManager mIPm;
@@ -90,6 +93,8 @@
mUserAspectRatioA11yMap = new ArrayMap<>();
mUserAspectRatioOrder = new SparseIntArray();
mUserAspectRatioMap = getUserMinAspectRatioMapping();
+ mIgnoreActivityOrientationRequest = getValueFromDeviceConfig(
+ "ignore_activity_orientation_request", false);
}
/**
@@ -113,6 +118,24 @@
? aspectRatio : USER_MIN_ASPECT_RATIO_UNSET;
}
+ // TODO b/374903057 reuse method from ActivityRecord
+ boolean isUniversalResizeable(@NonNull String packageName, int userId) {
+ try {
+ final ApplicationInfo info = mIPm.getApplicationInfo(
+ packageName, 0 /* flags */, userId);
+ if (info == null || info.category == ApplicationInfo.CATEGORY_GAME) {
+ return false;
+ }
+ final boolean compatEnabled = Flags.universalResizableByDefault()
+ && info.isChangeEnabled(ActivityInfo.UNIVERSAL_RESIZABLE_BY_DEFAULT);
+ return compatEnabled || mIgnoreActivityOrientationRequest;
+ } catch (RemoteException e) {
+ Log.e("UserAspectRatioManager", "Could not access application info for "
+ + packageName + ":\n" + e);
+ return false;
+ }
+ }
+
/**
* @return corresponding string for {@link PackageManager.UserMinAspectRatio} value
*/
@@ -127,7 +150,7 @@
return appDefault;
}
- return isCurrentSelectionFromManufacturerOverride(packageName, userId, aspectRatio)
+ return isUnsetAndRequiresFullscreenOverride(packageName, userId, aspectRatio)
? getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_FULLSCREEN, packageName, userId)
: mUserAspectRatioMap.getOrDefault(aspectRatio, appDefault);
}
@@ -139,7 +162,7 @@
public CharSequence getAccessibleEntry(@PackageManager.UserMinAspectRatio int aspectRatio,
@NonNull String packageName) {
final int userId = mContext.getUserId();
- return isCurrentSelectionFromManufacturerOverride(packageName, userId, aspectRatio)
+ return isUnsetAndRequiresFullscreenOverride(packageName, userId, aspectRatio)
? getAccessibleEntry(USER_MIN_ASPECT_RATIO_FULLSCREEN, packageName)
: mUserAspectRatioA11yMap.getOrDefault(aspectRatio,
getUserMinAspectRatioEntry(aspectRatio, packageName, userId));
@@ -203,7 +226,7 @@
@PackageManager.UserMinAspectRatio int userOverride) {
return (userOverride != USER_MIN_ASPECT_RATIO_UNSET
&& userOverride != USER_MIN_ASPECT_RATIO_APP_DEFAULT)
- || isCurrentSelectionFromManufacturerOverride(app.packageName, getUserId(app.uid),
+ || isUnsetAndRequiresFullscreenOverride(app.packageName, getUserId(app.uid),
userOverride);
}
@@ -224,7 +247,7 @@
/**
* Whether the device manufacturer has overridden app's orientation to
* {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER} to force app to fullscreen
- * and app has not opted-out from the treatment
+ * or app is universal resizeable, and app has not opted-out from the treatment
*/
boolean isOverrideToFullscreenEnabled(String pkgName, int userId) {
Boolean appAllowsOrientationOverride = readComponentProperty(mContext.getPackageManager(),
@@ -232,7 +255,8 @@
return mIsUserMinAspectRatioAppDefaultFlagEnabled
&& hasAspectRatioOption(USER_MIN_ASPECT_RATIO_FULLSCREEN, pkgName)
&& !FALSE.equals(appAllowsOrientationOverride)
- && isFullscreenCompatChangeEnabled(pkgName, userId);
+ && (isFullscreenCompatChangeEnabled(pkgName, userId)
+ || isUniversalResizeable(pkgName, userId));
}
boolean isFullscreenCompatChangeEnabled(String pkgName, int userId) {
@@ -240,7 +264,11 @@
OVERRIDE_ANY_ORIENTATION_TO_USER, pkgName, UserHandle.of(userId));
}
- private boolean isCurrentSelectionFromManufacturerOverride(String pkgName, int userId,
+ /**
+ * Whether the aspect ratio is unset and we desire to interpret it as fullscreen rather than
+ * app default because of manufacturer override or because the app is universal resizeable
+ */
+ private boolean isUnsetAndRequiresFullscreenOverride(String pkgName, int userId,
@PackageManager.UserMinAspectRatio int aspectRatio) {
return aspectRatio == USER_MIN_ASPECT_RATIO_UNSET
&& isOverrideToFullscreenEnabled(pkgName, userId);
diff --git a/src/com/android/settings/applications/contacts/ContactsStoragePreferenceController.java b/src/com/android/settings/applications/contacts/ContactsStoragePreferenceController.java
index bc6931d..340a666 100644
--- a/src/com/android/settings/applications/contacts/ContactsStoragePreferenceController.java
+++ b/src/com/android/settings/applications/contacts/ContactsStoragePreferenceController.java
@@ -1,4 +1,3 @@
-
/*
* Copyright (C) 2024 The Android Open Source Project
*
@@ -16,16 +15,17 @@
*/
package com.android.settings.applications.contacts;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount;
+
import android.accounts.Account;
import android.content.Context;
import android.os.UserHandle;
-import android.provider.ContactsContract;
-
-import androidx.preference.PreferenceScreen;
+import android.provider.ContactsContract.RawContacts.DefaultAccount.DefaultAccountAndState;
+import android.provider.Flags;
+import android.util.Log;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
-import com.android.settings.flags.Flags;
import com.android.settingslib.accounts.AuthenticatorHelper;
/**
@@ -36,33 +36,61 @@
private final AuthenticatorHelper mAuthenticatorHelper;
+ private DefaultAccountAndState mCurrentDefaultAccountAndState;
+
public ContactsStoragePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mAuthenticatorHelper = new AuthenticatorHelper(mContext,
new UserHandle(UserHandle.myUserId()), null);
+ try {
+ mCurrentDefaultAccountAndState =
+ DefaultAccount.getDefaultAccountForNewContacts(mContext.getContentResolver());
+ } catch (IllegalStateException e) {
+ Log.e(TAG, "The default account is in an invalid state: " + e);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Failed to look up the default account: " + e);
+ }
}
@Override
public int getAvailabilityStatus() {
- return Flags.enableContactsDefaultAccountInSettings()
- ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ return (Flags.newDefaultAccountApiEnabled()
+ && mCurrentDefaultAccountAndState != null) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
@Override
public CharSequence getSummary() {
- Account currentDefaultAccount =
- ContactsContract.Settings.getDefaultAccount(mContext.getContentResolver());
- if (currentDefaultAccount == null) {
- return mContext.getResources().getString(
- R.string.contacts_storage_no_account_set);
+ if (mCurrentDefaultAccountAndState != null) {
+ // Re-fetch account in controller to refresh the latest set default account.
+ mCurrentDefaultAccountAndState =
+ DefaultAccount.getDefaultAccountForNewContacts(mContext.getContentResolver());
+ int currentDefaultAccountState = mCurrentDefaultAccountAndState.getState();
+ Account currentDefaultAccount = mCurrentDefaultAccountAndState.getAccount();
+ if (currentDefaultAccountState
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_NOT_SET) {
+ return mContext.getResources().getString(
+ R.string.contacts_storage_no_account_set_summary);
+ } else if (currentDefaultAccountState
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_LOCAL) {
+ return mContext.getResources().getString(
+ R.string.contacts_storage_local_account_summary);
+ } else if (currentDefaultAccountState
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_SIM) {
+ return mContext.getResources().getString(
+ R.string.sim_card_label);
+ } else if (currentDefaultAccountState
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD) {
+ String accountTypeLabel = (String) mAuthenticatorHelper.getLabelForType(mContext,
+ currentDefaultAccount.type);
+ // If there's no account type, or the account type is the same as the
+ // current default account name, just return the account name.
+ if (accountTypeLabel == null || accountTypeLabel.equals(
+ currentDefaultAccount.name)) {
+ return currentDefaultAccount.name;
+ }
+ return accountTypeLabel + " | " + currentDefaultAccount.name;
+ }
}
- String accountTypeLabel = (String) mAuthenticatorHelper.getLabelForType(mContext,
- currentDefaultAccount.type);
- // If there's no account type, or the account type is the same as the
- // current default account name, just return the account name.
- if (accountTypeLabel == null || accountTypeLabel.equals(currentDefaultAccount.name)) {
- return currentDefaultAccount.name;
- }
- return accountTypeLabel + " | " + currentDefaultAccount.name;
+ return "";
}
}
diff --git a/src/com/android/settings/applications/contacts/ContactsStorageSettings.java b/src/com/android/settings/applications/contacts/ContactsStorageSettings.java
index 90d593a..4b70d46 100644
--- a/src/com/android/settings/applications/contacts/ContactsStorageSettings.java
+++ b/src/com/android/settings/applications/contacts/ContactsStorageSettings.java
@@ -1,4 +1,3 @@
-
/*
* Copyright (C) 2020 The Android Open Source Project
*
@@ -17,25 +16,29 @@
package com.android.settings.applications.contacts;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount;
import static android.provider.Settings.ACTION_ADD_ACCOUNT;
import static android.provider.Settings.EXTRA_ACCOUNT_TYPES;
import android.accounts.Account;
-import android.accounts.AccountManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.UserHandle;
-import android.provider.ContactsContract.Settings;
+import android.provider.ContactsContract.RawContacts.DefaultAccount.DefaultAccountAndState;
+import android.util.Log;
+import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceClickListener;
-import androidx.preference.PreferenceScreen;
+import androidx.preference.PreferenceGroup;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.accounts.AddAccountSettings;
import com.android.settings.dashboard.DashboardFragment;
@@ -46,6 +49,7 @@
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -53,33 +57,54 @@
*/
@SearchIndexable
public class ContactsStorageSettings extends DashboardFragment
- implements SelectorWithWidgetPreference.OnClickListener, OnPreferenceClickListener {
+ implements SelectorWithWidgetPreference.OnClickListener, OnPreferenceClickListener,
+ AuthenticatorHelper.OnAccountsUpdateListener {
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.contacts_storage_settings);
private static final String TAG = "ContactsStorageSettings";
private static final String PREF_KEY_ADD_ACCOUNT = "add_account";
private static final String PREF_KEY_DEVICE_ONLY = "device_only_account_preference";
- private final Map<String, Account> mAccountMap = new HashMap<>();
+ private static final String PREF_KEY_ACCOUNT_CATEGORY = "account_category";
+ private final Map<String, DefaultAccountAndState> mAccountMap = new HashMap<>();
private AuthenticatorHelper mAuthenticatorHelper;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
mAuthenticatorHelper = new AuthenticatorHelper(context,
- new UserHandle(UserHandle.myUserId()), null);
+ new UserHandle(UserHandle.myUserId()), this);
+ mAuthenticatorHelper.listenToAccountUpdates();
+ preloadEligibleAccountIcon();
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mAuthenticatorHelper.stopListeningToAccountUpdates();
}
@UiThread
@Override
public void onRadioButtonClicked(@NonNull SelectorWithWidgetPreference selectedPref) {
final String selectedPreferenceKey = selectedPref.getKey();
- // Check if current provider is different from the selected provider.
+ // Check if current account is different from the selected account.
for (String preferenceKey : mAccountMap.keySet()) {
if (selectedPreferenceKey.equals(preferenceKey)) {
- selectedPref.setChecked(true);
- //TODO: Call DefaultAccount.setDefaultAccountForNewContacts once
- // the implementation is ready.
- Settings.setDefaultAccount(getContentResolver(), mAccountMap.get(preferenceKey));
+ try {
+ DefaultAccountAndState currentDefaultAccount = mAccountMap.get(preferenceKey);
+ DefaultAccount.setDefaultAccountForNewContacts(getContentResolver(),
+ currentDefaultAccount);
+ selectedPref.setChecked(true);
+ if (currentDefaultAccount.getState()
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD) {
+ startMoveLocalAndSimContactsActivity();
+ }
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Error setting the default account " + e);
+ Toast.makeText(getContext(),
+ R.string.contacts_storage_set_default_account_error_message,
+ Toast.LENGTH_SHORT).show();
+ }
} else {
SelectorWithWidgetPreference unSelectedPreference =
getPreferenceScreen().findPreference(preferenceKey);
@@ -92,10 +117,7 @@
public boolean onPreferenceClick(@NonNull Preference preference) {
if (PREF_KEY_ADD_ACCOUNT.equals(preference.getKey())) {
- Resources resources = Resources.getSystem();
- String[] accountTypesArray =
- resources.getStringArray(
- com.android.internal.R.array.config_rawContactsEligibleDefaultAccountTypes);
+ String[] accountTypesArray = getEligibleAccountTypes();
Intent intent = new Intent(ACTION_ADD_ACCOUNT);
intent.setClass(getContext(), AddAccountSettings.class);
intent.putExtra(EXTRA_ACCOUNT_TYPES, accountTypesArray);
@@ -107,8 +129,14 @@
}
@Override
+ public void onAccountsUpdate(UserHandle userHandle) {
+ preloadEligibleAccountIcon();
+ refreshUI();
+ }
+
+ @Override
public void onCreatePreferences(@NonNull Bundle savedInstanceState,
- @NonNull String rootKey) {
+ @NonNull String rootKey) {
super.onCreatePreferences(savedInstanceState, rootKey);
refreshUI();
}
@@ -118,27 +146,33 @@
// Clear all the accounts stored in the map and later on re-fetch the eligible accounts
// when creating eligible account preferences.
mAccountMap.clear();
- final PreferenceScreen screen = getPreferenceScreen();
- AccountManager accountManager = AccountManager.get(getPrefContext());
- //TODO: Call DefaultAccount.getDefaultAccountForNewContacts once
- // implementation is ready.
- Account[] accounts = accountManager.getAccounts();
-
- for (int i = 0; i < accounts.length; i++) {
- screen.addPreference(buildAccountPreference(accounts[i], i));
+ final PreferenceGroup preferenceGroup = findPreference(PREF_KEY_ACCOUNT_CATEGORY);
+ preferenceGroup.removeAll();
+ // If the default account is SIM, we should show in the page, otherwise don't show.
+ SelectorWithWidgetPreference simAccountPreference = buildSimAccountPreference();
+ if (simAccountPreference != null) {
+ preferenceGroup.addPreference(simAccountPreference);
}
- screen.addPreference(buildAddAccountPreference(accounts.length == 0));
+ List<Account> accounts = DefaultAccount.getEligibleCloudAccounts(getContentResolver());
+ for (int i = 0; i < accounts.size(); i++) {
+ preferenceGroup.addPreference(
+ buildCloudAccountPreference(accounts.get(i), /*order=*/i));
+ }
+ // If there's no eligible account types, the "Add Account" preference should
+ // not be shown to the users.
+ if (getEligibleAccountTypes().length > 0) {
+ preferenceGroup.addPreference(buildAddAccountPreference(accounts.isEmpty()));
+ }
setupDeviceOnlyPreference();
+ setDefaultAccountPreference(preferenceGroup);
+ }
- //TODO: Call DefaultAccount.ListEligibleCloudAccounts once the
- // implementation is ready. And differentiate device only account vs account not set case.
- Account currentDefaultAccount = Settings.getDefaultAccount(getContentResolver());
- String preferenceKey = currentDefaultAccount != null ?
- String.valueOf(currentDefaultAccount.hashCode()) : PREF_KEY_DEVICE_ONLY;
- SelectorWithWidgetPreference preference = getPreferenceScreen().findPreference(
- preferenceKey);
- if (preference != null) {
- preference.setChecked(true);
+ private void preloadEligibleAccountIcon() {
+ String[] accountTypes = getEligibleAccountTypes();
+ for (String accountType : accountTypes) {
+ // Preload the drawable for the account type to avoid the latency when rendering the
+ // account preference.
+ mAuthenticatorHelper.preloadDrawableForType(getContext(), accountType);
}
}
@@ -146,24 +180,67 @@
SelectorWithWidgetPreference preference = findPreference(PREF_KEY_DEVICE_ONLY);
if (preference != null) {
preference.setOnClickListener(this);
- mAccountMap.put(PREF_KEY_DEVICE_ONLY, null);
+ mAccountMap.put(PREF_KEY_DEVICE_ONLY, DefaultAccountAndState.ofLocal());
}
}
- //TODO: Add preference category on account preferences.
- private Preference buildAccountPreference(Account account, int order) {
+ private void setDefaultAccountPreference(PreferenceGroup preferenceGroup) {
+ DefaultAccountAndState currentDefaultAccountAndState =
+ DefaultAccount.getDefaultAccountForNewContacts(getContentResolver());
+ String preferenceKey = getAccountHashCode(currentDefaultAccountAndState);
+ Account currentDefaultAccount = currentDefaultAccountAndState.getAccount();
+
+ // Set the current default account preference to be checked if found among existing
+ // preferences. If not, then create a new preference for default account.
+ SelectorWithWidgetPreference preference = null;
+ if (mAccountMap.containsKey(preferenceKey)) {
+ preference = getPreferenceScreen().findPreference(preferenceKey);
+ } else if (preferenceKey != null && currentDefaultAccount != null) {
+ preference = buildCloudAccountPreference(currentDefaultAccount, mAccountMap.size());
+ preferenceGroup.addPreference(preference);
+ }
+ if (preference != null) {
+ preference.setChecked(true);
+ }
+ }
+
+ private SelectorWithWidgetPreference buildCloudAccountPreference(Account account, int order) {
SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(
getPrefContext());
- preference.setTitle(mAuthenticatorHelper.getLabelForType(getPrefContext(), account.type));
+ DefaultAccountAndState accountAndState = DefaultAccountAndState.ofCloud(account);
+ String preferenceKey = getAccountHashCode(accountAndState);
+ String accountPreferenceTitle = getString(R.string.contacts_storage_account_title,
+ mAuthenticatorHelper.getLabelForType(getPrefContext(), account.type));
+ preference.setTitle(accountPreferenceTitle);
preference.setIcon(mAuthenticatorHelper.getDrawableForType(getPrefContext(), account.type));
preference.setSummary(account.name);
- preference.setKey(String.valueOf(account.hashCode()));
+ preference.setKey(preferenceKey);
preference.setOnClickListener(this);
preference.setOrder(order);
- mAccountMap.put(String.valueOf(account.hashCode()), account);
+ mAccountMap.put(preferenceKey, accountAndState);
return preference;
}
+ @Nullable
+ private SelectorWithWidgetPreference buildSimAccountPreference() {
+ DefaultAccountAndState currentDefaultAccountAndState =
+ DefaultAccount.getDefaultAccountForNewContacts(getContentResolver());
+ if (currentDefaultAccountAndState.getState()
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_SIM) {
+ String preferenceKey = getAccountHashCode(currentDefaultAccountAndState);
+ SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(
+ getPrefContext());
+ preference.setTitle(R.string.sim_card_label);
+ preference.setIcon(R.drawable.ic_sim_card);
+ preference.setSummary(R.string.sim_card_label);
+ preference.setKey(preferenceKey);
+ preference.setOnClickListener(this);
+ mAccountMap.put(preferenceKey, currentDefaultAccountAndState);
+ return preference;
+ }
+ return null;
+ }
+
private RestrictedPreference buildAddAccountPreference(boolean noAccountBeenAdded) {
RestrictedPreference preference = new RestrictedPreference(getPrefContext());
preference.setKey(PREF_KEY_ADD_ACCOUNT);
@@ -178,6 +255,39 @@
return preference;
}
+ private void startMoveLocalAndSimContactsActivity() {
+ Intent intent = new Intent()
+ .setAction(DefaultAccount.ACTION_MOVE_CONTACTS_TO_DEFAULT_ACCOUNT)
+ .setPackage("com.android.providers.contacts")
+ .addFlags(FLAG_ACTIVITY_NEW_TASK);
+ getContext().startActivity(intent);
+ }
+
+ @Nullable
+ private String getAccountHashCode(
+ DefaultAccountAndState currentDefaultAccountAndState) {
+ Account currentDefaultAccount = currentDefaultAccountAndState.getAccount();
+ if (currentDefaultAccount != null && (currentDefaultAccountAndState.getState()
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD
+ || currentDefaultAccountAndState.getState()
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_SIM)) {
+ return String.valueOf(currentDefaultAccount.hashCode());
+ } else if (currentDefaultAccountAndState.getState()
+ == DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_LOCAL) {
+ return PREF_KEY_DEVICE_ONLY;
+ } else {
+ // If the account is not set or in error state, it should just return null and won't
+ // set the checked status in radio button.
+ return null;
+ }
+ }
+
+ @VisibleForTesting
+ String[] getEligibleAccountTypes() {
+ return Resources.getSystem().getStringArray(
+ com.android.internal.R.array.config_rawContactsEligibleDefaultAccountTypes);
+ }
+
@Override
protected int getPreferenceScreenResId() {
return R.xml.contacts_storage_settings;
diff --git a/src/com/android/settings/backup/UserBackupSettingsActivity.java b/src/com/android/settings/backup/UserBackupSettingsActivity.java
index e6d313c..adeeca5 100644
--- a/src/com/android/settings/backup/UserBackupSettingsActivity.java
+++ b/src/com/android/settings/backup/UserBackupSettingsActivity.java
@@ -23,10 +23,10 @@
import android.util.Log;
import androidx.annotation.VisibleForTesting;
-import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.android.settings.R;
+import com.android.settings.SettingsActivity;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
@@ -46,13 +46,16 @@
* Therefore, as a simple workaround, we use a new class which is enabled by default.
*/
@SearchIndexable
-public class UserBackupSettingsActivity extends FragmentActivity implements Indexable {
+public class UserBackupSettingsActivity extends SettingsActivity implements Indexable {
private static final String TAG = "BackupSettingsActivity";
private FragmentManager mFragmentManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ if (isFinishing()) {
+ return;
+ }
BackupSettingsHelper backupHelper = new BackupSettingsHelper(this);
diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java
index 3285a95..c4c8dc0 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollBase.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java
@@ -148,8 +148,16 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setTheme(SetupWizardUtils.getTheme(this, getIntent()));
- ThemeHelper.trySetDynamicColor(this);
+
+ if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
+ if (!ThemeHelper.trySetSuwTheme(this)) {
+ setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
+ } else {
+ setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
mChallenge = getIntent().getLongExtra(EXTRA_KEY_CHALLENGE, -1L);
mSensorId = getIntent().getIntExtra(EXTRA_KEY_SENSOR_ID, -1);
// Don't need to retrieve the HAT if it already exists. In some cases, the extras do not
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 03010bb..1de8379 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -57,6 +57,7 @@
import android.view.animation.Interpolator;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
+import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.IdRes;
@@ -72,6 +73,7 @@
import com.android.settings.biometrics.BiometricsSplitScreenDialog;
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.display.DisplayDensityUtils;
import com.android.systemui.unfold.compat.ScreenSizeFoldProvider;
@@ -243,16 +245,36 @@
mIsAccessibilityEnabled = mAccessibilityManager.isEnabled();
listenOrientationEvent();
-
if (mCanAssumeUdfps) {
+ final int rotation = getApplicationContext().getDisplay().getRotation();
+ final boolean isPortrait = (rotation == Surface.ROTATION_0)
+ || (rotation == Surface.ROTATION_180);
+
final UdfpsEnrollEnrollingView layout =
(UdfpsEnrollEnrollingView) getLayoutInflater().inflate(
- R.layout.udfps_enroll_enrolling, null, false);
+ Flags.enrollLayoutTruncateImprovement()
+ ? R.layout.udfps_enroll_enrolling :
+ R.layout.udfps_enroll_enrolling_non_scroll, null, false);
setUdfpsEnrollHelper();
layout.initView(props.get(0), mUdfpsEnrollHelper, mAccessibilityManager);
-
setContentView(layout);
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
+
+ if (Flags.enrollLayoutTruncateImprovement() && isPortrait) {
+ final UdfpsEnrollEnrollingView layoutView = (UdfpsEnrollEnrollingView) getLayout();
+ if (layoutView != null) {
+ final ScrollView headerScrollView = layout.findViewById(
+ R.id.sud_header_scroll_view);
+ if (headerScrollView != null) {
+ final long headerScrollDuration = getResources().getInteger(
+ R.integer.config_biometrics_header_scroll_duration);
+ layoutView.adjustScrollableHeaderHeight(
+ headerScrollView, mShouldShowLottie);
+ layoutView.headerVerticalScrolling(headerScrollView, headerScrollDuration);
+ }
+ }
+ }
+
} else if (mCanAssumeSfps) {
mSfpsEnrollmentFeature = FeatureFactory.getFeatureFactory()
.getFingerprintFeatureProvider().getSfpsEnrollmentFeature();
@@ -1199,6 +1221,24 @@
}
}
+ @Override
+ public void onWindowFocusChanged(boolean hasWindowFocus) {
+ super.onWindowFocusChanged(hasWindowFocus);
+ if (Flags.enrollLayoutTruncateImprovement()) {
+ adjustEnrollViewIfOverlappedWithFooterBar();
+ }
+ }
+
+ private void adjustEnrollViewIfOverlappedWithFooterBar() {
+ if (mCanAssumeUdfps) {
+ final UdfpsEnrollEnrollingView layoutView = (UdfpsEnrollEnrollingView) getLayout();
+ if (layoutView != null) {
+ layoutView.adjustUdfpsVieWithFooterBar();
+ layoutView.onUdfpsSensorRectUpdated();
+ }
+ }
+ }
+
public static class IconTouchDialog extends InstrumentedDialogFragment {
@Override
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index adb6700..7d47168 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -20,12 +20,14 @@
import static android.app.admin.DevicePolicyResources.Strings.Settings.FINGERPRINT_UNLOCK_DISABLED_EXPLANATION;
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_FINGERPRINT_LAST_DELETE_MESSAGE;
import static android.app.admin.DevicePolicyResources.UNDEFINED;
+import static android.hardware.biometrics.Flags.screenOffUnlockUdfps;
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import static com.android.settings.Utils.isPrivateProfile;
import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST;
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_KEY_CHALLENGE;
+import static com.android.settings.flags.Flags.screenOffUnlockPowerOptimization;
import android.app.Activity;
import android.app.Dialog;
@@ -207,6 +209,17 @@
context,
KEY_REQUIRE_SCREEN_ON_TO_AUTH
));
+ } else if (screenOffUnlockUdfps()) {
+ controllers.add(
+ new FingerprintUnlockCategoryController(
+ context,
+ KEY_FINGERPRINT_UNLOCK_CATEGORY
+ ));
+ controllers.add(
+ new FingerprintSettingsScreenOffUnlockUdfpsPreferenceController(
+ context,
+ KEY_SCREEN_OFF_FINGERPRINT_UNLOCK
+ ));
}
controllers.add(new FingerprintsEnrolledCategoryPreferenceController(context,
KEY_FINGERPRINTS_ENROLLED_CATEGORY));
@@ -233,6 +246,9 @@
@VisibleForTesting
static final String KEY_REQUIRE_SCREEN_ON_TO_AUTH =
"security_settings_require_screen_on_to_auth";
+ @VisibleForTesting
+ static final String KEY_SCREEN_OFF_FINGERPRINT_UNLOCK =
+ "security_settings_screen_off_unlock_udfps";
private static final String KEY_FINGERPRINTS_ENROLLED_CATEGORY =
"security_settings_fingerprints_enrolled";
private static final String KEY_FINGERPRINT_UNLOCK_CATEGORY =
@@ -263,8 +279,11 @@
mFingerprintUnlockCategoryPreferenceController;
private FingerprintSettingsRequireScreenOnToAuthPreferenceController
mRequireScreenOnToAuthPreferenceController;
+ private FingerprintSettingsScreenOffUnlockUdfpsPreferenceController
+ mScreenOffUnlockUdfpsPreferenceController;
private Preference mAddFingerprintPreference;
private RestrictedSwitchPreference mRequireScreenOnToAuthPreference;
+ private RestrictedSwitchPreference mScreenOffUnlockUdfpsPreference;
private PreferenceCategory mFingerprintsEnrolledCategory;
private PreferenceCategory mFingerprintUnlockCategory;
private PreferenceCategory mFingerprintUnlockFooter;
@@ -582,6 +601,24 @@
return false;
}
+ private boolean isUltrasnoicUdfps() {
+ // b/368465560 Gate either ultrasonic or optical UDFPS if the power do not optimized
+ if (!screenOffUnlockPowerOptimization()) {
+ return false;
+ }
+
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
+ if (mFingerprintManager != null) {
+ mSensorProperties = mFingerprintManager.getSensorPropertiesInternal();
+ for (FingerprintSensorPropertiesInternal prop : mSensorProperties) {
+ if (prop.isUltrasonicUdfps()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
protected void removeFingerprintPreference(int fingerprintId) {
String name = genKey(fingerprintId);
Log.e(TAG, "removeFingerprintPreference : " + fingerprintId);
@@ -621,7 +658,7 @@
// This needs to be after setting ids, otherwise
// |mRequireScreenOnToAuthPreferenceController.isChecked| is always checking the primary
// user instead of the user with |mUserId|.
- if (isSfps()) {
+ if (isSfps() || (screenOffUnlockUdfps() && isUltrasnoicUdfps())) {
scrollToPreference(fpPrefKey);
addFingerprintUnlockCategory();
}
@@ -671,33 +708,46 @@
private void addFingerprintUnlockCategory() {
mFingerprintUnlockCategory = findPreference(KEY_FINGERPRINT_UNLOCK_CATEGORY);
- setupFingerprintUnlockCategoryPreferences();
- final Preference restToUnlockPreference = FeatureFactory.getFeatureFactory()
- .getFingerprintFeatureProvider()
- .getSfpsRestToUnlockFeature(getContext())
- .getRestToUnlockPreference(getContext());
- if (restToUnlockPreference != null) {
- // Use custom featured preference if any.
- mRequireScreenOnToAuthPreference.setTitle(restToUnlockPreference.getTitle());
- mRequireScreenOnToAuthPreference.setSummary(restToUnlockPreference.getSummary());
- mRequireScreenOnToAuthPreference.setChecked(
- ((TwoStatePreference) restToUnlockPreference).isChecked());
- mRequireScreenOnToAuthPreference.setOnPreferenceChangeListener(
- restToUnlockPreference.getOnPreferenceChangeListener());
+ if (isSfps()) {
+ // For both SFPS "screen on to auth" and "rest to unlock"
+ final Preference restToUnlockPreference = FeatureFactory.getFeatureFactory()
+ .getFingerprintFeatureProvider()
+ .getSfpsRestToUnlockFeature(getContext())
+ .getRestToUnlockPreference(getContext());
+ if (restToUnlockPreference != null) {
+ // Use custom featured preference if any.
+ mRequireScreenOnToAuthPreference.setTitle(restToUnlockPreference.getTitle());
+ mRequireScreenOnToAuthPreference.setSummary(
+ restToUnlockPreference.getSummary());
+ mRequireScreenOnToAuthPreference.setChecked(
+ ((TwoStatePreference) restToUnlockPreference).isChecked());
+ mRequireScreenOnToAuthPreference.setOnPreferenceChangeListener(
+ restToUnlockPreference.getOnPreferenceChangeListener());
+ }
+ setupFingerprintUnlockCategoryPreferencesForScreenOnToAuth();
+ } else if (screenOffUnlockUdfps() && isUltrasnoicUdfps()) {
+ setupFingerprintUnlockCategoryPreferencesForScreenOffUnlock();
}
updateFingerprintUnlockCategoryVisibility();
}
private void updateFingerprintUnlockCategoryVisibility() {
- final boolean mFingerprintUnlockCategoryAvailable =
+ final boolean fingerprintUnlockCategoryAvailable =
mFingerprintUnlockCategoryPreferenceController.isAvailable();
- if (mFingerprintUnlockCategory.isVisible() != mFingerprintUnlockCategoryAvailable) {
- mFingerprintUnlockCategory.setVisible(
- mFingerprintUnlockCategoryAvailable);
+ if (mFingerprintUnlockCategory.isVisible() != fingerprintUnlockCategoryAvailable) {
+ mFingerprintUnlockCategory.setVisible(fingerprintUnlockCategoryAvailable);
+ }
+ if (mRequireScreenOnToAuthPreferenceController != null) {
+ mRequireScreenOnToAuthPreference.setVisible(
+ mRequireScreenOnToAuthPreferenceController.isAvailable());
+ }
+ if (mScreenOffUnlockUdfpsPreferenceController != null) {
+ mScreenOffUnlockUdfpsPreference.setVisible(
+ mScreenOffUnlockUdfpsPreferenceController.isAvailable());
}
}
- private void setupFingerprintUnlockCategoryPreferences() {
+ private void setupFingerprintUnlockCategoryPreferencesForScreenOnToAuth() {
mRequireScreenOnToAuthPreference = findPreference(KEY_REQUIRE_SCREEN_ON_TO_AUTH);
mRequireScreenOnToAuthPreference.setChecked(
mRequireScreenOnToAuthPreferenceController.isChecked());
@@ -709,9 +759,21 @@
});
}
+ private void setupFingerprintUnlockCategoryPreferencesForScreenOffUnlock() {
+ mScreenOffUnlockUdfpsPreference = findPreference(KEY_SCREEN_OFF_FINGERPRINT_UNLOCK);
+ mScreenOffUnlockUdfpsPreference.setChecked(
+ mScreenOffUnlockUdfpsPreferenceController.isChecked());
+ mScreenOffUnlockUdfpsPreference.setOnPreferenceChangeListener(
+ (preference, newValue) -> {
+ final boolean isChecked = ((TwoStatePreference) preference).isChecked();
+ mScreenOffUnlockUdfpsPreferenceController.setChecked(!isChecked);
+ return true;
+ });
+ }
+
private void updatePreferencesAfterFingerprintRemoved() {
updateAddPreference();
- if (isSfps()) {
+ if (isSfps() || (screenOffUnlockUdfps() && isUltrasnoicUdfps())) {
updateFingerprintUnlockCategoryVisibility();
}
updatePreferences();
@@ -955,6 +1017,18 @@
}
}
+ } else if (screenOffUnlockUdfps() && isUltrasnoicUdfps()) {
+ for (AbstractPreferenceController controller : controllers) {
+ if (controller.getPreferenceKey() == KEY_FINGERPRINT_UNLOCK_CATEGORY) {
+ mFingerprintUnlockCategoryPreferenceController =
+ (FingerprintUnlockCategoryController) controller;
+ } else if (controller.getPreferenceKey() == KEY_SCREEN_OFF_FINGERPRINT_UNLOCK) {
+ mScreenOffUnlockUdfpsPreferenceController =
+ (FingerprintSettingsScreenOffUnlockUdfpsPreferenceController)
+ controller;
+ }
+
+ }
}
return controllers;
}
@@ -1070,7 +1144,8 @@
} else if (requestCode == BIOMETRIC_AUTH_REQUEST) {
mBiometricsAuthenticationRequested = false;
if (resultCode != RESULT_OK) {
- if (resultCode == ConfirmDeviceCredentialActivity.BIOMETRIC_LOCKOUT_ERROR_RESULT) {
+ if (resultCode
+ == ConfirmDeviceCredentialActivity.BIOMETRIC_LOCKOUT_ERROR_RESULT) {
IdentityCheckBiometricErrorDialog
.showBiometricErrorDialogAndFinishActivityOnDismiss(getActivity(),
Utils.BiometricStatus.LOCKOUT);
@@ -1408,7 +1483,7 @@
getContext().getSystemService(DevicePolicyManager.class);
String messageId =
isProfileChallengeUser ? WORK_PROFILE_FINGERPRINT_LAST_DELETE_MESSAGE
- : UNDEFINED;
+ : UNDEFINED;
int defaultMessageId = isProfileChallengeUser
? R.string.fingerprint_last_delete_message_profile_challenge
: R.string.fingerprint_last_delete_message;
@@ -1417,7 +1492,7 @@
.setTitle(title)
.setMessage(devicePolicyManager.getResources().getString(
messageId,
- () -> message + "\n\n" + getContext().getString(defaultMessageId)))
+ () -> message + "\n\n" + getContext().getString(defaultMessageId)))
.setPositiveButton(
R.string.security_settings_fingerprint_enroll_dialog_delete,
new DialogInterface.OnClickListener() {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsScreenOffUnlockUdfpsPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsScreenOffUnlockUdfpsPreferenceController.java
new file mode 100644
index 0000000..5c32d90
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsScreenOffUnlockUdfpsPreferenceController.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint;
+
+import static android.hardware.biometrics.Flags.screenOffUnlockUdfps;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.hardware.fingerprint.FingerprintManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+/**
+ * Preference controller that controls whether show screen off UDFPS unlock toggle for users to
+ * turn this feature ON or OFF
+ */
+@SearchIndexable
+public class FingerprintSettingsScreenOffUnlockUdfpsPreferenceController
+ extends FingerprintSettingsPreferenceController {
+ private static final String TAG =
+ "FingerprintSettingsScreenOffUnlockUdfpsPreferenceController";
+
+ @VisibleForTesting
+ protected FingerprintManager mFingerprintManager;
+
+ public FingerprintSettingsScreenOffUnlockUdfpsPreferenceController(
+ @NonNull Context context, @NonNull String prefKey) {
+ super(context, prefKey);
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(context);
+ }
+
+ @Override
+ public boolean isChecked() {
+ if (!FingerprintSettings.isFingerprintHardwareDetected(mContext)) {
+ return false;
+ } else if (getRestrictingAdmin() != null) {
+ return false;
+ }
+ final boolean defEnabled = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_screen_off_udfps_enabled);
+ final int value = Settings.Secure.getIntForUser(
+ mContext.getContentResolver(),
+ Settings.Secure.SCREEN_OFF_UNLOCK_UDFPS_ENABLED,
+ defEnabled ? 1 : 0 /* config_screen_off_udfps_enabled */,
+ getUserHandle());
+ return value == 1;
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ Settings.Secure.putIntForUser(
+ mContext.getContentResolver(),
+ Settings.Secure.SCREEN_OFF_UNLOCK_UDFPS_ENABLED,
+ isChecked ? 1 : 0,
+ getUserHandle());
+ return true;
+ }
+
+ @Override
+ public void updateState(@NonNull Preference preference) {
+ super.updateState(preference);
+ if (!FingerprintSettings.isFingerprintHardwareDetected(mContext)) {
+ preference.setEnabled(false);
+ } else if (!mFingerprintManager.hasEnrolledTemplates(getUserId())) {
+ preference.setEnabled(false);
+ } else if (getRestrictingAdmin() != null) {
+ preference.setEnabled(false);
+ } else {
+ preference.setEnabled(true);
+ }
+ }
+
+ @SuppressLint("MissingPermission")
+ @Override
+ public int getAvailabilityStatus() {
+ if (mFingerprintManager != null
+ && mFingerprintManager.isHardwareDetected()
+ && screenOffUnlockUdfps()
+ && !mFingerprintManager.isPowerbuttonFps()) {
+ return mFingerprintManager.hasEnrolledTemplates(getUserId())
+ ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ } else {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+ }
+
+ private int getUserHandle() {
+ return UserHandle.of(getUserId()).getIdentifier();
+ }
+
+ /**
+ * This feature is not directly searchable.
+ */
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {};
+
+}
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintUnlockCategoryController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintUnlockCategoryController.java
index 674a0df..c949d3d 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintUnlockCategoryController.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintUnlockCategoryController.java
@@ -16,6 +16,8 @@
package com.android.settings.biometrics.fingerprint;
+import static android.hardware.biometrics.Flags.screenOffUnlockUdfps;
+
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
@@ -42,7 +44,7 @@
public int getAvailabilityStatus() {
if (mFingerprintManager != null
&& mFingerprintManager.isHardwareDetected()
- && mFingerprintManager.isPowerbuttonFps()) {
+ && (mFingerprintManager.isPowerbuttonFps() || screenOffUnlockUdfps())) {
return mFingerprintManager.hasEnrolledTemplates(getUserId())
? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
} else {
diff --git a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java
index c28f9e0..5b29fa5 100644
--- a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java
+++ b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java
@@ -16,27 +16,42 @@
package com.android.settings.biometrics.fingerprint;
+import android.animation.Animator;
+import android.animation.ObjectAnimator;
import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.TypedArray;
+import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.text.TextUtils;
import android.util.AttributeSet;
+import android.util.DisplayMetrics;
+import android.util.TypedValue;
+import android.view.Display;
import android.view.DisplayInfo;
import android.view.Gravity;
+import android.view.LayoutInflater;
import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowInsets;
+import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.ScrollView;
import androidx.annotation.ColorInt;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
-import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
+import com.android.settings.flags.Flags;
import com.android.systemui.biometrics.UdfpsUtils;
import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams;
@@ -50,6 +65,7 @@
* View for udfps enrolling.
*/
public class UdfpsEnrollEnrollingView extends GlifLayout {
+
private final UdfpsUtils mUdfpsUtils;
private final Context mContext;
// We don't need to listen to onConfigurationChanged() for mRotation here because
@@ -57,14 +73,19 @@
private final int mRotation;
private final boolean mIsLandscape;
private final boolean mShouldUseReverseLandscape;
+
+ private WindowManager mWindowManager;
+
private UdfpsEnrollView mUdfpsEnrollView;
private View mHeaderView;
private AccessibilityManager mAccessibilityManager;
+ private ObjectAnimator mHeaderScrollAnimator;
public UdfpsEnrollEnrollingView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
+ mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mRotation = mContext.getDisplay().getRotation();
mIsLandscape = mRotation == Surface.ROTATION_90 || mRotation == Surface.ROTATION_270;
final boolean isLayoutRtl = (TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())
@@ -82,6 +103,139 @@
mUdfpsEnrollView = findViewById(R.id.udfps_animation_view);
}
+ @Override
+ protected View onInflateTemplate(LayoutInflater inflater, @LayoutRes int template) {
+ final Configuration config = inflater.getContext().getResources().getConfiguration();
+ if (Flags.enrollLayoutTruncateImprovement()
+ && config.orientation == Configuration.ORIENTATION_PORTRAIT) {
+ template = R.layout.biometrics_glif_compact;
+ }
+ return super.onInflateTemplate(inflater, template);
+ }
+
+ void setDecreasePadding(int decreasePadding) {
+ if (mUdfpsEnrollView != null) {
+ mUdfpsEnrollView.setDecreasePadding(decreasePadding);
+ }
+ }
+
+ void onUdfpsSensorRectUpdated() {
+ if (mUdfpsEnrollView != null) {
+ mUdfpsEnrollView.setVisibility(VISIBLE);
+ }
+ }
+
+ private int getScrollableGlifHeaderHeight(boolean isShouldShowLottie) {
+ final TypedValue tvRatio = new TypedValue();
+ if (isLargeDisplaySizeOrFontSize() && !isShouldShowLottie) {
+ getResources().getValue(
+ R.dimen.biometrics_glif_header_height_ratio_large, tvRatio, true);
+ } else {
+ getResources().getValue(R.dimen.biometrics_glif_header_height_ratio, tvRatio, true);
+ }
+ final float newHeaderHeight = (float) getResources().getDisplayMetrics().heightPixels
+ * tvRatio.getFloat();
+
+ return (int) newHeaderHeight;
+ }
+
+ void adjustScrollableHeaderHeight(ScrollView headerScrollView, boolean isShouldShowLottie) {
+ ViewGroup.LayoutParams params = headerScrollView.getLayoutParams();
+ params.height = getScrollableGlifHeaderHeight(isShouldShowLottie);
+ headerScrollView.setLayoutParams(params);
+ }
+
+ private boolean isLargeDisplaySizeOrFontSize() {
+ final Configuration config = getResources().getConfiguration();
+ if (config.fontScale > 1.3f || getLargeDisplayScale() >= 2.8f) {
+ return true;
+ }
+ return false;
+ }
+
+ private float getLargeDisplayScale() {
+ final Display display = mWindowManager.getDefaultDisplay();
+ final DisplayMetrics metrics = new DisplayMetrics();
+ display.getMetrics(metrics);
+ return metrics.scaledDensity;
+ }
+
+ void adjustUdfpsVieWithFooterBar() {
+ final FrameLayout allContent = findViewById(R.id.suc_layout_status);
+ final ImageView udfpsProgressView = findViewById(
+ R.id.udfps_enroll_animation_fp_progress_view);
+
+ final int navigationBarHeight = getNaviBarHeight();
+ final int footerBarHeight = getFooterBarHeight();
+
+ final int udfpsProgressDrawableBottom = getOnScreenPositionTop(udfpsProgressView)
+ + udfpsProgressView.getDrawable().getBounds().height()
+ - udfpsProgressView.getPaddingBottom() + 2 /* reserved for more space */;
+ final int footerBarTop = getOnScreenPositionTop(allContent) + allContent.getHeight()
+ - (footerBarHeight + navigationBarHeight);
+
+ if (udfpsProgressDrawableBottom > footerBarTop) {
+ int adjustPadding = udfpsProgressDrawableBottom - footerBarTop;
+ setDecreasePadding(adjustPadding);
+ }
+ }
+
+ private int getOnScreenPositionTop(View view) {
+ int [] location = new int[2];
+ view.getLocationOnScreen(location);
+ return location[1];
+ }
+
+ private int getNaviBarHeight() {
+ final Insets inset = mWindowManager.getMaximumWindowMetrics().getWindowInsets().getInsets(
+ WindowInsets.Type.navigationBars());
+ return inset.toRect().height();
+ }
+
+ private int getFooterBarHeight() {
+ TypedArray a = mContext.getTheme().obtainStyledAttributes(new int[] {
+ com.google.android.setupcompat.R.attr.sucFooterBarMinHeight});
+ final int footerBarMinHeight = a.getDimensionPixelSize(0, -1);
+ a.recycle();
+ return footerBarMinHeight;
+ }
+
+ void headerVerticalScrolling(ScrollView headerScrollView, long duration) {
+ headerScrollView.post(new Runnable() {
+ @Override
+ public void run() {
+ final int maxScroll = headerScrollView.getChildAt(0).getMeasuredHeight()
+ - headerScrollView.getMeasuredHeight();
+ mHeaderScrollAnimator = ObjectAnimator.ofInt(
+ headerScrollView, "scrollY", maxScroll);
+ mHeaderScrollAnimator.setDuration(duration);
+ mHeaderScrollAnimator.addListener(new Animator.AnimatorListener() {
+
+ @Override
+ public void onAnimationStart(@NonNull Animator animation) {}
+
+ @Override
+ public void onAnimationEnd(@NonNull Animator animation) {
+ mHeaderScrollAnimator.removeAllListeners();
+ headerScrollView.post(new Runnable() {
+ @Override
+ public void run() {
+ mHeaderScrollAnimator.reverse();
+ }
+ });
+ }
+
+ @Override
+ public void onAnimationCancel(@NonNull Animator animation) {}
+
+ @Override
+ public void onAnimationRepeat(@NonNull Animator animation) {}
+ });
+ mHeaderScrollAnimator.start();
+ }
+ });
+ }
+
void initView(FingerprintSensorPropertiesInternal udfpsProps,
UdfpsEnrollHelper udfpsEnrollHelper,
AccessibilityManager accessibilityManager) {
@@ -93,7 +247,7 @@
} else if (mShouldUseReverseLandscape) {
swapHeaderAndContent();
}
- mUdfpsEnrollView.setVisibility(View.VISIBLE);
+ mUdfpsEnrollView.setVisibility(View.INVISIBLE);
setOnHoverListener();
}
@@ -166,17 +320,6 @@
R.id.udfps_enroll_animation_fp_view);
fingerprintView.setPadding(0, -layoutLottieAnimationPadding,
0, layoutLottieAnimationPadding);
-
- // TODO(b/260970216) Instead of hiding the description text view, we should
- // make the header view scrollable if the text is too long.
- // If description text view has overlap with udfps progress view, hide it.
- final View descView = getDescriptionTextView();
- getViewTreeObserver().addOnDrawListener(() -> {
- if (descView.getVisibility() == View.VISIBLE
- && hasOverlap(descView, mUdfpsEnrollView)) {
- descView.setVisibility(View.GONE);
- }
- });
}
private void setOnHoverListener() {
diff --git a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java
index 4a2a243..0c80b48 100644
--- a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java
+++ b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java
@@ -133,6 +133,15 @@
enrollHelper.setListener(this);
}
+ /**
+ * Adjust progress bar radius only for decreasing.
+ * @param decreasePadding the decrease padding
+ */
+ void setDecreasePadding(int decreasePadding) {
+ mProgressBarRadius -= decreasePadding;
+ onSensorRectUpdated();
+ }
+
private void onSensorRectUpdated() {
updateDimensions();
diff --git a/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt b/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt
index 50ac3cd..030aadb 100644
--- a/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt
@@ -45,6 +45,8 @@
import com.android.settings.biometrics.fingerprint2.domain.interactor.EnrollStageInteractor
import com.android.settings.biometrics.fingerprint2.domain.interactor.EnrollStageInteractorImpl
import com.android.settings.biometrics.fingerprint2.domain.interactor.EnrolledFingerprintsInteractorImpl
+import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintEnrollStageCountInteractor
+import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintEnrollStageThresholdInteractor
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintSensorInteractor
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintSensorInteractorImpl
import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor
@@ -113,6 +115,12 @@
fun createCanEnrollFingerprintsInteractor(): CanEnrollFingerprintsInteractor =
CanEnrollFingerprintsInteractorImpl(fingerprintEnrollmentRepository)
+ fun createFingerprintEnrollStageCountInteractor(): FingerprintEnrollStageCountInteractor =
+ FingerprintEnrollStageCountInteractor(fingerprintEnrollmentRepository)
+
+ fun createFingerprintEnrollStageThresholdInteractor(): FingerprintEnrollStageThresholdInteractor =
+ FingerprintEnrollStageThresholdInteractor(fingerprintEnrollmentRepository)
+
fun createGenerateChallengeInteractor(): GenerateChallengeInteractor =
GenerateChallengeInteractorImpl(fingerprintManager, context.userId, gateKeeperPasswordProvider)
diff --git a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt
index 0bb4eea..d01a49c 100644
--- a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt
@@ -46,6 +46,16 @@
/** Indicates if a user can enroll another fingerprint */
val canEnrollUser: Flow<Boolean>
+ val enrollStageCount: Int
+
+ /**
+ * Returns the threshold for the given stage of fingerprint enrollment.
+ *
+ * @param index The index of the enrollment stage.
+ * @return The threshold for the enrollment stage.
+ */
+ fun getEnrollStageThreshold(index: Int): Float
+
/**
* Indicates if we should use the default settings for maximum enrollments or the sensor props
* from the fingerprint sensor
@@ -115,4 +125,10 @@
?.map { (FingerprintData(it.name.toString(), it.biometricId, it.deviceId)) }
?.toList()
}
+
+ override val enrollStageCount: Int
+ get() = fingerprintManager.enrollStageCount
+
+ override fun getEnrollStageThreshold(index: Int): Float =
+ fingerprintManager.getEnrollStageThreshold(index)
}
diff --git a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt
index 1cca532..8476f3b 100644
--- a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt
@@ -16,6 +16,7 @@
package com.android.settings.biometrics.fingerprint2.data.repository
+import android.annotation.SuppressLint
import android.hardware.biometrics.ComponentInfoInternal
import android.hardware.biometrics.SensorLocationInternal
import android.hardware.biometrics.SensorProperties
@@ -23,18 +24,24 @@
import android.hardware.fingerprint.FingerprintSensorProperties
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback
+import android.util.Log
import com.android.systemui.biometrics.shared.model.FingerprintSensor
import com.android.systemui.biometrics.shared.model.toFingerprintSensor
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.transform
+import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
/**
@@ -56,17 +63,24 @@
activityScope: CoroutineScope,
) : FingerprintSensorRepository {
- private val fingerprintPropsInternal: Flow<FingerprintSensorPropertiesInternal> =
- callbackFlow {
+ private val _fingerprintSensor = MutableSharedFlow<FingerprintSensor>(replay = 1)
+ override val fingerprintSensor: Flow<FingerprintSensor>
+ get() = _fingerprintSensor.asSharedFlow()
+
+ init {
+ activityScope.launch {
+ callbackFlow{
val callback =
object : IFingerprintAuthenticatorsRegisteredCallback.Stub() {
+ @SuppressLint("LongLogTag")
override fun onAllAuthenticatorsRegistered(
sensors: List<FingerprintSensorPropertiesInternal>
) {
if (sensors.isEmpty()) {
- trySend(DEFAULT_PROPS)
+ Log.e(TAG, "empty sensors from onAllAuthenticatorsRegistered")
} else {
trySend(sensors[0])
+ channel.close()
}
}
}
@@ -74,27 +88,16 @@
fingerprintManager.addAuthenticatorsRegisteredCallback(callback)
}
awaitClose {}
+ }.collect {
+ _fingerprintSensor.emit(it.toFingerprintSensor())
}
- .stateIn(activityScope, started = SharingStarted.Eagerly, initialValue = DEFAULT_PROPS)
-
- override val fingerprintSensor: Flow<FingerprintSensor> =
- fingerprintPropsInternal.transform { emit(it.toFingerprintSensor()) }
+ }
+ }
override val hasSideFps: Flow<Boolean> =
fingerprintSensor.flatMapLatest { flow { emit(fingerprintManager.isPowerbuttonFps()) } }
- companion object {
-
- private val DEFAULT_PROPS =
- FingerprintSensorPropertiesInternal(
- -1 /* sensorId */,
- SensorProperties.STRENGTH_CONVENIENCE,
- 0 /* maxEnrollmentsPerUser */,
- listOf<ComponentInfoInternal>(),
- FingerprintSensorProperties.TYPE_UNKNOWN,
- false /* halControlsIllumination */,
- true /* resetLockoutRequiresHardwareAuthToken */,
- listOf<SensorLocationInternal>(SensorLocationInternal.DEFAULT),
- )
+ private companion object {
+ const val TAG = "FingerprintSensorRepository"
}
}
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt
index 9f62ed0..bf0084d 100644
--- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt
@@ -16,6 +16,7 @@
package com.android.settings.biometrics.fingerprint2.domain.interactor
+import android.util.Log
import android.view.accessibility.AccessibilityEvent
import android.view.accessibility.AccessibilityEvent.TYPE_ANNOUNCEMENT
import android.view.accessibility.AccessibilityManager
@@ -30,23 +31,26 @@
interface AccessibilityInteractor {
/** A flow that contains whether or not accessibility is enabled */
fun isEnabledFlow(scope: CoroutineScope): Flow<Boolean>
+
val isEnabled: Boolean
+
fun announce(clazz: Class<*>, announcement: CharSequence?)
+
+ fun interrupt()
}
-class AccessibilityInteractorImpl(
- private val accessibilityManager: AccessibilityManager,
-) : AccessibilityInteractor {
+class AccessibilityInteractorImpl(private val accessibilityManager: AccessibilityManager) :
+ AccessibilityInteractor {
/** A flow that contains whether or not accessibility is enabled */
override fun isEnabledFlow(scope: CoroutineScope): Flow<Boolean> =
callbackFlow {
- val listener =
- AccessibilityManager.AccessibilityStateChangeListener { enabled -> trySend(enabled) }
- accessibilityManager.addAccessibilityStateChangeListener(listener)
+ val listener =
+ AccessibilityManager.AccessibilityStateChangeListener { enabled -> trySend(enabled) }
+ accessibilityManager.addAccessibilityStateChangeListener(listener)
- // This clause will be called when no one is listening to the flow
- awaitClose { accessibilityManager.removeAccessibilityStateChangeListener(listener) }
- }
+ // This clause will be called when no one is listening to the flow
+ awaitClose { accessibilityManager.removeAccessibilityStateChangeListener(listener) }
+ }
.stateIn(
scope,
SharingStarted.WhileSubscribed(), // When no longer subscribed, we removeTheListener
@@ -63,4 +67,17 @@
event.text.add(announcement)
accessibilityManager.sendAccessibilityEvent(event)
}
+
+ /** Interrupts the current accessibility manager from announcing a phrase. */
+ override fun interrupt() {
+ try {
+ accessibilityManager.interrupt()
+ } catch (e: IllegalStateException) {
+ Log.e(TAG, "Error trying to interrupt when accessibility isn't enabled $e")
+ }
+ }
+
+ companion object {
+ const val TAG = "AccessibilityInteractor"
+ }
}
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintEnrollStageCountInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintEnrollStageCountInteractor.kt
new file mode 100644
index 0000000..6148158
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintEnrollStageCountInteractor.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint2.domain.interactor
+
+import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintEnrollmentRepository
+
+/**
+ * Interactor class for retrieving the total number of enrollment stages.
+ *
+ * This class interacts with the `FingerprintsRepository` to obtain the count
+ * of stages involved in the fingerprint enrollment process.
+ */
+class FingerprintEnrollStageCountInteractor (
+ fingerprintEnrollmentRepository: FingerprintEnrollmentRepository
+) {
+ /** The total number of enrollment stages. */
+ val count: Int = fingerprintEnrollmentRepository.enrollStageCount
+}
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintEnrollStageThresholdInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintEnrollStageThresholdInteractor.kt
new file mode 100644
index 0000000..a96e4ef
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintEnrollStageThresholdInteractor.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint2.domain.interactor
+
+import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintEnrollmentRepository
+
+/**
+ * Interactor class for retrieving the enrollment stage threshold.
+ *
+ * This class interacts with the `fingerprintEnrollmentRepository` to fetch the threshold value
+ * for a specific enrollment stage.
+ */
+class FingerprintEnrollStageThresholdInteractor(
+ private val fingerprintEnrollmentRepository: FingerprintEnrollmentRepository,
+) {
+ /**
+ * Retrieves the enrollment stage threshold for the given index.
+ *
+ * @param index The index of the enrollment stage.
+ * @return The threshold value for the specified stage.
+ */
+ fun getThreshold(index: Int): Float = fingerprintEnrollmentRepository.getEnrollStageThreshold(index)
+}
\ No newline at end of file
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt
index e55d6b8..e273bb7 100644
--- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt
@@ -19,10 +19,13 @@
import android.content.Context
import android.view.OrientationEventListener
import com.android.internal.R
+import com.android.settings.biometrics.fingerprint2.lib.model.Orientation
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.transform
/** Interactor which provides information about orientation */
@@ -45,6 +48,9 @@
* [R.bool.config_reverseDefaultConfigRotation]
*/
fun getRotationFromDefault(rotation: Int): Int
+
+ /** Indicates an orientation changed event has occurred */
+ val orientationChanged: Flow<Orientation>
}
class OrientationInteractorImpl(private val context: Context) : OrientationInteractor {
@@ -60,7 +66,10 @@
awaitClose { orientationEventListener.disable() }
}
- override val rotation: Flow<Int> = orientation.transform { emit(context.display.rotation) }
+ override val rotation: Flow<Int> =
+ orientation
+ .transform { emit(context.display.rotation) }
+ .onStart { emit(context.display.rotation) }
override val rotationFromDefault: Flow<Int> = rotation.map { getRotationFromDefault(it) }
@@ -73,4 +82,24 @@
rotation
}
}
+
+ override val orientationChanged: Flow<Orientation> =
+ rotationFromDefault
+ .map {
+ when (it) {
+ 1 -> {
+ Orientation.Portrait
+ }
+ 2 -> {
+ Orientation.ReverseLandscape
+ }
+ 3 -> {
+ Orientation.UpsideDownPortrait
+ }
+ else -> {
+ Orientation.Landscape
+ }
+ }
+ }
+ .distinctUntilChanged()
}
diff --git a/src/com/android/settings/biometrics/fingerprint2/lib/model/Orientation.kt b/src/com/android/settings/biometrics/fingerprint2/lib/model/Orientation.kt
new file mode 100644
index 0000000..c880677
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint2/lib/model/Orientation.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint2.lib.model
+
+/** The orientation events correspond to androids internal orientation events. */
+sealed class Orientation {
+ /** Indicates the device is in landscape orientation */
+ data object Landscape : Orientation()
+
+ /** Indicates the device is in reverse landscape orientation */
+ data object ReverseLandscape : Orientation()
+
+ /** Indicates the device is in portrait orientation */
+ data object Portrait : Orientation()
+
+ /** Indicates the device is in the upside down portrait orientation */
+ data object UpsideDownPortrait : Orientation()
+}
diff --git a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
index 22a39c8..14f55b8 100644
--- a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
@@ -77,9 +77,9 @@
// It would show in Available Devices group if the audio sharing flag is disabled or
// the device is not in the audio sharing session.
if (cachedDevice.isConnectedLeAudioDevice()) {
- if (BluetoothUtils.isAudioSharingEnabled()
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& BluetoothUtils.hasConnectedBroadcastSource(
- cachedDevice, mLocalBtManager)) {
+ cachedDevice, mLocalBtManager)) {
Log.d(
TAG,
"Filter out device : "
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java b/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java
index d62543b..e7c4c19 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java
@@ -38,6 +38,7 @@
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
+import com.android.settings.flags.Flags;
import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LeAudioProfile;
@@ -134,6 +135,9 @@
@Override
protected void init(PreferenceScreen screen) {
mProfilesContainer = screen.findPreference(getPreferenceKey());
+ if (Flags.enableBluetoothDeviceDetailsPolish()) {
+ mProfilesContainer.setLayoutResource(R.layout.preference_category_bluetooth_no_padding);
+ }
refresh();
}
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsController.java
index 93e1ff5..b741f08 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsController.java
@@ -87,6 +87,12 @@
mProfilesContainer.setLayoutResource(R.layout.preference_companion_app);
}
+ @Override
+ public boolean isAvailable() {
+ // Do not show this preference for now. More details in b/191992001#comment7
+ return false;
+ }
+
private List<AssociationInfo> getAssociations(String address) {
return filter(
mCompanionDeviceManager.getAllAssociations(),
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
index e42c654..d75e7da 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
@@ -96,6 +96,7 @@
new HashMap<String, List<CachedBluetoothDevice>>();
private boolean mIsLeAudioToggleEnabled = false;
private boolean mIsLeAudioOnlyDevice = false;
+ private boolean mHasExtraSpace;
@VisibleForTesting
PreferenceCategory mProfilesContainer;
@@ -106,7 +107,8 @@
LocalBluetoothManager manager,
CachedBluetoothDevice device,
Lifecycle lifecycle,
- @Nullable List<String> invisibleProfiles) {
+ @Nullable List<String> invisibleProfiles,
+ boolean hasExtraSpace) {
super(context, fragment, device, lifecycle);
mManager = manager;
mProfileManager = mManager.getProfileManager();
@@ -115,12 +117,17 @@
if (invisibleProfiles != null) {
mInvisibleProfiles = Set.copyOf(invisibleProfiles);
}
+ mHasExtraSpace = hasExtraSpace;
}
@Override
protected void init(PreferenceScreen screen) {
mProfilesContainer = (PreferenceCategory)screen.findPreference(getPreferenceKey());
- mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ if (mHasExtraSpace) {
+ mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ } else {
+ mProfilesContainer.setLayoutResource(R.layout.preference_category_bluetooth_no_padding);
+ }
// Call refresh here even though it will get called later in onResume, to avoid the
// list of switches appearing to "pop" into the page.
refresh();
@@ -609,7 +616,11 @@
Preference preference = mProfilesContainer.findPreference(KEY_BOTTOM_PREFERENCE);
if (preference == null) {
preference = new Preference(mContext);
- preference.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ if (mHasExtraSpace) {
+ preference.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ } else {
+ preference.setLayoutResource(R.layout.preference_category_bluetooth_no_padding);
+ }
preference.setEnabled(false);
preference.setKey(KEY_BOTTOM_PREFERENCE);
preference.setOrder(ORDINAL);
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index 0e51d17..355fae9 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -123,6 +123,14 @@
}
}
}
+
+ @Override
+ public void onDeviceBondStateChanged(
+ @NonNull CachedBluetoothDevice cachedDevice, int bondState) {
+ if (cachedDevice.equals(mCachedDevice)) {
+ finishFragmentIfNecessary();
+ }
+ }
};
private final BluetoothAdapter.OnMetadataChangedListener mExtraControlMetadataListener =
@@ -421,11 +429,13 @@
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
List<String> invisibleProfiles = List.of();
if (Flags.enableBluetoothDeviceDetailsPolish()) {
- mFormatter =
- FeatureFactory.getFeatureFactory()
- .getBluetoothFeatureProvider()
- .getDeviceDetailsFragmentFormatter(
- requireContext(), this, mBluetoothAdapter, mCachedDevice);
+ if (mFormatter == null) {
+ mFormatter =
+ FeatureFactory.getFeatureFactory()
+ .getBluetoothFeatureProvider()
+ .getDeviceDetailsFragmentFormatter(
+ requireContext(), this, mBluetoothAdapter, mCachedDevice);
+ }
invisibleProfiles =
mFormatter.getInvisibleBluetoothProfiles(
FragmentTypeModel.DeviceDetailsMainFragment.INSTANCE);
@@ -448,7 +458,7 @@
controllers.add(new BluetoothDetailsSpatialAudioController(context, this, mCachedDevice,
lifecycle));
controllers.add(new BluetoothDetailsProfilesController(context, this, mManager,
- mCachedDevice, lifecycle, invisibleProfiles));
+ mCachedDevice, lifecycle, invisibleProfiles, invisibleProfiles == null));
controllers.add(new BluetoothDetailsMacAddressController(context, this, mCachedDevice,
lifecycle));
controllers.add(new StylusDevicesController(context, mInputDevice, mCachedDevice,
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java b/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java
index 387bf83..36a14aa 100644
--- a/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java
@@ -228,19 +228,19 @@
final BluetoothDevice device = cachedDevice.getDevice();
if (device != null
&& mSelectedList.contains(device)) {
- if (!BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(getContext())) {
+ if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ && state == BluetoothAdapter.STATE_CONNECTED
+ && device.equals(mJustBonded)
+ && mShouldTriggerAudioSharingShareThenPairFlow) {
+ Log.d(getLogTag(),
+ "onProfileConnectionStateChanged, assistant profile connected");
+ dismissConnectingDialog();
+ mHandler.removeMessages(AUTO_DISMISS_MESSAGE_ID);
+ finishFragmentWithResultForAudioSharing(device);
+ }
+ } else {
finish();
- return;
- }
- if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
- && state == BluetoothAdapter.STATE_CONNECTED
- && device.equals(mJustBonded)
- && mShouldTriggerAudioSharingShareThenPairFlow) {
- Log.d(getLogTag(),
- "onProfileConnectionStateChanged, assistant profile connected");
- dismissConnectingDialog();
- mHandler.removeMessages(AUTO_DISMISS_MESSAGE_ID);
- finishFragmentWithResultForAudioSharing(device);
}
} else {
onDeviceDeleted(cachedDevice);
@@ -309,15 +309,17 @@
@VisibleForTesting
boolean shouldTriggerAudioSharingShareThenPairFlow() {
- if (!BluetoothUtils.isAudioSharingEnabled()) return false;
- Activity activity = getActivity();
- Intent intent = activity == null ? null : activity.getIntent();
- Bundle args =
- intent == null ? null :
- intent.getBundleExtra(
- SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
- return args != null
- && args.getBoolean(EXTRA_PAIR_AND_JOIN_SHARING, false);
+ if (BluetoothUtils.isAudioSharingUIAvailable(getContext())) {
+ Activity activity = getActivity();
+ Intent intent = activity == null ? null : activity.getIntent();
+ Bundle args =
+ intent == null ? null :
+ intent.getBundleExtra(
+ SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ return args != null
+ && args.getBoolean(EXTRA_PAIR_AND_JOIN_SHARING, false);
+ }
+ return false;
}
private void addOnMetadataChangedListener(@Nullable BluetoothDevice device) {
diff --git a/src/com/android/settings/bluetooth/BluetoothFeatureProvider.java b/src/com/android/settings/bluetooth/BluetoothFeatureProvider.java
index be0f6f3..d87e609 100644
--- a/src/com/android/settings/bluetooth/BluetoothFeatureProvider.java
+++ b/src/com/android/settings/bluetooth/BluetoothFeatureProvider.java
@@ -20,26 +20,23 @@
import android.bluetooth.BluetoothDevice;
import android.content.ComponentName;
import android.content.Context;
-import android.media.AudioManager;
import android.media.Spatializer;
import android.net.Uri;
import androidx.annotation.NonNull;
-import androidx.lifecycle.LifecycleCoroutineScope;
import androidx.preference.Preference;
import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.bluetooth.domain.interactor.SpatialAudioInteractor;
import com.android.settings.bluetooth.ui.view.DeviceDetailsFragmentFormatter;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.devicesettings.data.repository.DeviceSettingRepository;
+import kotlinx.coroutines.CoroutineScope;
+
import java.util.List;
import java.util.Set;
-/**
- * Provider for bluetooth related features.
- */
+/** Provider for bluetooth related features. */
public interface BluetoothFeatureProvider {
/**
@@ -86,26 +83,18 @@
/**
* Gets the bluetooth profile preference keys which should be hidden in the device details page.
*
- * @param context Context
+ * @param context Context
* @param bluetoothDevice the bluetooth device
* @return the profiles which should be hidden
*/
- Set<String> getInvisibleProfilePreferenceKeys(
- Context context, BluetoothDevice bluetoothDevice);
+ Set<String> getInvisibleProfilePreferenceKeys(Context context, BluetoothDevice bluetoothDevice);
/** Gets DeviceSettingRepository. */
@NonNull
DeviceSettingRepository getDeviceSettingRepository(
@NonNull Context context,
@NonNull BluetoothAdapter bluetoothAdapter,
- @NonNull LifecycleCoroutineScope scope);
-
- /** Gets spatial audio interactor. */
- @NonNull
- SpatialAudioInteractor getSpatialAudioInteractor(
- @NonNull Context context,
- @NonNull AudioManager audioManager,
- @NonNull LifecycleCoroutineScope scope);
+ @NonNull CoroutineScope scope);
/** Gets device details fragment layout formatter. */
@NonNull
diff --git a/src/com/android/settings/bluetooth/BluetoothFeatureProviderImpl.kt b/src/com/android/settings/bluetooth/BluetoothFeatureProviderImpl.kt
index 25c586e..082c693 100644
--- a/src/com/android/settings/bluetooth/BluetoothFeatureProviderImpl.kt
+++ b/src/com/android/settings/bluetooth/BluetoothFeatureProviderImpl.kt
@@ -22,21 +22,17 @@
import android.media.AudioManager
import android.media.Spatializer
import android.net.Uri
-import androidx.lifecycle.LifecycleCoroutineScope
import androidx.preference.Preference
import com.android.settings.SettingsPreferenceFragment
-import com.android.settings.bluetooth.domain.interactor.SpatialAudioInteractor
-import com.android.settings.bluetooth.domain.interactor.SpatialAudioInteractorImpl
import com.android.settings.bluetooth.ui.view.DeviceDetailsFragmentFormatter
import com.android.settings.bluetooth.ui.view.DeviceDetailsFragmentFormatterImpl
import com.android.settingslib.bluetooth.BluetoothUtils
import com.android.settingslib.bluetooth.CachedBluetoothDevice
import com.android.settingslib.bluetooth.devicesettings.data.repository.DeviceSettingRepository
import com.android.settingslib.bluetooth.devicesettings.data.repository.DeviceSettingRepositoryImpl
-import com.android.settingslib.media.data.repository.SpatializerRepositoryImpl
-import com.android.settingslib.media.domain.interactor.SpatializerInteractor
import com.google.common.collect.ImmutableList
import com.google.common.collect.ImmutableSet
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
/** Impl of [BluetoothFeatureProvider] */
@@ -76,25 +72,10 @@
override fun getDeviceSettingRepository(
context: Context,
bluetoothAdapter: BluetoothAdapter,
- scope: LifecycleCoroutineScope
+ scope: CoroutineScope
): DeviceSettingRepository =
DeviceSettingRepositoryImpl(context, bluetoothAdapter, scope, Dispatchers.IO)
- override fun getSpatialAudioInteractor(
- context: Context,
- audioManager: AudioManager,
- scope: LifecycleCoroutineScope
- ): SpatialAudioInteractor {
- return SpatialAudioInteractorImpl(
- context, audioManager,
- SpatializerInteractor(
- SpatializerRepositoryImpl(
- getSpatializer(context),
- Dispatchers.IO
- )
- ), scope, Dispatchers.IO)
- }
-
override fun getDeviceDetailsFragmentFormatter(
context: Context,
fragment: SettingsPreferenceFragment,
diff --git a/src/com/android/settings/bluetooth/domain/interactor/SpatialAudioInteractor.kt b/src/com/android/settings/bluetooth/domain/interactor/SpatialAudioInteractor.kt
deleted file mode 100644
index 6b72b53..0000000
--- a/src/com/android/settings/bluetooth/domain/interactor/SpatialAudioInteractor.kt
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2024 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.settings.bluetooth.domain.interactor
-
-import android.content.Context
-import android.media.AudioManager
-import android.util.Log
-import com.android.settings.R
-import com.android.settingslib.bluetooth.BluetoothUtils
-import com.android.settingslib.bluetooth.CachedBluetoothDevice
-import com.android.settingslib.bluetooth.devicesettings.DeviceSettingId
-import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingIcon
-import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingModel
-import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingStateModel
-import com.android.settingslib.bluetooth.devicesettings.shared.model.ToggleModel
-import com.android.settingslib.media.domain.interactor.SpatializerInteractor
-import kotlin.coroutines.CoroutineContext
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.flow.SharingStarted
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onStart
-import kotlinx.coroutines.flow.stateIn
-import kotlinx.coroutines.launch
-
-/** Provides device setting for spatial audio. */
-interface SpatialAudioInteractor {
- /** Gets device setting for spatial audio */
- fun getDeviceSetting(
- cachedDevice: CachedBluetoothDevice,
- ): Flow<DeviceSettingModel?>
-}
-
-class SpatialAudioInteractorImpl(
- private val context: Context,
- private val audioManager: AudioManager,
- private val spatializerInteractor: SpatializerInteractor,
- private val coroutineScope: CoroutineScope,
- private val backgroundCoroutineContext: CoroutineContext,
-) : SpatialAudioInteractor {
- private val spatialAudioOffToggle =
- ToggleModel(
- context.getString(R.string.spatial_audio_multi_toggle_off),
- DeviceSettingIcon.ResourceIcon(R.drawable.ic_spatial_audio_off))
- private val spatialAudioOnToggle =
- ToggleModel(
- context.getString(R.string.spatial_audio_multi_toggle_on),
- DeviceSettingIcon.ResourceIcon(R.drawable.ic_spatial_audio))
- private val headTrackingOnToggle =
- ToggleModel(
- context.getString(R.string.spatial_audio_multi_toggle_head_tracking_on),
- DeviceSettingIcon.ResourceIcon(R.drawable.ic_head_tracking))
- private val changes = MutableSharedFlow<Unit>()
-
- override fun getDeviceSetting(
- cachedDevice: CachedBluetoothDevice,
- ): Flow<DeviceSettingModel?> =
- changes
- .onStart { emit(Unit) }
- .map { getSpatialAudioDeviceSettingModel(cachedDevice) }
- .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), initialValue = null)
-
- private suspend fun getSpatialAudioDeviceSettingModel(
- cachedDevice: CachedBluetoothDevice,
- ): DeviceSettingModel? {
- // TODO(b/343317785): use audio repository instead of calling AudioManager directly.
- Log.i(TAG, "CachedDevice: $cachedDevice profiles: ${cachedDevice.profiles}")
- val attributes =
- BluetoothUtils.getAudioDeviceAttributesForSpatialAudio(
- cachedDevice, audioManager.getBluetoothAudioDeviceCategory(cachedDevice.address))
- ?: run {
- Log.i(TAG, "No audio profiles in cachedDevice: ${cachedDevice.address}.")
- return null
- }
-
- Log.i(TAG, "Audio device attributes for ${cachedDevice.address}: $attributes.")
- val spatialAudioAvailable = spatializerInteractor.isSpatialAudioAvailable(attributes)
- if (!spatialAudioAvailable) {
- Log.i(TAG, "Spatial audio is not available for ${cachedDevice.address}")
- return null
- }
- val headTrackingAvailable =
- spatialAudioAvailable && spatializerInteractor.isHeadTrackingAvailable(attributes)
- val toggles =
- if (headTrackingAvailable) {
- listOf(spatialAudioOffToggle, spatialAudioOnToggle, headTrackingOnToggle)
- } else {
- listOf(spatialAudioOffToggle, spatialAudioOnToggle)
- }
- val spatialAudioEnabled = spatializerInteractor.isSpatialAudioEnabled(attributes)
- val headTrackingEnabled =
- spatialAudioEnabled && spatializerInteractor.isHeadTrackingEnabled(attributes)
-
- val activeIndex =
- when {
- headTrackingEnabled -> INDEX_HEAD_TRACKING_ENABLED
- spatialAudioEnabled -> INDEX_SPATIAL_AUDIO_ON
- else -> INDEX_SPATIAL_AUDIO_OFF
- }
- Log.i(
- TAG,
- "Head tracking available: $headTrackingAvailable, " +
- "spatial audio enabled: $spatialAudioEnabled, " +
- "head tracking enabled: $headTrackingEnabled")
- return DeviceSettingModel.MultiTogglePreference(
- cachedDevice = cachedDevice,
- id = DeviceSettingId.DEVICE_SETTING_ID_SPATIAL_AUDIO_MULTI_TOGGLE,
- title = context.getString(R.string.spatial_audio_multi_toggle_title),
- toggles = toggles,
- isActive = spatialAudioEnabled,
- state = DeviceSettingStateModel.MultiTogglePreferenceState(activeIndex),
- isAllowedChangingState = true,
- updateState = { newState ->
- coroutineScope.launch(backgroundCoroutineContext) {
- Log.i(TAG, "Update spatial audio state: $newState")
- when (newState.selectedIndex) {
- INDEX_SPATIAL_AUDIO_OFF -> {
- spatializerInteractor.setSpatialAudioEnabled(attributes, false)
- }
- INDEX_SPATIAL_AUDIO_ON -> {
- spatializerInteractor.setSpatialAudioEnabled(attributes, true)
- spatializerInteractor.setHeadTrackingEnabled(attributes, false)
- }
- INDEX_HEAD_TRACKING_ENABLED -> {
- spatializerInteractor.setSpatialAudioEnabled(attributes, true)
- spatializerInteractor.setHeadTrackingEnabled(attributes, true)
- }
- }
- changes.emit(Unit)
- }
- })
- }
-
- companion object {
- private const val TAG = "SpatialAudioInteractorImpl"
- private const val INDEX_SPATIAL_AUDIO_OFF = 0
- private const val INDEX_SPATIAL_AUDIO_ON = 1
- private const val INDEX_HEAD_TRACKING_ENABLED = 2
- }
-}
diff --git a/src/com/android/settings/bluetooth/ui/composable/MultiTogglePreference.kt b/src/com/android/settings/bluetooth/ui/composable/MultiTogglePreference.kt
new file mode 100644
index 0000000..b524c21
--- /dev/null
+++ b/src/com/android/settings/bluetooth/ui/composable/MultiTogglePreference.kt
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2024 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.settings.bluetooth.ui.composable
+
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.defaultMinSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.android.settings.bluetooth.ui.composable.Icon as DeviceSettingComposeIcon
+import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
+
+@Composable
+fun MultiTogglePreference(pref: DeviceSettingPreferenceModel.MultiTogglePreference) {
+ Column(modifier = Modifier.padding(24.dp)) {
+ Row(
+ modifier = Modifier.fillMaxWidth().height(56.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.SpaceEvenly,
+ ) {
+ Box {
+ Row {
+ for ((idx, toggle) in pref.toggles.withIndex()) {
+ val selected = idx == pref.selectedIndex
+ Column(
+ modifier = Modifier.weight(1f)
+ .padding(start = if (idx == 0) 0.dp else 1.dp)
+ .height(56.dp)
+ .background(
+ Color.Transparent,
+ shape = RoundedCornerShape(12.dp),
+ ),
+ verticalArrangement = Arrangement.Center,
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ val startCornerRadius = if (idx == 0) 12.dp else 0.dp
+ val endCornerRadius = if (idx == pref.toggles.size - 1) 12.dp else 0.dp
+ Button(
+ onClick = { pref.onSelectedChange(idx) },
+ modifier = Modifier.fillMaxSize(),
+ enabled = pref.isAllowedChangingState,
+ colors = getButtonColors(selected),
+ shape = RoundedCornerShape(
+ startCornerRadius,
+ endCornerRadius,
+ endCornerRadius,
+ startCornerRadius,
+ )
+ ) {
+ DeviceSettingComposeIcon(
+ toggle.icon,
+ modifier = Modifier.size(24.dp),
+ )
+ }
+ }
+ }
+ }
+ }
+ }
+ Spacer(modifier = Modifier.height(12.dp))
+ Row(
+ modifier = Modifier.fillMaxWidth().defaultMinSize(32.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.SpaceEvenly,
+ ) {
+ for (toggle in pref.toggles) {
+ Text(
+ text = toggle.label,
+ fontSize = 12.sp,
+ textAlign = TextAlign.Center,
+ overflow = TextOverflow.Visible,
+ modifier = Modifier.weight(1f).padding(horizontal = 8.dp),
+ )
+ }
+ }
+ }
+}
+
+@Composable
+private fun getButtonColors(isActive: Boolean) = if (isActive) {
+ ButtonDefaults.buttonColors(
+ containerColor = MaterialTheme.colorScheme.primary,
+ contentColor = MaterialTheme.colorScheme.onPrimary,
+ )
+} else {
+ ButtonDefaults.buttonColors(
+ containerColor = MaterialTheme.colorScheme.surfaceVariant,
+ contentColor = MaterialTheme.colorScheme.onPrimaryContainer,
+ )
+}
diff --git a/src/com/android/settings/bluetooth/ui/composable/MultiTogglePreferenceGroup.kt b/src/com/android/settings/bluetooth/ui/composable/MultiTogglePreferenceGroup.kt
deleted file mode 100644
index 9743737..0000000
--- a/src/com/android/settings/bluetooth/ui/composable/MultiTogglePreferenceGroup.kt
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright (C) 2024 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.settings.bluetooth.ui.composable
-
-import androidx.compose.animation.core.animateFloatAsState
-import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.PaddingValues
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.defaultMinSize
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.offset
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.width
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material3.BasicAlertDialog
-import androidx.compose.material3.Button
-import androidx.compose.material3.ButtonDefaults
-import androidx.compose.material3.Card
-import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.material3.Icon
-import androidx.compose.material3.LocalContentColor
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Rect
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.layout.boundsInParent
-import androidx.compose.ui.layout.onGloballyPositioned
-import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.semantics.Role
-import androidx.compose.ui.semantics.contentDescription
-import androidx.compose.ui.semantics.role
-import androidx.compose.ui.semantics.semantics
-import androidx.compose.ui.semantics.toggleableState
-import androidx.compose.ui.state.ToggleableState
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-import androidx.compose.ui.window.DialogProperties
-import com.android.settings.R
-import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
-import com.android.settings.bluetooth.ui.composable.Icon as DeviceSettingComposeIcon
-import com.android.settingslib.spa.framework.theme.SettingsDimension
-import com.android.settingslib.spa.widget.dialog.getDialogWidth
-
-@Composable
-fun MultiTogglePreferenceGroup(
- preferenceModels: List<DeviceSettingPreferenceModel.MultiTogglePreference>,
-) {
- var settingIdForPopUp by remember { mutableStateOf<Int?>(null) }
-
- settingIdForPopUp?.let { id ->
- preferenceModels.find { it.id == id && it.isAllowedChangingState }?.let {
- dialog(it) { settingIdForPopUp = null }
- } ?: run {
- settingIdForPopUp = null
- }
- }
-
- Row(
- modifier = Modifier.padding(SettingsDimension.itemPadding),
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(24.dp),
- ) {
- preferenceModels.forEach { preferenceModel ->
- Column(
- modifier = Modifier.weight(1f),
- verticalArrangement = Arrangement.Top,
- horizontalAlignment = Alignment.CenterHorizontally,
- ) {
- Row {
- Surface(
- modifier = Modifier.height(64.dp),
- shape = RoundedCornerShape(28.dp),
- color = MaterialTheme.colorScheme.surface) {
- Button(
- modifier =
- Modifier.fillMaxSize().padding(8.dp).semantics {
- role = Role.Switch
- toggleableState =
- if (!preferenceModel.isAllowedChangingState) {
- ToggleableState.Indeterminate
- } else if (preferenceModel.isActive) {
- ToggleableState.On
- } else {
- ToggleableState.Off
- }
- contentDescription = preferenceModel.title
- },
- onClick = { settingIdForPopUp = preferenceModel.id },
- enabled = preferenceModel.isAllowedChangingState,
- shape = RoundedCornerShape(20.dp),
- colors = getButtonColors(preferenceModel.isActive),
- contentPadding = PaddingValues(0.dp)) {
- DeviceSettingComposeIcon(
- preferenceModel.toggles[preferenceModel.selectedIndex]
- .icon,
- modifier = Modifier.size(24.dp))
- }
- }
- }
- Row { Text(text = preferenceModel.title, fontSize = 12.sp) }
- }
- }
- }
-}
-
-@Composable
-private fun getButtonColors(isActive: Boolean) =
- if (isActive) {
- ButtonDefaults.buttonColors(
- containerColor = MaterialTheme.colorScheme.tertiaryContainer,
- contentColor = MaterialTheme.colorScheme.onTertiaryContainer,
- )
- } else {
- ButtonDefaults.buttonColors(
- containerColor = Color.Transparent,
- contentColor = MaterialTheme.colorScheme.onSurfaceVariant,
- )
- }
-
-@OptIn(ExperimentalMaterial3Api::class)
-@Composable
-private fun dialog(
- multiTogglePreference: DeviceSettingPreferenceModel.MultiTogglePreference,
- onDismiss: () -> Unit
-) {
- BasicAlertDialog(
- onDismissRequest = { onDismiss() },
- modifier = Modifier.width(getDialogWidth()),
- properties = DialogProperties(usePlatformDefaultWidth = false),
- content = {
- Card(
- shape = RoundedCornerShape(28.dp),
- modifier = Modifier.fillMaxWidth().height(192.dp),
- content = {
- Box {
- Button(
- onClick = { onDismiss() },
- modifier = Modifier.padding(8.dp).align(Alignment.TopEnd).size(48.dp),
- contentPadding = PaddingValues(12.dp),
- colors =
- ButtonDefaults.buttonColors(containerColor = Color.Transparent),
- ) {
- Icon(
- painterResource(id = R.drawable.ic_close),
- null,
- tint = MaterialTheme.colorScheme.inverseSurface)
- }
- Box(modifier = Modifier.padding(horizontal = 8.dp, vertical = 20.dp)) {
- dialogContent(multiTogglePreference)
- }
- }
- },
- )
- })
-}
-
-@Composable
-private fun dialogContent(multiTogglePreference: DeviceSettingPreferenceModel.MultiTogglePreference) {
- Column {
- Row(
- modifier = Modifier.fillMaxWidth().height(24.dp),
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.SpaceEvenly,
- ) {
- Text(text = multiTogglePreference.title, fontSize = 16.sp)
- }
- Spacer(modifier = Modifier.height(20.dp))
- var selectedRect by remember { mutableStateOf<Rect?>(null) }
- val offset =
- selectedRect?.let { rect ->
- animateFloatAsState(targetValue = rect.left, finishedListener = {}).value
- }
-
- Row(
- modifier =
- Modifier.fillMaxWidth()
- .height(64.dp)
- .background(
- MaterialTheme.colorScheme.surface, shape = RoundedCornerShape(28.dp)),
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.SpaceEvenly,
- ) {
- Box {
- offset?.let { offset ->
- with(LocalDensity.current) {
- Box(
- modifier =
- Modifier.offset(offset.toDp(), 0.dp)
- .height(selectedRect!!.height.toDp())
- .width(selectedRect!!.width.toDp())
- .background(
- MaterialTheme.colorScheme.tertiaryContainer,
- shape = RoundedCornerShape(20.dp)))
- }
- }
- Row {
- for ((idx, toggle) in multiTogglePreference.toggles.withIndex()) {
- val selected = idx == multiTogglePreference.selectedIndex
- Column(
- modifier =
- Modifier.weight(1f)
- .padding(horizontal = 8.dp)
- .height(48.dp)
- .background(
- Color.Transparent, shape = RoundedCornerShape(28.dp))
- .onGloballyPositioned { layoutCoordinates ->
- if (selected) {
- selectedRect = layoutCoordinates.boundsInParent()
- }
- },
- verticalArrangement = Arrangement.Center,
- horizontalAlignment = Alignment.CenterHorizontally,
- ) {
- Button(
- onClick = {
- multiTogglePreference.onSelectedChange(idx)
- },
- modifier = Modifier.fillMaxSize(),
- colors =
- ButtonDefaults.buttonColors(
- containerColor = Color.Transparent,
- contentColor = LocalContentColor.current),
- ) {
- DeviceSettingComposeIcon(
- toggle.icon, modifier = Modifier.size(24.dp))
- }
- }
- }
- }
- }
- }
- Spacer(modifier = Modifier.height(12.dp))
- Row(
- modifier = Modifier.fillMaxWidth().defaultMinSize(32.dp),
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.SpaceEvenly,
- ) {
- for (toggle in multiTogglePreference.toggles) {
- Text(
- text = toggle.label,
- fontSize = 12.sp,
- textAlign = TextAlign.Center,
- overflow = TextOverflow.Visible,
- modifier = Modifier.weight(1f).padding(horizontal = 8.dp))
- }
- }
- }
-}
diff --git a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt
index ad4176f..23878da 100644
--- a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt
+++ b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt
@@ -16,14 +16,14 @@
package com.android.settings.bluetooth.ui.view
+import android.app.ActivityOptions
import android.bluetooth.BluetoothAdapter
import android.content.Context
import android.content.Intent
-import android.media.AudioManager
import android.os.Bundle
import androidx.compose.animation.AnimatedVisibility
-import androidx.compose.animation.expandVertically
-import androidx.compose.animation.shrinkVertically
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
@@ -33,37 +33,37 @@
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
import com.android.settings.R
import com.android.settings.SettingsPreferenceFragment
import com.android.settings.bluetooth.ui.composable.Icon
-import com.android.settings.bluetooth.ui.composable.MultiTogglePreferenceGroup
+import com.android.settings.bluetooth.ui.composable.MultiTogglePreference
import com.android.settings.bluetooth.ui.layout.DeviceSettingLayout
import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
import com.android.settings.bluetooth.ui.model.FragmentTypeModel
import com.android.settings.bluetooth.ui.view.DeviceDetailsMoreSettingsFragment.Companion.KEY_DEVICE_ADDRESS
import com.android.settings.bluetooth.ui.viewmodel.BluetoothDeviceDetailsViewModel
import com.android.settings.core.SubSettingLauncher
-import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settings.spa.preference.ComposePreference
import com.android.settingslib.bluetooth.CachedBluetoothDevice
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingActionModel
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingConfigItemModel
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingIcon
import com.android.settingslib.spa.framework.theme.SettingsDimension
+import com.android.settingslib.spa.widget.button.ActionButton
+import com.android.settingslib.spa.widget.button.ActionButtons
import com.android.settingslib.spa.widget.preference.Preference as SpaPreference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference
+import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.Footer
import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -97,29 +97,17 @@
class DeviceDetailsFragmentFormatterImpl(
private val context: Context,
private val fragment: SettingsPreferenceFragment,
- bluetoothAdapter: BluetoothAdapter,
+ private val bluetoothAdapter: BluetoothAdapter,
private val cachedDevice: CachedBluetoothDevice,
private val backgroundCoroutineContext: CoroutineContext,
) : DeviceDetailsFragmentFormatter {
- private val repository =
- featureFactory.bluetoothFeatureProvider.getDeviceSettingRepository(
- fragment.requireActivity().application,
- bluetoothAdapter,
- fragment.lifecycleScope,
- )
- private val spatialAudioInteractor =
- featureFactory.bluetoothFeatureProvider.getSpatialAudioInteractor(
- fragment.requireActivity().application,
- context.getSystemService(AudioManager::class.java),
- fragment.lifecycleScope,
- )
+
private val viewModel: BluetoothDeviceDetailsViewModel =
ViewModelProvider(
fragment,
BluetoothDeviceDetailsViewModel.Factory(
fragment.requireActivity().application,
- repository,
- spatialAudioInteractor,
+ bluetoothAdapter,
cachedDevice,
backgroundCoroutineContext,
),
@@ -222,25 +210,21 @@
.collectAsStateWithLifecycle(initialValue = false)
val settings = contents
- AnimatedVisibility(
- visible = settings.isNotEmpty(),
- enter = expandVertically(expandFrom = Alignment.Top),
- exit = shrinkVertically(shrinkTowards = Alignment.Top),
- ) {
+ AnimatedVisibility(visible = settings.isNotEmpty(), enter = fadeIn(), exit = fadeOut()) {
Box {
Box(
modifier =
- Modifier.matchParentSize()
- .padding(16.dp, 0.dp, 8.dp, 0.dp)
- .background(
- color =
- if (highlighted) {
- MaterialTheme.colorScheme.primaryContainer
- } else {
- Color.Transparent
- },
- shape = RoundedCornerShape(28.dp),
- ),
+ Modifier.matchParentSize()
+ .padding(16.dp, 0.dp, 8.dp, 0.dp)
+ .background(
+ color =
+ if (highlighted) {
+ MaterialTheme.colorScheme.primaryContainer
+ } else {
+ Color.Transparent
+ },
+ shape = RoundedCornerShape(28.dp),
+ )
) {}
buildPreferences(settings)
}
@@ -260,7 +244,7 @@
buildSwitchPreference(setting)
}
is DeviceSettingPreferenceModel.MultiTogglePreference -> {
- buildMultiTogglePreference(listOf(setting))
+ buildMultiTogglePreference(setting)
}
is DeviceSettingPreferenceModel.FooterPreference -> {
buildFooterPreference(setting)
@@ -272,28 +256,15 @@
null -> {}
}
}
- else -> {
- if (
- !settings.all {
- it is DeviceSettingPreferenceModel.MultiTogglePreference
- }
- ) {
- return
- }
- buildMultiTogglePreference(
- settings.filterIsInstance<
- DeviceSettingPreferenceModel.MultiTogglePreference
- >()
- )
- }
+ else -> {}
}
}
@Composable
private fun buildMultiTogglePreference(
- prefs: List<DeviceSettingPreferenceModel.MultiTogglePreference>
+ pref: DeviceSettingPreferenceModel.MultiTogglePreference
) {
- MultiTogglePreferenceGroup(prefs)
+ MultiTogglePreference(pref)
}
@Composable
@@ -319,6 +290,7 @@
TwoTargetSwitchPreference(
switchPrefModel,
primaryOnClick = { triggerAction(model.action) },
+ primaryEnabled = { !model.disabled }
)
} else {
SwitchPreference(switchPrefModel)
@@ -391,7 +363,12 @@
context.startActivity(action.intent)
}
is DeviceSettingActionModel.PendingIntentAction -> {
- action.pendingIntent.send()
+ val options =
+ ActivityOptions.makeBasic()
+ .setPendingIntentBackgroundActivityStartMode(
+ ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_ALWAYS
+ )
+ action.pendingIntent.send(options.toBundle())
}
}
}
diff --git a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt
index 7cb1c0d..47fda74 100644
--- a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt
+++ b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt
@@ -120,13 +120,15 @@
finish()
return emptyList()
}
- formatter =
- featureFactory.bluetoothFeatureProvider.getDeviceDetailsFragmentFormatter(
- requireContext(),
- this,
- bluetoothManager.adapter,
- cachedDevice,
- )
+ if (!this::formatter.isInitialized) {
+ formatter =
+ featureFactory.bluetoothFeatureProvider.getDeviceDetailsFragmentFormatter(
+ requireContext(),
+ this,
+ bluetoothManager.adapter,
+ cachedDevice,
+ )
+ }
helpItem =
formatter
.getMenuItem(FragmentTypeModel.DeviceDetailsMoreSettingsFragment)
@@ -141,6 +143,7 @@
formatter.getInvisibleBluetoothProfiles(
FragmentTypeModel.DeviceDetailsMoreSettingsFragment
),
+ false,
),
BluetoothDetailsAudioDeviceTypeController(
context,
diff --git a/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModel.kt b/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModel.kt
index 3b7a582..8d3b853 100644
--- a/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModel.kt
+++ b/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModel.kt
@@ -17,20 +17,20 @@
package com.android.settings.bluetooth.ui.viewmodel
import android.app.Application
+import android.bluetooth.BluetoothAdapter
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.android.settings.R
-import com.android.settings.bluetooth.domain.interactor.SpatialAudioInteractor
import com.android.settings.bluetooth.ui.layout.DeviceSettingLayout
import com.android.settings.bluetooth.ui.layout.DeviceSettingLayoutColumn
import com.android.settings.bluetooth.ui.layout.DeviceSettingLayoutRow
import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
import com.android.settings.bluetooth.ui.model.FragmentTypeModel
+import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.bluetooth.CachedBluetoothDevice
import com.android.settingslib.bluetooth.devicesettings.DeviceSettingId
-import com.android.settingslib.bluetooth.devicesettings.data.repository.DeviceSettingRepository
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingConfigItemModel
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingIcon
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingModel
@@ -47,19 +47,23 @@
class BluetoothDeviceDetailsViewModel(
private val application: Application,
- private val deviceSettingRepository: DeviceSettingRepository,
- private val spatialAudioInteractor: SpatialAudioInteractor,
+ private val bluetoothAdapter: BluetoothAdapter,
private val cachedDevice: CachedBluetoothDevice,
backgroundCoroutineContext: CoroutineContext,
) : AndroidViewModel(application) {
+ private val deviceSettingRepository =
+ featureFactory.bluetoothFeatureProvider.getDeviceSettingRepository(
+ application,
+ bluetoothAdapter,
+ viewModelScope,
+ )
+
private val items =
viewModelScope.async(backgroundCoroutineContext, start = CoroutineStart.LAZY) {
deviceSettingRepository.getDeviceSettingsConfig(cachedDevice)
}
- private val spatialAudioModel by lazy { spatialAudioInteractor.getDeviceSetting(cachedDevice) }
-
suspend fun getItems(fragment: FragmentTypeModel): List<DeviceSettingConfigItemModel>? =
when (fragment) {
is FragmentTypeModel.DeviceDetailsMainFragment -> items.await()?.mainItems
@@ -81,11 +85,8 @@
if (settingId == DeviceSettingId.DEVICE_SETTING_ID_MORE_SETTINGS) {
return flowOf(DeviceSettingPreferenceModel.MoreSettingsPreference(settingId))
}
- return when (settingId) {
- DeviceSettingId.DEVICE_SETTING_ID_SPATIAL_AUDIO_MULTI_TOGGLE ->
- spatialAudioModel
- else -> deviceSettingRepository.getDeviceSetting(cachedDevice, settingId)
- }.map { it?.toPreferenceModel() }
+ return deviceSettingRepository.getDeviceSetting(cachedDevice, settingId)
+ .map { it?.toPreferenceModel() }
}
private fun DeviceSettingModel.toPreferenceModel(): DeviceSettingPreferenceModel? {
@@ -152,7 +153,6 @@
val positionToSettingIds =
combine(configDeviceSetting) { settings ->
val positionMapping = mutableMapOf<Int, List<DeviceSettingLayoutColumn>>()
- var multiToggleSettingIds: MutableList<DeviceSettingLayoutColumn>? = null
for (i in settings.indices) {
val configItem = configItems[i]
val setting = settings[i]
@@ -160,35 +160,13 @@
if (!isXmlPreference && setting == null) {
continue
}
- if (setting !is DeviceSettingPreferenceModel.MultiTogglePreference) {
- multiToggleSettingIds = null
- positionMapping[i] =
- listOf(
- DeviceSettingLayoutColumn(
- configItem.settingId,
- configItem.highlighted,
- )
- )
- continue
- }
-
- if (multiToggleSettingIds != null) {
- multiToggleSettingIds.add(
+ positionMapping[i] =
+ listOf(
DeviceSettingLayoutColumn(
configItem.settingId,
configItem.highlighted,
)
)
- } else {
- multiToggleSettingIds =
- mutableListOf(
- DeviceSettingLayoutColumn(
- configItem.settingId,
- configItem.highlighted,
- )
- )
- positionMapping[i] = multiToggleSettingIds
- }
}
positionMapping
}
@@ -202,8 +180,7 @@
class Factory(
private val application: Application,
- private val deviceSettingRepository: DeviceSettingRepository,
- private val spatialAudioInteractor: SpatialAudioInteractor,
+ private val bluetoothAdapter: BluetoothAdapter,
private val cachedDevice: CachedBluetoothDevice,
private val backgroundCoroutineContext: CoroutineContext,
) : ViewModelProvider.Factory {
@@ -211,8 +188,7 @@
@Suppress("UNCHECKED_CAST")
return BluetoothDeviceDetailsViewModel(
application,
- deviceSettingRepository,
- spatialAudioInteractor,
+ bluetoothAdapter,
cachedDevice,
backgroundCoroutineContext,
)
diff --git a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
index c67995a..432317a 100644
--- a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
+++ b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
@@ -179,7 +179,7 @@
super(context, KEY);
mBtManager = Utils.getLocalBtManager(mContext);
mExecutor = Executors.newSingleThreadExecutor();
- if (BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
mBroadcast =
mBtManager == null
? null
@@ -200,7 +200,7 @@
Log.d(TAG, "onStart() Bluetooth is not supported on this device");
return;
}
- if (BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
registerAudioSharingCallbacks();
}
mBtManager.getEventManager().registerCallback(this);
@@ -216,7 +216,7 @@
Log.d(TAG, "onStop() Bluetooth is not supported on this device");
return;
}
- if (BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
unregisterAudioSharingCallbacks();
}
if (mBluetoothDeviceUpdater != null) {
@@ -278,7 +278,7 @@
public void onDeviceClick(Preference preference) {
final CachedBluetoothDevice cachedDevice =
((BluetoothDevicePreference) preference).getBluetoothDevice();
- if (BluetoothUtils.isAudioSharingEnabled() && mDialogHandler != null) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext) && mDialogHandler != null) {
mDialogHandler.handleDeviceConnected(cachedDevice, /* userTriggered= */ true);
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
.action(mContext, SettingsEnums.ACTION_MEDIA_DEVICE_CLICK);
@@ -294,7 +294,7 @@
fragment.getContext(),
AvailableMediaDeviceGroupController.this,
fragment.getMetricsCategory());
- if (BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
mDialogHandler = new AudioSharingDialogHandler(mContext, fragment);
}
}
@@ -341,7 +341,7 @@
if (isAudioModeOngoingCall(mContext)) {
// in phone call
titleResId = R.string.connected_device_call_device_title;
- } else if (BluetoothUtils.isAudioSharingEnabled()
+ } else if (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& BluetoothUtils.isBroadcasting(mBtManager)) {
// without phone call, in audio sharing
titleResId = R.string.audio_sharing_media_device_group_title;
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
index 37b7186..65258fc 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
@@ -80,7 +80,7 @@
+ ", action : "
+ action);
}
- if (BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(context)) {
use(AudioSharingDevicePreferenceController.class).init(this);
}
use(AvailableMediaDeviceGroupController.class).init(this);
diff --git a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java
index 4423c65..24294b0 100644
--- a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java
@@ -54,10 +54,8 @@
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private static final int MAX_DEVICE_NUM = 3;
- private static final int DOCK_DEVICE_INDEX = 9;
private static final String KEY_SEE_ALL = "previously_connected_devices_see_all";
- private final List<Preference> mDevicesList = new ArrayList<>();
private final List<Preference> mDockDevicesList = new ArrayList<>();
private final Map<BluetoothDevice, Preference> mDevicePreferenceMap = new HashMap<>();
private final BluetoothAdapter mBluetoothAdapter;
@@ -118,6 +116,8 @@
mContext.registerReceiver(mReceiver, mIntentFilter,
Context.RECEIVER_EXPORTED_UNAUDITED);
mBluetoothDeviceUpdater.refreshPreference();
+ Log.d(TAG, "Updating preference group by onStart on thread "
+ + Thread.currentThread().getName());
updatePreferenceGroup();
}
@@ -146,55 +146,11 @@
if (DEBUG) {
Log.d(TAG, "onDeviceAdded() " + preference.getTitle());
}
+ Log.d(TAG, "Updating preference group by onDeviceAdded on thread "
+ + Thread.currentThread().getName());
updatePreferenceGroup();
}
- private void addPreference(int index, Preference preference) {
- if (preference instanceof BluetoothDevicePreference) {
- if (index >= 0 && mDevicesList.size() >= index) {
- mDevicesList.add(index, preference);
- } else {
- mDevicesList.add(preference);
- }
- } else {
- mDockDevicesList.add(preference);
- }
- addPreference();
- }
-
- private void addPreference() {
- mPreferenceGroup.removeAll();
- mPreferenceGroup.addPreference(mSeeAllPreference);
- final int size = getDeviceListSize();
- for (int i = 0; i < size; i++) {
- if (DEBUG) {
- Log.d(TAG, "addPreference() add device : " + mDevicesList.get(i).getTitle());
- }
- mDevicesList.get(i).setOrder(i);
- mPreferenceGroup.addPreference(mDevicesList.get(i));
- }
- if (mDockDevicesList.size() > 0) {
- for (int i = 0; i < getDockDeviceListSize(MAX_DEVICE_NUM - size); i++) {
- if (DEBUG) {
- Log.d(TAG, "addPreference() add dock device : "
- + mDockDevicesList.get(i).getTitle());
- }
- mDockDevicesList.get(i).setOrder(DOCK_DEVICE_INDEX);
- mPreferenceGroup.addPreference(mDockDevicesList.get(i));
- }
- }
- }
-
- private int getDeviceListSize() {
- return mDevicesList.size() >= MAX_DEVICE_NUM
- ? MAX_DEVICE_NUM : mDevicesList.size();
- }
-
- private int getDockDeviceListSize(int availableSize) {
- return mDockDevicesList.size() >= availableSize
- ? availableSize : mDockDevicesList.size();
- }
-
@Override
public void onDeviceRemoved(Preference preference) {
if (preference instanceof BluetoothDevicePreference) {
@@ -207,19 +163,22 @@
if (DEBUG) {
Log.d(TAG, "onDeviceRemoved() " + preference.getTitle());
}
+ Log.d(TAG, "Updating preference group by onDeviceRemoved on thread "
+ + Thread.currentThread().getName());
updatePreferenceGroup();
}
/** Sort the preferenceGroup by most recently used. */
public void updatePreferenceGroup() {
mPreferenceGroup.removeAll();
- mPreferenceGroup.addPreference(mSeeAllPreference);
if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
// Bluetooth is supported
int order = 0;
for (BluetoothDevice device : mBluetoothAdapter.getMostRecentlyConnectedDevices()) {
Preference preference = mDevicePreferenceMap.getOrDefault(device, null);
if (preference != null) {
+ Log.d(TAG, "Adding preference with order " + order + " when there are "
+ + mPreferenceGroup.getPreferenceCount());
preference.setOrder(order);
mPreferenceGroup.addPreference(preference);
order += 1;
@@ -237,6 +196,7 @@
order += 1;
}
}
+ mPreferenceGroup.addPreference(mSeeAllPreference);
updatePreferenceVisibility();
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingActivity.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingActivity.java
index 08b21a1..7f135ce 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingActivity.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingActivity.java
@@ -25,7 +25,7 @@
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
- if (!BluetoothUtils.isAudioSharingEnabled()) {
+ if (!BluetoothUtils.isAudioSharingUIAvailable(this)) {
finish();
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java
index 96c5d45..6410f96 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java
@@ -55,7 +55,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return (BluetoothUtils.isAudioSharingUIAvailable(mContext))
+ ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java
index 6fd6f18..e5b984d 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java
@@ -55,7 +55,7 @@
if (isDeviceConnected(cachedDevice) && isDeviceInCachedDevicesList(cachedDevice)) {
// If device is LE audio device and has a broadcast source,
// it would show in audio sharing devices group.
- if (BluetoothUtils.isAudioSharingEnabled()
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& cachedDevice.isConnectedLeAudioDevice()
&& BluetoothUtils.hasConnectedBroadcastSource(cachedDevice, mLocalBtManager)) {
isFilterMatched = true;
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java
index fa9f94d..f3e3978 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java
@@ -65,27 +65,32 @@
* @param listener The callback to handle the user action on this dialog.
*/
public static void show(
- @NonNull Fragment host,
+ @Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
int checkedItemIndex,
@NonNull DialogEventListener listener) {
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- sListener = listener;
- if (manager.findFragmentByTag(TAG) == null) {
- final Bundle bundle = new Bundle();
- bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
- bundle.putInt(BUNDLE_KEY_CHECKED_ITEM_INDEX, checkedItemIndex);
- final AudioSharingCallAudioDialogFragment dialog =
- new AudioSharingCallAudioDialogFragment();
- dialog.setArguments(bundle);
- dialog.show(manager, TAG);
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
+ sListener = listener;
+ if (manager.findFragmentByTag(TAG) == null) {
+ final Bundle bundle = new Bundle();
+ bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
+ bundle.putInt(BUNDLE_KEY_CHECKED_ITEM_INDEX, checkedItemIndex);
+ final AudioSharingCallAudioDialogFragment dialog =
+ new AudioSharingCallAudioDialogFragment();
+ dialog.setArguments(bundle);
+ dialog.show(manager, TAG);
+ }
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceController.java
index 11a337f..719d6cb 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceController.java
@@ -110,7 +110,10 @@
@Override
public void onSourceAdded(
- @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {
+ Log.d(TAG, "onSourceAdded: updateSummary");
+ updateSummary();
+ }
@Override
public void onSourceAddFailed(
@@ -138,12 +141,7 @@
public void onReceiveStateChanged(
@NonNull BluetoothDevice sink,
int sourceId,
- @NonNull BluetoothLeBroadcastReceiveState state) {
- if (BluetoothUtils.isConnected(state)) {
- Log.d(TAG, "onReceiveStateChanged: synced, updateSummary");
- updateSummary();
- }
- }
+ @NonNull BluetoothLeBroadcastReceiveState state) {}
};
public AudioSharingCallAudioPreferenceController(Context context) {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java
index 52df1d3..6ce111b 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java
@@ -155,7 +155,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java
index 9b60df4..47dd10f 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java
@@ -44,23 +44,28 @@
*
* @param host The Fragment this dialog will be hosted.
*/
- public static void show(Fragment host) {
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ public static void show(@Nullable Fragment host) {
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- Log.d(TAG, "Dialog is showing, return.");
- return;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ Log.d(TAG, "Dialog is showing, return.");
+ return;
+ }
+ Log.d(TAG, "Show up the confirm dialog.");
+ AudioSharingConfirmDialogFragment dialogFrag = new AudioSharingConfirmDialogFragment();
+ dialogFrag.show(manager, TAG);
}
- Log.d(TAG, "Show up the confirm dialog.");
- AudioSharingConfirmDialogFragment dialogFrag = new AudioSharingConfirmDialogFragment();
- dialogFrag.show(manager, TAG);
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java
index 786e1dc..ce0a465 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java
@@ -45,6 +45,7 @@
public static final int SHARE_THEN_PAIR_REQUEST_CODE = 1002;
SettingsMainSwitchBar mMainSwitchBar;
+ private Context mContext;
private AudioSharingDeviceVolumeGroupController mAudioSharingDeviceVolumeGroupController;
private AudioSharingCallAudioPreferenceController mAudioSharingCallAudioPreferenceController;
private AudioSharingPlaySoundPreferenceController mAudioSharingPlaySoundPreferenceController;
@@ -78,6 +79,7 @@
@Override
public void onAttach(Context context) {
super.onAttach(context);
+ mContext = context;
mAudioSharingDeviceVolumeGroupController =
use(AudioSharingDeviceVolumeGroupController.class);
mAudioSharingDeviceVolumeGroupController.init(this);
@@ -107,23 +109,25 @@
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- // In share then pair flow, after users be routed to pair new device page and successfully
- // pair and connect an LEA headset, the pair fragment will be finished with RESULT_OK
- // and EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE, pass the BT device to switch bar controller,
- // which is responsible for adding source to the device with loading indicator.
- if (requestCode == SHARE_THEN_PAIR_REQUEST_CODE) {
- if (resultCode == Activity.RESULT_OK) {
- BluetoothDevice btDevice =
- data != null
- ? data.getParcelableExtra(EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE,
- BluetoothDevice.class)
- : null;
- Log.d(TAG, "onActivityResult: RESULT_OK with device = " + btDevice);
- if (btDevice != null) {
- var unused = ThreadUtils.postOnBackgroundThread(
- () -> mAudioSharingSwitchBarController.handleAutoAddSourceAfterPair(
- btDevice));
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
+ // In share then pair flow, after users be routed to pair new device page and
+ // successfully pair and connect an LEA headset, the pair fragment will be finished with
+ // RESULT_OK and EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE, pass the BT device to switch bar
+ // controller, which is responsible for adding source to the device with loading
+ // indicator.
+ if (requestCode == SHARE_THEN_PAIR_REQUEST_CODE) {
+ if (resultCode == Activity.RESULT_OK) {
+ BluetoothDevice btDevice =
+ data != null
+ ? data.getParcelableExtra(EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE,
+ BluetoothDevice.class)
+ : null;
+ Log.d(TAG, "onActivityResult: RESULT_OK with device = " + btDevice);
+ if (btDevice != null) {
+ var unused = ThreadUtils.postOnBackgroundThread(
+ () -> mAudioSharingSwitchBarController.handleAutoAddSourceAfterPair(
+ btDevice));
+ }
}
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
index 0b6b8c9..7ff7844 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
@@ -85,6 +85,10 @@
mButtonView.setText(btnText);
mButtonView.setOnClickListener(
v -> mOnClickListener.onClick(mDevices.get(position)));
+ if (position == 0) {
+ mButtonView.setBackgroundResource(
+ com.android.settingslib.R.drawable.audio_sharing_rounded_bg_ripple_top);
+ }
} else {
Log.w(TAG, "bind view skipped due to button view is null");
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
index 47623e4..c286ed6 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
@@ -116,7 +116,18 @@
@Override
public void onSourceAdded(
- @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {
+ Log.d(TAG, "onSourceAdded: update sharing device list.");
+ if (mBluetoothDeviceUpdater != null) {
+ mBluetoothDeviceUpdater.forceUpdate();
+ }
+ if (mDeviceManager != null && mDialogHandler != null) {
+ CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(sink);
+ if (cachedDevice != null) {
+ mDialogHandler.closeOpeningDialogsForLeaDevice(cachedDevice);
+ }
+ }
+ }
@Override
public void onSourceAddFailed(
@@ -173,20 +184,7 @@
public void onReceiveStateChanged(
@NonNull BluetoothDevice sink,
int sourceId,
- @NonNull BluetoothLeBroadcastReceiveState state) {
- if (BluetoothUtils.isConnected(state)) {
- Log.d(TAG, "onSourceAdded: update sharing device list.");
- if (mBluetoothDeviceUpdater != null) {
- mBluetoothDeviceUpdater.forceUpdate();
- }
- if (mDeviceManager != null && mDialogHandler != null) {
- CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(sink);
- if (cachedDevice != null) {
- mDialogHandler.closeOpeningDialogsForLeaDevice(cachedDevice);
- }
- }
- }
- }
+ @NonNull BluetoothLeBroadcastReceiveState state) {}
};
public AudioSharingDevicePreferenceController(Context context) {
@@ -308,7 +306,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() && mBluetoothDeviceUpdater != null
+ return (BluetoothUtils.isAudioSharingUIAvailable(mContext)
+ && mBluetoothDeviceUpdater != null)
? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE;
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java
index 42de10a..be0ee0b 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java
@@ -132,7 +132,12 @@
@Override
public void onSourceAdded(
- @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {
+ Log.d(TAG, "onSourceAdded: update volume list.");
+ if (mBluetoothDeviceUpdater != null) {
+ mBluetoothDeviceUpdater.forceUpdate();
+ }
+ }
@Override
public void onSourceAddFailed(
@@ -165,14 +170,7 @@
public void onReceiveStateChanged(
@NonNull BluetoothDevice sink,
int sourceId,
- @NonNull BluetoothLeBroadcastReceiveState state) {
- if (BluetoothUtils.isConnected(state)) {
- Log.d(TAG, "onReceiveStateChanged: synced, update volume list.");
- if (mBluetoothDeviceUpdater != null) {
- mBluetoothDeviceUpdater.forceUpdate();
- }
- }
- }
+ @NonNull BluetoothLeBroadcastReceiveState state) {}
};
public AudioSharingDeviceVolumeGroupController(Context context) {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
index 54a758c..1bf5492 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
@@ -84,37 +84,42 @@
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
- @NonNull Fragment host,
+ @Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ sHost = host;
+ sListener = listener;
+ sEventData = eventData;
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ Log.d(TAG, "Dialog is showing, return.");
+ return;
+ }
+ Log.d(TAG, "Show up the dialog.");
+ final Bundle bundle = new Bundle();
+ bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
+ AudioSharingDialogFragment dialogFrag = new AudioSharingDialogFragment();
+ dialogFrag.setArguments(bundle);
+ dialogFrag.show(manager, TAG);
}
- sHost = host;
- sListener = listener;
- sEventData = eventData;
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- Log.d(TAG, "Dialog is showing, return.");
- return;
- }
- Log.d(TAG, "Show up the dialog.");
- final Bundle bundle = new Bundle();
- bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
- AudioSharingDialogFragment dialogFrag = new AudioSharingDialogFragment();
- dialogFrag.setArguments(bundle);
- dialogFrag.show(manager, TAG);
}
/** Return the tag of {@link AudioSharingDialogFragment} dialog. */
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
index fbd2e63..b4ce2d1 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
@@ -80,72 +80,67 @@
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
- @NonNull Fragment host,
+ @Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull CachedBluetoothDevice newDevice,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
- }
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- int newGroupId = BluetoothUtils.getGroupId(newDevice);
- if (sNewDevice != null && newGroupId == BluetoothUtils.getGroupId(sNewDevice)) {
- Log.d(
- TAG,
- String.format(
- Locale.US,
- "Dialog is showing for the same device group %d, "
- + "update the content.",
- newGroupId));
- sListener = listener;
- sNewDevice = newDevice;
- sEventData = eventData;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return;
- } else {
- Log.d(
- TAG,
- String.format(
- Locale.US,
- "Dialog is showing for new device group %d, "
- + "dismiss current dialog.",
- newGroupId));
- dialog.dismiss();
- var unused =
- ThreadUtils.postOnBackgroundThread(
- () ->
- FeatureFactory.getFeatureFactory()
- .getMetricsFeatureProvider()
- .action(
- dialog.getContext(),
- SettingsEnums
- .ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
- SettingsEnums
- .DIALOG_AUDIO_SHARING_SWITCH_DEVICE));
}
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ int newGroupId = BluetoothUtils.getGroupId(newDevice);
+ if (sNewDevice != null && newGroupId == BluetoothUtils.getGroupId(sNewDevice)) {
+ Log.d(
+ TAG,
+ String.format(
+ Locale.US,
+ "Dialog is showing for the same device group %d, "
+ + "update the content.",
+ newGroupId));
+ sListener = listener;
+ sNewDevice = newDevice;
+ sEventData = eventData;
+ return;
+ } else {
+ Log.d(
+ TAG,
+ String.format(
+ Locale.US,
+ "Dialog is showing for new device group %d, "
+ + "dismiss current dialog.",
+ newGroupId));
+ dialog.dismiss();
+ logDialogAutoDismiss(dialog);
+ }
+ }
+ sListener = listener;
+ sNewDevice = newDevice;
+ sEventData = eventData;
+ Log.d(TAG, "Show up the dialog.");
+ final Bundle bundle = new Bundle();
+ bundle.putParcelableList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
+ bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
+ AudioSharingDisconnectDialogFragment dialogFrag =
+ new AudioSharingDisconnectDialogFragment();
+ dialogFrag.setArguments(bundle);
+ dialogFrag.show(manager, TAG);
}
- sListener = listener;
- sNewDevice = newDevice;
- sEventData = eventData;
- Log.d(TAG, "Show up the dialog.");
- final Bundle bundle = new Bundle();
- bundle.putParcelableList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
- bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
- AudioSharingDisconnectDialogFragment dialogFrag =
- new AudioSharingDisconnectDialogFragment();
- dialogFrag.setArguments(bundle);
- dialogFrag.show(manager, TAG);
}
/** Return the tag of {@link AudioSharingDisconnectDialogFragment} dialog. */
@@ -216,4 +211,17 @@
AudioSharingDeviceAdapter.ActionType.REMOVE));
return builder.build();
}
+
+ private static void logDialogAutoDismiss(AlertDialog dialog) {
+ var unused =
+ ThreadUtils.postOnBackgroundThread(
+ () -> FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ dialog.getContext(),
+ SettingsEnums
+ .ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
+ SettingsEnums
+ .DIALOG_AUDIO_SHARING_SWITCH_DEVICE));
+ }
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingErrorDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingErrorDialogFragment.java
index 94d4a69..752ea0a 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingErrorDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingErrorDialogFragment.java
@@ -46,27 +46,32 @@
* @param host The Fragment this dialog will be hosted.
*/
public static void show(@Nullable Fragment host) {
- if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ Log.d(TAG, "Dialog is showing, return.");
+ return;
+ }
+ Log.d(TAG, "Show up the error dialog.");
+ AudioSharingErrorDialogFragment dialogFrag = new AudioSharingErrorDialogFragment();
+ dialogFrag.show(manager, TAG);
}
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- Log.d(TAG, "Dialog is showing, return.");
- return;
- }
- Log.d(TAG, "Show up the error dialog.");
- AudioSharingErrorDialogFragment dialogFrag = new AudioSharingErrorDialogFragment();
- dialogFrag.show(manager, TAG);
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingIncompatibleDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingIncompatibleDialogFragment.java
index e8ab716..2f34fa1 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingIncompatibleDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingIncompatibleDialogFragment.java
@@ -62,32 +62,37 @@
*/
public static void show(@Nullable Fragment host, @NonNull String deviceName,
@NonNull DialogEventListener listener) {
- if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ sListener = listener;
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ Log.d(TAG, "Dialog is showing, return.");
+ return;
+ }
+ Log.d(TAG, "Show up the incompatible device dialog.");
+ final Bundle bundle = new Bundle();
+ bundle.putString(BUNDLE_KEY_DEVICE_NAME, deviceName);
+ AudioSharingIncompatibleDialogFragment dialogFrag =
+ new AudioSharingIncompatibleDialogFragment();
+ dialogFrag.setArguments(bundle);
+ dialogFrag.show(manager, TAG);
}
- sListener = listener;
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- Log.d(TAG, "Dialog is showing, return.");
- return;
- }
- Log.d(TAG, "Show up the incompatible device dialog.");
- final Bundle bundle = new Bundle();
- bundle.putString(BUNDLE_KEY_DEVICE_NAME, deviceName);
- AudioSharingIncompatibleDialogFragment dialogFrag =
- new AudioSharingIncompatibleDialogFragment();
- dialogFrag.setArguments(bundle);
- dialogFrag.show(manager, TAG);
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
index a952c48..f5f3b2c 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
@@ -77,39 +77,45 @@
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
- @NonNull Fragment host,
+ @Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull CachedBluetoothDevice newDevice,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
- }
- sListener = listener;
- sNewDevice = newDevice;
- sEventData = eventData;
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- Log.d(TAG, "Dialog is showing, update the content.");
- updateDialog(deviceItems, newDevice.getName(), dialog);
- } else {
- Log.d(TAG, "Show up the dialog.");
- final Bundle bundle = new Bundle();
- bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
- bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
- final AudioSharingJoinDialogFragment dialogFrag = new AudioSharingJoinDialogFragment();
- dialogFrag.setArguments(bundle);
- dialogFrag.show(manager, TAG);
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ sListener = listener;
+ sNewDevice = newDevice;
+ sEventData = eventData;
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ Log.d(TAG, "Dialog is showing, update the content.");
+ updateDialog(deviceItems, newDevice.getName(), dialog);
+ } else {
+ Log.d(TAG, "Show up the dialog.");
+ final Bundle bundle = new Bundle();
+ bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
+ bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
+ final AudioSharingJoinDialogFragment dialogFrag =
+ new AudioSharingJoinDialogFragment();
+ dialogFrag.setArguments(bundle);
+ dialogFrag.show(manager, TAG);
+ }
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
index a1a9698..c017ecc 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
@@ -174,7 +174,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreference.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreference.java
index e3bbfb7..17dcc7f 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreference.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreference.java
@@ -41,6 +41,7 @@
@Nullable private EditText mEditText;
@Nullable private CheckBox mCheckBox;
@Nullable private View mDialogMessage;
+ @Nullable private View mEditTextFormatAlert;
private boolean mEditable = true;
interface OnDialogEventListener {
@@ -77,6 +78,7 @@
mEditText = view.findViewById(android.R.id.edit);
mCheckBox = view.findViewById(R.id.audio_sharing_stream_password_checkbox);
mDialogMessage = view.findViewById(android.R.id.message);
+ mEditTextFormatAlert = view.findViewById(R.id.edit_alert_message);
if (mEditText == null || mCheckBox == null || mDialogMessage == null) {
Log.w(TAG, "onBindDialogView() : Invalid layout");
@@ -123,6 +125,14 @@
mDialogMessage.setVisibility(editable ? GONE : VISIBLE);
}
+ void showEditTextFormatAlert(boolean show) {
+ if (mEditTextFormatAlert == null) {
+ Log.w(TAG, "showEditTextFormatAlert() : Invalid layout");
+ return;
+ }
+ mEditTextFormatAlert.setVisibility(show ? VISIBLE : GONE);
+ }
+
void setChecked(boolean checked) {
if (mCheckBox == null) {
Log.w(TAG, "setChecked() : Invalid layout");
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
index 9a27a93..3a741e4 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
@@ -113,7 +113,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
@@ -136,7 +137,11 @@
@Override
public boolean isTextValid(String value) {
- return mAudioSharingPasswordValidator.isTextValid(value);
+ boolean isValid = mAudioSharingPasswordValidator.isTextValid(value);
+ if (mPreference != null) {
+ mPreference.showEditTextFormatAlert(!isValid);
+ }
+ return isValid;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java
index 59494db..09a3036 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java
@@ -57,7 +57,7 @@
@Override
public int getAvailabilityStatus() {
- return (mRingtone != null && BluetoothUtils.isAudioSharingEnabled())
+ return (mRingtone != null && BluetoothUtils.isAudioSharingUIAvailable(mContext))
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java
index 3c078ef..f3effbd 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java
@@ -135,7 +135,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingProgressDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingProgressDialogFragment.java
index 840c7bb..9d112e6 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingProgressDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingProgressDialogFragment.java
@@ -65,55 +65,66 @@
* @param message The content to be shown on the dialog.
*/
public static void show(@Nullable Fragment host, @NonNull String message) {
- if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
- }
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- if (!sMessage.equals(message)) {
- Log.d(TAG, "Update dialog message.");
- TextView messageView = dialog.findViewById(R.id.message);
- if (messageView != null) {
- messageView.setText(message);
- }
- sMessage = message;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
}
- Log.d(TAG, "Dialog is showing, return.");
- return;
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ if (!sMessage.equals(message)) {
+ Log.d(TAG, "Update dialog message.");
+ TextView messageView = dialog.findViewById(R.id.message);
+ if (messageView != null) {
+ messageView.setText(message);
+ }
+ sMessage = message;
+ }
+ Log.d(TAG, "Dialog is showing, return.");
+ return;
+ }
+ sMessage = message;
+ Log.d(TAG, "Show up the progress dialog.");
+ Bundle args = new Bundle();
+ args.putString(BUNDLE_KEY_MESSAGE, message);
+ AudioSharingProgressDialogFragment dialogFrag =
+ new AudioSharingProgressDialogFragment();
+ dialogFrag.setArguments(args);
+ dialogFrag.show(manager, TAG);
}
- sMessage = message;
- Log.d(TAG, "Show up the progress dialog.");
- Bundle args = new Bundle();
- args.putString(BUNDLE_KEY_MESSAGE, message);
- AudioSharingProgressDialogFragment dialogFrag = new AudioSharingProgressDialogFragment();
- dialogFrag.setArguments(args);
- dialogFrag.show(manager, TAG);
}
/** Dismiss the {@link AudioSharingProgressDialogFragment} dialog. */
public static void dismiss(@Nullable Fragment host) {
- if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to dismiss dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to dismiss dialog, host is null");
return;
}
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- Log.d(TAG, "Dialog is showing, dismiss.");
- dialog.dismiss();
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to dismiss dialog: " + e.getMessage());
+ return;
+ }
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ Log.d(TAG, "Dialog is showing, dismiss.");
+ dialog.dismiss();
+ }
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiver.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiver.java
index 371613f..740fb35 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiver.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiver.java
@@ -38,7 +38,7 @@
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class AudioSharingReceiver extends BroadcastReceiver {
- private static final String TAG = "AudioSharingNotification";
+ private static final String TAG = "AudioSharingReceiver";
private static final String ACTION_LE_AUDIO_SHARING_SETTINGS =
"com.android.settings.BLUETOOTH_AUDIO_SHARING_SETTINGS";
private static final String ACTION_LE_AUDIO_SHARING_STOP =
@@ -49,10 +49,6 @@
@Override
public void onReceive(Context context, Intent intent) {
- if (!BluetoothUtils.isAudioSharingEnabled()) {
- Log.w(TAG, "Skip handling received intent, flag is off.");
- return;
- }
String action = intent.getAction();
if (action == null) {
Log.w(TAG, "Received unexpected intent with null action.");
@@ -66,13 +62,22 @@
intent.getIntExtra(
LocalBluetoothLeBroadcast.EXTRA_LE_AUDIO_SHARING_STATE, -1);
if (state == LocalBluetoothLeBroadcast.BROADCAST_STATE_ON) {
+ if (!BluetoothUtils.isAudioSharingUIAvailable(context)) {
+ Log.w(TAG, "Skip showSharingNotification, feature disabled.");
+ return;
+ }
showSharingNotification(context);
metricsFeatureProvider.action(
context, SettingsEnums.ACTION_SHOW_AUDIO_SHARING_NOTIFICATION);
} else if (state == LocalBluetoothLeBroadcast.BROADCAST_STATE_OFF) {
+ // TODO: check BluetoothUtils#isAudioSharingEnabled() till BluetoothAdapter#
+ // isLeAudioBroadcastSourceSupported() and BluetoothAdapter#
+ // isLeAudioBroadcastAssistantSupported() always return FEATURE_SUPPORTED
+ // or FEATURE_NOT_SUPPORTED when BT and BLE off
cancelSharingNotification(context);
metricsFeatureProvider.action(
- context, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION);
+ context, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ LocalBluetoothLeBroadcast.ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
} else {
Log.w(
TAG,
@@ -80,16 +85,24 @@
}
break;
case ACTION_LE_AUDIO_SHARING_STOP:
- LocalBluetoothManager manager = Utils.getLocalBtManager(context);
- if (BluetoothUtils.isBroadcasting(manager)) {
- AudioSharingUtils.stopBroadcasting(manager);
- metricsFeatureProvider.action(
- context, SettingsEnums.ACTION_STOP_AUDIO_SHARING_FROM_NOTIFICATION);
- } else {
- cancelSharingNotification(context);
- metricsFeatureProvider.action(
- context, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION);
+ if (BluetoothUtils.isAudioSharingUIAvailable(context)) {
+ LocalBluetoothManager manager = Utils.getLocalBtManager(context);
+ if (BluetoothUtils.isBroadcasting(manager)) {
+ AudioSharingUtils.stopBroadcasting(manager);
+ metricsFeatureProvider.action(
+ context, SettingsEnums.ACTION_STOP_AUDIO_SHARING_FROM_NOTIFICATION);
+ return;
+ }
}
+ Log.w(TAG, "cancelSharingNotification, feature disabled or not in broadcast.");
+ // TODO: check BluetoothUtils#isAudioSharingEnabled() till BluetoothAdapter#
+ // isLeAudioBroadcastSourceSupported() and BluetoothAdapter#
+ // isLeAudioBroadcastAssistantSupported() always return FEATURE_SUPPORTED
+ // or FEATURE_NOT_SUPPORTED when BT and BLE off
+ cancelSharingNotification(context);
+ metricsFeatureProvider.action(
+ context, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ ACTION_LE_AUDIO_SHARING_STOP);
break;
default:
Log.w(TAG, "Received unexpected intent " + intent.getAction());
@@ -129,15 +142,15 @@
PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Action stopAction =
new NotificationCompat.Action.Builder(
- 0,
- context.getString(R.string.audio_sharing_stop_button_label),
- stopPendingIntent)
+ 0,
+ context.getString(R.string.audio_sharing_stop_button_label),
+ stopPendingIntent)
.build();
NotificationCompat.Action settingsAction =
new NotificationCompat.Action.Builder(
- 0,
- context.getString(R.string.audio_sharing_settings_button_label),
- settingsPendingIntent)
+ 0,
+ context.getString(R.string.audio_sharing_settings_button_label),
+ settingsPendingIntent)
.build();
final Bundle extras = new Bundle();
extras.putString(
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
index 2bd79c9..047f2fc 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
@@ -77,70 +77,66 @@
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
- @NonNull Fragment host,
+ @Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull CachedBluetoothDevice newDevice,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
- if (!BluetoothUtils.isAudioSharingEnabled()) return;
- final FragmentManager manager;
- try {
- manager = host.getChildFragmentManager();
- } catch (IllegalStateException e) {
- Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ if (host == null) {
+ Log.d(TAG, "Fail to show dialog, host is null");
return;
}
- Lifecycle.State currentState = host.getLifecycle().getCurrentState();
- if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
- Log.d(TAG, "Fail to show dialog with state: " + currentState);
- return;
- }
- AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
- if (dialog != null) {
- int newGroupId = BluetoothUtils.getGroupId(newDevice);
- if (sCachedDevice != null
- && newGroupId == BluetoothUtils.getGroupId(sCachedDevice)) {
- Log.d(
- TAG,
- String.format(
- Locale.US,
- "Dialog is showing for the same device group %d, return.",
- newGroupId));
- sListener = listener;
- sCachedDevice = newDevice;
- sEventData = eventData;
+ if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return;
- } else {
- Log.d(
- TAG,
- String.format(
- Locale.US,
- "Dialog is showing for new device group %d, "
- + "dismiss current dialog.",
- newGroupId));
- dialog.dismiss();
- var unused =
- ThreadUtils.postOnBackgroundThread(
- () ->
- FeatureFactory.getFeatureFactory()
- .getMetricsFeatureProvider()
- .action(
- dialog.getContext(),
- SettingsEnums
- .ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
- SettingsEnums.DIALOG_STOP_AUDIO_SHARING));
}
+ Lifecycle.State currentState = host.getLifecycle().getCurrentState();
+ if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ Log.d(TAG, "Fail to show dialog with state: " + currentState);
+ return;
+ }
+ AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
+ if (dialog != null) {
+ int newGroupId = BluetoothUtils.getGroupId(newDevice);
+ if (sCachedDevice != null
+ && newGroupId == BluetoothUtils.getGroupId(sCachedDevice)) {
+ Log.d(
+ TAG,
+ String.format(
+ Locale.US,
+ "Dialog is showing for the same device group %d, return.",
+ newGroupId));
+ sListener = listener;
+ sCachedDevice = newDevice;
+ sEventData = eventData;
+ return;
+ } else {
+ Log.d(
+ TAG,
+ String.format(
+ Locale.US,
+ "Dialog is showing for new device group %d, "
+ + "dismiss current dialog.",
+ newGroupId));
+ dialog.dismiss();
+ logDialogAutoDismiss(dialog);
+ }
+ }
+ sListener = listener;
+ sCachedDevice = newDevice;
+ sEventData = eventData;
+ Log.d(TAG, "Show up the dialog.");
+ final Bundle bundle = new Bundle();
+ bundle.putParcelableList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
+ bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
+ AudioSharingStopDialogFragment dialogFrag = new AudioSharingStopDialogFragment();
+ dialogFrag.setArguments(bundle);
+ dialogFrag.show(manager, TAG);
}
- sListener = listener;
- sCachedDevice = newDevice;
- sEventData = eventData;
- Log.d(TAG, "Show up the dialog.");
- final Bundle bundle = new Bundle();
- bundle.putParcelableList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
- bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
- AudioSharingStopDialogFragment dialogFrag = new AudioSharingStopDialogFragment();
- dialogFrag.setArguments(bundle);
- dialogFrag.show(manager, TAG);
}
/** Return the tag of {@link AudioSharingStopDialogFragment} dialog. */
@@ -221,4 +217,16 @@
AudioSharingDialogHelper.updateMessageStyle(dialog);
return dialog;
}
+
+ private static void logDialogAutoDismiss(AlertDialog dialog) {
+ var unused =
+ ThreadUtils.postOnBackgroundThread(
+ () -> FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ dialog.getContext(),
+ SettingsEnums
+ .ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
+ SettingsEnums.DIALOG_STOP_AUDIO_SHARING));
+ }
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
index 14da750..0a9bc97 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
@@ -177,6 +177,20 @@
+ broadcastId
+ ", metadata = "
+ metadata.getBroadcastName());
+ if (mAssistant == null
+ || mAssistant.getAllConnectedDevices().stream()
+ .anyMatch(
+ device -> BluetoothUtils
+ .hasActiveLocalBroadcastSourceForBtDevice(
+ device, mBtManager))) {
+ Log.d(
+ TAG,
+ "Skip handleOnBroadcastReady: null assistant or "
+ + "sink has active local source.");
+ cleanUpStatesForStartSharing();
+ return;
+ }
+ handleOnBroadcastReady();
}
@Override
@@ -221,20 +235,6 @@
+ reason
+ ", broadcastId = "
+ broadcastId);
- if (mAssistant == null
- || mAssistant.getAllConnectedDevices().stream()
- .anyMatch(
- device -> BluetoothUtils
- .hasActiveLocalBroadcastSourceForBtDevice(
- device, mBtManager))) {
- Log.d(
- TAG,
- "Skip handleOnBroadcastReady: null assistant or "
- + "sink has active local source.");
- cleanUpStatesForStartSharing();
- return;
- }
- handleOnBroadcastReady();
}
@Override
@@ -261,7 +261,30 @@
@Override
public void onSourceAdded(
- @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {
+ if (mSinksInAdding.contains(sink)) {
+ mSinksInAdding.remove(sink);
+ }
+ dismissProgressDialogIfNeeded();
+ Log.d(TAG, "onSourceAdded(), sink = " + sink + ", remaining sinks = "
+ + mSinksInAdding);
+ if (mSinksToWaitFor.contains(sink)) {
+ mSinksToWaitFor.remove(sink);
+ if (mSinksToWaitFor.isEmpty()) {
+ // To avoid users advance to share then pair flow before the
+ // primary/active sinks successfully join the audio sharing,
+ // popup dialog till adding source complete for mSinksToWaitFor.
+ Pair<Integer, Object>[] eventData =
+ AudioSharingUtils.buildAudioSharingDialogEventData(
+ SettingsEnums.AUDIO_SHARING_SETTINGS,
+ SettingsEnums.DIALOG_AUDIO_SHARING_ADD_DEVICE,
+ /* userTriggered= */ false,
+ /* deviceCountInSharing= */ 1,
+ /* candidateDeviceCount= */ 0);
+ showAudioSharingDialog(eventData);
+ }
+ }
+ }
@Override
public void onSourceAddFailed(
@@ -307,34 +330,9 @@
@NonNull BluetoothDevice sink,
int sourceId,
@NonNull BluetoothLeBroadcastReceiveState state) {
- if (mStoppingSharing.get()) {
- Log.d(TAG, "Skip onReceiveStateChanged, stopping broadcast");
- return;
- }
- if (BluetoothUtils.isConnected(state)) {
- if (mSinksInAdding.contains(sink)) {
- mSinksInAdding.remove(sink);
- }
- dismissProgressDialogIfNeeded();
- Log.d(TAG, "onReceiveStateChanged() connected, sink = " + sink
- + ", remaining sinks = " + mSinksInAdding);
- if (mSinksToWaitFor.contains(sink)) {
- mSinksToWaitFor.remove(sink);
- if (mSinksToWaitFor.isEmpty()) {
- // To avoid users advance to share then pair flow before the
- // primary/active sinks successfully join the audio sharing,
- // popup dialog till adding source complete for mSinksToWaitFor.
- Pair<Integer, Object>[] eventData =
- AudioSharingUtils.buildAudioSharingDialogEventData(
- SettingsEnums.AUDIO_SHARING_SETTINGS,
- SettingsEnums.DIALOG_AUDIO_SHARING_ADD_DEVICE,
- /* userTriggered= */ false,
- /* deviceCountInSharing= */ 1,
- /* candidateDeviceCount= */ 0);
- showAudioSharingDialog(eventData);
- }
- }
- }
+ Log.d(TAG,
+ "onReceiveStateChanged(), sink = " + sink + ", sourceId = " + sourceId
+ + ", state = " + state);
}
};
@@ -426,9 +424,7 @@
() -> {
mSwitchBar.setEnabled(true);
mSwitchBar.setChecked(false);
- if (mFragment != null) {
- AudioSharingConfirmDialogFragment.show(mFragment);
- }
+ AudioSharingConfirmDialogFragment.show(mFragment);
});
return;
}
@@ -447,7 +443,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
@@ -733,13 +730,8 @@
};
AudioSharingUtils.postOnMainThread(
mContext,
- () -> {
- // Check nullability to pass NullAway check
- if (mFragment != null) {
- AudioSharingDialogFragment.show(
- mFragment, mDeviceItemsForSharing, listener, eventData);
- }
- });
+ () -> AudioSharingDialogFragment.show(
+ mFragment, mDeviceItemsForSharing, listener, eventData));
}
private void showErrorDialog() {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java
index 592c8eb..5a15b6a 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java
@@ -46,7 +46,6 @@
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
import com.android.settingslib.bluetooth.VolumeControlProfile;
-import com.android.settingslib.flags.Flags;
import java.util.ArrayList;
import java.util.Comparator;
@@ -222,8 +221,8 @@
Log.d(TAG, "hasActiveConnectedLeadDevice return false due to null device manager.");
return false;
}
- return deviceManager.getCachedDevicesCopy().stream().anyMatch(
- BluetoothUtils::isActiveMediaDevice);
+ return deviceManager.getCachedDevicesCopy().stream()
+ .anyMatch(BluetoothUtils::isActiveMediaDevice);
}
/** Build {@link AudioSharingDeviceItem} from {@link CachedBluetoothDevice}. */
@@ -348,17 +347,18 @@
}
/** Set {@link CachedBluetoothDevice} as primary device for call audio */
- public static void setPrimary(@NonNull Context context,
- @Nullable CachedBluetoothDevice cachedDevice) {
+ public static void setPrimary(
+ @NonNull Context context, @Nullable CachedBluetoothDevice cachedDevice) {
if (cachedDevice == null) return;
cachedDevice.setActive();
- if (Flags.audioSharingHysteresisModeFix()) {
+ if (BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(context)) {
int groupId = BluetoothUtils.getGroupId(cachedDevice);
// TODO: use real key name in SettingsProvider
- int userPreferredId = Settings.Secure.getInt(
- context.getContentResolver(),
- BLUETOOTH_LE_BROADCAST_PRIMARY_DEVICE_GROUP_ID,
- BluetoothCsipSetCoordinator.GROUP_ID_INVALID);
+ int userPreferredId =
+ Settings.Secure.getInt(
+ context.getContentResolver(),
+ BLUETOOTH_LE_BROADCAST_PRIMARY_DEVICE_GROUP_ID,
+ BluetoothCsipSetCoordinator.GROUP_ID_INVALID);
if (groupId != userPreferredId) {
Settings.Secure.putInt(
context.getContentResolver(),
diff --git a/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java
index 40f86d0..0ee71cb 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java
@@ -91,7 +91,8 @@
@Override
public int getAvailabilityStatus() {
- return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
index 48acf32..f9cce4c 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
@@ -16,8 +16,6 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
-import static com.android.settingslib.flags.Flags.audioSharingHysteresisModeFix;
-
import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastAssistant;
@@ -38,6 +36,7 @@
import com.android.settings.bluetooth.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.utils.ThreadUtils;
@@ -77,7 +76,7 @@
BluetoothLeBroadcastReceiveState state) {
super.onReceiveStateChanged(sink, sourceId, state);
boolean shouldUpdateButton =
- audioSharingHysteresisModeFix()
+ BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(mContext)
? AudioStreamsHelper.hasSourcePresent(state)
: AudioStreamsHelper.isConnected(state);
if (shouldUpdateButton) {
@@ -157,7 +156,7 @@
}
List<BluetoothLeBroadcastReceiveState> sources =
- audioSharingHysteresisModeFix()
+ BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(mContext)
? mAudioStreamsHelper.getAllPresentSources()
: mAudioStreamsHelper.getAllConnectedSources();
boolean isConnected =
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
index 958740b..df9c26e 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
@@ -214,15 +214,16 @@
}
private int getDialogId(boolean hasMetadata, boolean hasConnectedDevice) {
- if (!BluetoothUtils.isAudioSharingEnabled()) {
+ if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
+ if (!hasConnectedDevice) {
+ return SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_NO_LE_DEVICE;
+ }
+ return hasMetadata
+ ? SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_LISTEN
+ : SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_DATA_ERROR;
+ } else {
return SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_FEATURE_UNSUPPORTED;
}
- if (!hasConnectedDevice) {
- return SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_NO_LE_DEVICE;
- }
- return hasMetadata
- ? SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_LISTEN
- : SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_DATA_ERROR;
}
@Nullable
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java
index 3437524..902501a 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java
@@ -50,7 +50,7 @@
@Override
protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) {
- if (BluetoothUtils.isAudioSharingEnabled()
+ if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
Log.d(TAG, "createUiFromIntent() : supported but not ready, skip createUiFromIntent");
mSavedState = savedState;
@@ -67,7 +67,7 @@
@Override
public void onStart() {
- if (BluetoothUtils.isAudioSharingEnabled()
+ if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
Log.d(TAG, "onStart() : supported but not ready, listen to service ready");
if (mProfileManager != null) {
@@ -87,7 +87,7 @@
@Override
public void onServiceConnected() {
- if (BluetoothUtils.isAudioSharingEnabled()
+ if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
if (mProfileManager != null) {
mProfileManager.removeServiceListener(this);
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
index 0ee93e7..88efff2 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
@@ -37,6 +37,7 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.LayoutPreference;
@@ -86,7 +87,7 @@
updateSummary();
mAudioStreamsHelper.startMediaService(
mContext, mBroadcastId, mBroadcastName);
- } else if (audioSharingHysteresisModeFix()
+ } else if (BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(mContext)
&& AudioStreamsHelper.hasSourcePresent(state)) {
// if source present but not connected, only update the summary
updateSummary();
@@ -171,13 +172,13 @@
: mContext.getString(
AUDIO_STREAM_HEADER_PRESENT_NOW_SUMMARY))
: mAudioStreamsHelper.getAllConnectedSources().stream()
- .map(
- BluetoothLeBroadcastReceiveState
- ::getBroadcastId)
- .anyMatch(
- connectedBroadcastId ->
- connectedBroadcastId
- == mBroadcastId)
+ .map(
+ BluetoothLeBroadcastReceiveState
+ ::getBroadcastId)
+ .anyMatch(
+ connectedBroadcastId ->
+ connectedBroadcastId
+ == mBroadcastId)
? mContext.getString(
AUDIO_STREAM_HEADER_LISTENING_NOW_SUMMARY)
: AUDIO_STREAM_HEADER_NOT_LISTENING_SUMMARY;
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java
index d1af8d9..5d26352 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java
@@ -122,7 +122,7 @@
@Override
public void onCreate() {
- if (!BluetoothUtils.isAudioSharingEnabled()) {
+ if (!BluetoothUtils.isAudioSharingUIAvailable(this)) {
return;
}
Log.d(TAG, "onCreate()");
@@ -181,32 +181,32 @@
public void onDestroy() {
Log.d(TAG, "onDestroy()");
super.onDestroy();
- if (!BluetoothUtils.isAudioSharingEnabled()) {
- return;
- }
- if (mDevices != null) {
- mDevices.clear();
- mDevices = null;
- }
- synchronized (mLocalSessionLock) {
- if (mLocalSession != null) {
- mLocalSession.release();
- mLocalSession = null;
+ if (BluetoothUtils.isAudioSharingUIAvailable(this)) {
+ if (mDevices != null) {
+ mDevices.clear();
+ mDevices = null;
}
+ synchronized (mLocalSessionLock) {
+ if (mLocalSession != null) {
+ mLocalSession.release();
+ mLocalSession = null;
+ }
+ }
+ mExecutor.execute(
+ () -> {
+ if (mLocalBtManager != null) {
+ mLocalBtManager.getEventManager().unregisterCallback(
+ mBluetoothCallback);
+ }
+ if (mLeBroadcastAssistant != null && mBroadcastAssistantCallback != null) {
+ mLeBroadcastAssistant.unregisterServiceCallBack(
+ mBroadcastAssistantCallback);
+ }
+ if (mVolumeControl != null && mVolumeControlCallback != null) {
+ mVolumeControl.unregisterCallback(mVolumeControlCallback);
+ }
+ });
}
- mExecutor.execute(
- () -> {
- if (mLocalBtManager != null) {
- mLocalBtManager.getEventManager().unregisterCallback(mBluetoothCallback);
- }
- if (mLeBroadcastAssistant != null && mBroadcastAssistantCallback != null) {
- mLeBroadcastAssistant.unregisterServiceCallBack(
- mBroadcastAssistantCallback);
- }
- if (mVolumeControl != null && mVolumeControlCallback != null) {
- mVolumeControl.unregisterCallback(mVolumeControlCallback);
- }
- });
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java
index 458cfab..563af74 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java
@@ -18,8 +18,6 @@
import static android.text.Spanned.SPAN_EXCLUSIVE_INCLUSIVE;
-import static com.android.settingslib.flags.Flags.audioSharingHysteresisModeFix;
-
import android.os.Handler;
import android.os.Looper;
import android.text.SpannableString;
@@ -98,7 +96,8 @@
newState
== AudioStreamsProgressCategoryController
.AudioStreamState.SOURCE_ADDED
- || (audioSharingHysteresisModeFix()
+ || (BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(
+ preference.getContext())
&& newState
== AudioStreamsProgressCategoryController
.AudioStreamState.SOURCE_PRESENT));
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
index 0107c6e..f45b63c 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
@@ -31,7 +31,6 @@
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.flags.Flags;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@@ -81,13 +80,6 @@
}
@Override
- public int getAvailabilityStatus() {
- return Flags.enableLeAudioQrCodePrivateBroadcastSharing()
- ? AVAILABLE
- : UNSUPPORTED_ON_DEVICE;
- }
-
- @Override
public void updateVisibility() {
if (mPreference == null) return;
mExecutor.execute(
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
index 7c1281f..25a9135 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
@@ -19,7 +19,6 @@
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamMediaService.BROADCAST_ID;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamMediaService.BROADCAST_TITLE;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamMediaService.DEVICES;
-import static com.android.settingslib.flags.Flags.audioSharingHysteresisModeFix;
import static java.util.Collections.emptyList;
@@ -271,7 +270,8 @@
List<BluetoothLeBroadcastReceiveState> sourceList =
assistant.getAllSources(cachedDevice.getDevice());
if (!sourceList.isEmpty()
- && (audioSharingHysteresisModeFix()
+ && (BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(
+ localBtManager.getContext())
|| sourceList.stream().anyMatch(AudioStreamsHelper::isConnected))) {
Log.d(
TAG,
@@ -284,7 +284,8 @@
List<BluetoothLeBroadcastReceiveState> list =
assistant.getAllSources(device.getDevice());
if (!list.isEmpty()
- && (audioSharingHysteresisModeFix()
+ && (BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(
+ localBtManager.getContext())
|| list.stream().anyMatch(AudioStreamsHelper::isConnected))) {
Log.d(
TAG,
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
index b379d4e..f003431 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
@@ -16,19 +16,24 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
-import static com.android.settingslib.flags.Flags.audioSharingHysteresisModeFix;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.content.Context;
+
+import com.android.settingslib.bluetooth.BluetoothUtils;
public class AudioStreamsProgressCategoryCallback extends AudioStreamsBroadcastAssistantCallback {
private static final String TAG = "AudioStreamsProgressCategoryCallback";
+ private final Context mContext;
private final AudioStreamsProgressCategoryController mCategoryController;
public AudioStreamsProgressCategoryCallback(
+ Context context,
AudioStreamsProgressCategoryController audioStreamsProgressCategoryController) {
+ mContext = context;
mCategoryController = audioStreamsProgressCategoryController;
}
@@ -41,7 +46,8 @@
mCategoryController.handleSourceConnected(state);
} else if (AudioStreamsHelper.isBadCode(state)) {
mCategoryController.handleSourceConnectBadCode(state);
- } else if (audioSharingHysteresisModeFix() && AudioStreamsHelper.hasSourcePresent(state)) {
+ } else if (BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(mContext)
+ && AudioStreamsHelper.hasSourcePresent(state)) {
// Keep this check as the last, source might also present in above states
mCategoryController.handleSourcePresent(state);
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
index 7ab5882..f0a0c5b 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
@@ -16,8 +16,6 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
-import static com.android.settingslib.flags.Flags.audioSharingHysteresisModeFix;
-
import static java.util.Collections.emptyList;
import android.app.AlertDialog;
@@ -101,7 +99,7 @@
(p.getAudioStreamState()
== AudioStreamsProgressCategoryController
.AudioStreamState.SOURCE_ADDED
- || (audioSharingHysteresisModeFix()
+ || (isAudioSharingHysteresisModeFixAvailable(mContext)
&& p.getAudioStreamState()
== AudioStreamsProgressCategoryController
.AudioStreamState
@@ -147,7 +145,7 @@
mAudioStreamsHelper = new AudioStreamsHelper(mBluetoothManager);
mMediaControlHelper = new MediaControlHelper(mContext, mBluetoothManager);
mLeBroadcastAssistant = mAudioStreamsHelper.getLeBroadcastAssistant();
- mBroadcastAssistantCallback = new AudioStreamsProgressCategoryCallback(this);
+ mBroadcastAssistantCallback = new AudioStreamsProgressCategoryCallback(context, this);
}
@Override
@@ -258,7 +256,7 @@
// change it's state.
existingPreference.setAudioStreamMetadata(source);
if (fromState != AudioStreamState.SOURCE_ADDED
- && (!audioSharingHysteresisModeFix()
+ && (!isAudioSharingHysteresisModeFixAvailable(mContext)
|| fromState != AudioStreamState.SOURCE_PRESENT)) {
Log.w(
TAG,
@@ -364,7 +362,7 @@
// not, means the source is removed from the sink, we move back the preference to SYNCED
// state.
if ((preference.getAudioStreamState() == AudioStreamState.SOURCE_ADDED
- || (audioSharingHysteresisModeFix()
+ || (isAudioSharingHysteresisModeFixAvailable(mContext)
&& preference.getAudioStreamState()
== AudioStreamState.SOURCE_PRESENT))
&& mAudioStreamsHelper.getAllConnectedSources().stream()
@@ -600,7 +598,7 @@
// Handle QR code scan, display currently connected streams then start scanning
// sequentially
handleSourceFromQrCodeIfExists();
- if (audioSharingHysteresisModeFix()) {
+ if (isAudioSharingHysteresisModeFixAvailable(mContext)) {
// With hysteresis mode, we prioritize showing connected sources first.
// If no connected sources are found, we then show present sources.
List<BluetoothLeBroadcastReceiveState> sources =
@@ -702,4 +700,8 @@
dialog.dismiss();
});
}
+
+ private static boolean isAudioSharingHysteresisModeFixAvailable(Context context) {
+ return BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(context);
+ }
}
diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java
index c9ea8ae..d042799 100644
--- a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java
+++ b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java
@@ -19,8 +19,8 @@
import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED;
import static android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_ADDED;
import static android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_CHANGED;
-import static android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED;
import static android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_REMOVED;
+import static android.hardware.display.DisplayManager.PRIVATE_EVENT_FLAG_DISPLAY_CONNECTION_CHANGED;
import static android.view.Display.INVALID_DISPLAY;
import static com.android.server.display.feature.flags.Flags.enableModeLimitForExternalDisplay;
@@ -159,8 +159,8 @@
return;
}
dm.registerDisplayListener(listener, mHandler, EVENT_FLAG_DISPLAY_ADDED
- | EVENT_FLAG_DISPLAY_CHANGED | EVENT_FLAG_DISPLAY_REMOVED
- | EVENT_FLAG_DISPLAY_CONNECTION_CHANGED);
+ | EVENT_FLAG_DISPLAY_CHANGED | EVENT_FLAG_DISPLAY_REMOVED,
+ PRIVATE_EVENT_FLAG_DISPLAY_CONNECTION_CHANGED);
}
/**
diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
index 9b03e9b..ac87ea5 100644
--- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
@@ -147,7 +147,7 @@
mMetricsFeatureProvider.logClickedPreference(preference, getMetricsCategory());
}
- private void updateActivityTitleWithScreenTitle(PreferenceScreen screen) {
+ protected void updateActivityTitleWithScreenTitle(PreferenceScreen screen) {
if (screen != null) {
final CharSequence title = screen.getTitle();
if (!TextUtils.isEmpty(title)) {
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index c9530ab..491ca5c 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -46,6 +46,7 @@
import com.android.settings.core.CategoryMixin.CategoryHandler;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
+import com.android.settingslib.widget.SettingsThemeHelper;
import com.android.window.flags.Flags;
import com.google.android.material.appbar.AppBarLayout;
@@ -68,6 +69,12 @@
private static final int DEFAULT_REQUEST = -1;
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
+ private static final int EXPRESSIVE_LAYOUT_ID =
+ com.android.settingslib.collapsingtoolbar.R.layout.settingslib_expressive_collapsing_toolbar_base_layout;
+ private static final int COLLAPSING_LAYOUT_ID =
+ com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout;
+
+
protected CategoryMixin mCategoryMixin;
protected CollapsingToolbarLayout mCollapsingToolbarLayout;
protected AppBarLayout mAppBarLayout;
@@ -116,8 +123,9 @@
}
if (isToolbarEnabled() && !isAnySetupWizard) {
- super.setContentView(
- com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout);
+ int resId = SettingsThemeHelper.isExpressiveTheme(getApplicationContext())
+ ? EXPRESSIVE_LAYOUT_ID : COLLAPSING_LAYOUT_ID;
+ super.setContentView(resId);
mCollapsingToolbarLayout =
findViewById(com.android.settingslib.collapsingtoolbar.R.id.collapsing_toolbar);
mAppBarLayout = findViewById(R.id.app_bar);
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 117364f..01fa548 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -28,7 +28,6 @@
import com.android.settings.accessibility.AccessibilityHearingAidsFragment;
import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
-import com.android.settings.accessibility.AutoBrightnessPreferenceFragmentForSetupWizard;
import com.android.settings.accessibility.CaptioningPropertiesFragment;
import com.android.settings.accessibility.ColorAndMotionFragment;
import com.android.settings.accessibility.HearingDevicePairingFragment;
@@ -44,6 +43,7 @@
import com.android.settings.accounts.ChooseAccountFragment;
import com.android.settings.accounts.ManagedProfileSettings;
import com.android.settings.applications.AppDashboardFragment;
+import com.android.settings.applications.AppStorageSettings;
import com.android.settings.applications.ProcessStatsSummary;
import com.android.settings.applications.ProcessStatsUi;
import com.android.settings.applications.UsageAccessDetails;
@@ -117,6 +117,7 @@
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
import com.android.settings.fuelgauge.batterysaver.BatterySaverScheduleSettings;
import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageAdvanced;
import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
import com.android.settings.gestures.ButtonNavigationSettingsFragment;
import com.android.settings.gestures.DoubleTapPowerSettings;
@@ -244,6 +245,7 @@
MyDeviceInfoFragment.class.getName(),
ModuleLicensesDashboard.class.getName(),
ManageApplications.class.getName(),
+ AppStorageSettings.class.getName(),
FirmwareVersionSettings.class.getName(),
ManageAssist.class.getName(),
ProcessStatsUi.class.getName(),
@@ -265,7 +267,6 @@
EditShortcutsPreferenceFragment.class.getName(),
TextReadingPreferenceFragment.class.getName(),
TextReadingPreferenceFragmentForSetupWizard.class.getName(),
- AutoBrightnessPreferenceFragmentForSetupWizard.class.getName(),
CaptioningPropertiesFragment.class.getName(),
ToggleDaltonizerPreferenceFragment.class.getName(),
ToggleColorInversionPreferenceFragment.class.getName(),
@@ -276,6 +277,7 @@
DevelopmentSettingsDashboardFragment.class.getName(),
WifiDisplaySettings.class.getName(),
PowerUsageSummary.class.getName(),
+ PowerUsageAdvanced.class.getName(),
AccountSyncSettings.class.getName(),
FaceSettings.class.getName(),
FingerprintSettings.FingerprintSettingsFragment.class.getName(),
@@ -415,6 +417,7 @@
Settings.SoundSettingsActivity.class.getName(),
Settings.StorageDashboardActivity.class.getName(),
Settings.PowerUsageSummaryActivity.class.getName(),
+ Settings.PowerUsageAdvancedActivity.class.getName(),
Settings.AccountDashboardActivity.class.getName(),
Settings.PrivacySettingsActivity.class.getName(),
Settings.SecurityDashboardActivity.class.getName(),
@@ -434,6 +437,7 @@
Settings.UserSettingsActivity.class.getName(),
Settings.ConfigureNotificationSettingsActivity.class.getName(),
Settings.ManageApplicationsActivity.class.getName(),
+ Settings.AppStorageSettingsActivity.class.getName(),
Settings.PaymentSettingsActivity.class.getName(),
// Home page > Display
Settings.AdaptiveBrightnessActivity.class.getName(),
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 92e99cf..6a96089 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -48,11 +48,13 @@
import com.android.settings.core.PreferenceControllerListHelper;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.restriction.UserRestrictionBindingHelper;
import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
+import com.android.settingslib.preference.PreferenceScreenBindingHelper;
import com.android.settingslib.preference.PreferenceScreenCreator;
import com.android.settingslib.search.Indexable;
@@ -92,6 +94,8 @@
private boolean mListeningToCategoryChange;
private List<String> mSuppressInjectedTileKeys;
+ private @Nullable UserRestrictionBindingHelper mUserRestrictionBindingHelper;
+
@Override
public void onAttach(Context context) {
super.onAttach(context);
@@ -178,6 +182,13 @@
// editing dialog is recreated (that would happen before onResume is called).
updatePreferenceStates();
}
+ if (isCatalystEnabled()) {
+ PreferenceScreenBindingHelper helper = getPreferenceScreenBindingHelper();
+ if (helper != null) {
+ mUserRestrictionBindingHelper = new UserRestrictionBindingHelper(requireContext(),
+ helper);
+ }
+ }
}
@Override
@@ -289,8 +300,12 @@
}
@Override
- protected final int getPreferenceScreenResId(@NonNull Context context) {
- return getPreferenceScreenResId();
+ public void onDestroy() {
+ if (mUserRestrictionBindingHelper != null) {
+ mUserRestrictionBindingHelper.close();
+ mUserRestrictionBindingHelper = null;
+ }
+ super.onDestroy();
}
@Override
@@ -393,7 +408,7 @@
removeControllersForHybridMode();
}
setPreferenceScreen(screen);
- requireActivity().setTitle(screen.getTitle());
+ updateActivityTitleWithScreenTitle(screen);
} else {
addPreferencesFromResource(resId);
screen = getPreferenceScreen();
@@ -427,19 +442,6 @@
}
}
- /** Returns if catalyst is enabled on current screen. */
- protected final boolean isCatalystEnabled() {
- return getPreferenceScreenCreator() != null;
- }
-
- private @Nullable PreferenceScreenCreator getPreferenceScreenCreator() {
- if (!Flags.catalyst()) {
- return null;
- }
- Context context = getContext();
- return context != null ? getPreferenceScreenCreator(context) : null;
- }
-
/**
* Perform {@link AbstractPreferenceController#displayPreference(PreferenceScreen)}
* on all {@link AbstractPreferenceController}s.
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java b/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java
index 1e5145a..de6e158 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java
@@ -20,6 +20,7 @@
import com.android.settings.accounts.AccountDashboardFragment;
import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.development.linuxterminal.LinuxTerminalDashboardFragment;
import com.android.settings.deviceinfo.StorageDashboardFragment;
import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
import com.android.settings.inputmethod.NewKeyboardLayoutEnabledLocalesFragment;
@@ -52,5 +53,8 @@
ProfileSelectKeyboardFragment.class.getName());
FRAGMENT_MAP.put(NewKeyboardLayoutEnabledLocalesFragment.class.getName(),
ProfileSelectPhysicalKeyboardFragment.class.getName());
+ FRAGMENT_MAP.put(
+ LinuxTerminalDashboardFragment.class.getName(),
+ ProfileSelectLinuxTerminalFragment.class.getName());
}
}
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
index 494ef95..270ab9c 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
@@ -331,23 +331,29 @@
for (UserInfo userInfo : userInfos) {
if (userInfo.isMain()) {
- fragments.add(createAndGetFragment(
- ProfileType.PERSONAL,
- bundle != null ? bundle : new Bundle(),
- personalFragmentConstructor));
+ fragments.add(
+ createAndGetFragment(
+ ProfileType.PERSONAL,
+ userInfo.id,
+ bundle != null ? bundle : new Bundle(),
+ personalFragmentConstructor));
} else if (userInfo.isManagedProfile()) {
- fragments.add(createAndGetFragment(
- ProfileType.WORK,
- bundle != null ? bundle.deepCopy() : new Bundle(),
- workFragmentConstructor));
+ fragments.add(
+ createAndGetFragment(
+ ProfileType.WORK,
+ userInfo.id,
+ bundle != null ? bundle.deepCopy() : new Bundle(),
+ workFragmentConstructor));
} else if (Flags.allowPrivateProfile()
&& android.multiuser.Flags.enablePrivateSpaceFeatures()
&& userInfo.isPrivateProfile()) {
if (!privateSpaceInfoProvider.isPrivateSpaceLocked(context)) {
- fragments.add(createAndGetFragment(
- ProfileType.PRIVATE,
- bundle != null ? bundle.deepCopy() : new Bundle(),
- privateFragmentConstructor));
+ fragments.add(
+ createAndGetFragment(
+ ProfileType.PRIVATE,
+ userInfo.id,
+ bundle != null ? bundle.deepCopy() : new Bundle(),
+ privateFragmentConstructor));
}
} else {
Log.d(TAG, "Not showing tab for unsupported user " + userInfo);
@@ -364,8 +370,12 @@
}
private static Fragment createAndGetFragment(
- @ProfileType int profileType, Bundle bundle, FragmentConstructor fragmentConstructor) {
+ @ProfileType int profileType,
+ int userId,
+ Bundle bundle,
+ FragmentConstructor fragmentConstructor) {
bundle.putInt(EXTRA_PROFILE, profileType);
+ bundle.putInt(EXTRA_USER_ID, userId);
final Fragment fragment = fragmentConstructor.constructAndGetFragment();
fragment.setArguments(bundle);
return fragment;
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectLinuxTerminalFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectLinuxTerminalFragment.java
new file mode 100644
index 0000000..c10a3e2
--- /dev/null
+++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectLinuxTerminalFragment.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2024 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.settings.dashboard.profileselector;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+import com.android.settings.development.DeveloperOptionAwareMixin;
+import com.android.settings.development.linuxterminal.LinuxTerminalDashboardFragment;
+
+/** Linux terminal preferences at developers option for personal/managed profile. */
+public class ProfileSelectLinuxTerminalFragment extends ProfileSelectFragment
+ implements DeveloperOptionAwareMixin {
+
+ private static final String TAG = "ProfileSelLinuxTerminalFrag";
+
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ @NonNull
+ public Fragment[] getFragments() {
+ return getFragments(
+ getContext(),
+ getArguments(),
+ LinuxTerminalDashboardFragment::new,
+ LinuxTerminalDashboardFragment::new,
+ LinuxTerminalDashboardFragment::new);
+ }
+}
diff --git a/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt b/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt
new file mode 100644
index 0000000..f20e264
--- /dev/null
+++ b/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2024 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.settings.datausage
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.widget.MainSwitchBarMetadata
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.ReadWritePermit
+
+class DataSaverMainSwitchPreference(context: Context) :
+ MainSwitchBarMetadata, PreferenceLifecycleProvider {
+
+ private val dataSaverBackend = DataSaverBackend(context)
+ private var dataSaverBackendListener: DataSaverBackend.Listener? = null
+
+ override val key
+ get() = "use_data_saver"
+
+ override val title
+ get() = R.string.data_saver_switch_title
+
+ override fun storage(context: Context): KeyValueStore = DataSaverStore(dataSaverBackend)
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(this) }
+ dataSaverBackendListener = listener
+ dataSaverBackend.addListener(listener)
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ dataSaverBackendListener?.let {
+ dataSaverBackend.remListener(it)
+ dataSaverBackendListener = null
+ }
+ }
+
+ @Suppress("UNCHECKED_CAST")
+ private class DataSaverStore(private val dataSaverBackend: DataSaverBackend) :
+ NoOpKeyedObservable<String>(), KeyValueStore {
+
+ override fun contains(key: String) = true // just assume the datastore contains the value
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>): T? =
+ dataSaverBackend.isDataSaverEnabled as T?
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ dataSaverBackend.isDataSaverEnabled = value as Boolean
+ }
+ }
+}
diff --git a/src/com/android/settings/datausage/DataSaverPreference.java b/src/com/android/settings/datausage/DataSaverPreference.java
index 305d061..0c3c1aa 100644
--- a/src/com/android/settings/datausage/DataSaverPreference.java
+++ b/src/com/android/settings/datausage/DataSaverPreference.java
@@ -17,29 +17,39 @@
import android.content.Context;
import android.util.AttributeSet;
+import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.settings.R;
+import com.android.settings.flags.Flags;
public class DataSaverPreference extends Preference implements DataSaverBackend.Listener {
- private final DataSaverBackend mDataSaverBackend;
+ private final @Nullable DataSaverBackend mDataSaverBackend;
public DataSaverPreference(Context context, AttributeSet attrs) {
super(context, attrs);
- mDataSaverBackend = new DataSaverBackend(context);
+ mDataSaverBackend = isCatalystEnabled() ? null : new DataSaverBackend(context);
+ }
+
+ private boolean isCatalystEnabled() {
+ return Flags.catalyst() && Flags.catalystRestrictBackgroundParentEntry();
}
@Override
public void onAttached() {
super.onAttached();
- mDataSaverBackend.addListener(this);
+ if (mDataSaverBackend != null) {
+ mDataSaverBackend.addListener(this);
+ }
}
@Override
public void onDetached() {
super.onDetached();
- mDataSaverBackend.remListener(this);
+ if (mDataSaverBackend != null) {
+ mDataSaverBackend.remListener(this);
+ }
}
@Override
diff --git a/src/com/android/settings/datausage/DataSaverScreen.kt b/src/com/android/settings/datausage/DataSaverScreen.kt
new file mode 100644
index 0000000..a0b579c
--- /dev/null
+++ b/src/com/android/settings/datausage/DataSaverScreen.kt
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2024 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.settings.datausage
+
+import android.content.Context
+import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.PreferenceSummaryProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class DataSaverScreen :
+ PreferenceScreenCreator,
+ PreferenceAvailabilityProvider,
+ PreferenceSummaryProvider,
+ PreferenceLifecycleProvider {
+
+ private var dataSaverBackend: DataSaverBackend? = null
+ private var dataSaverBackendListener: DataSaverBackend.Listener? = null
+
+ override val key
+ get() = KEY
+
+ override val title
+ get() = R.string.data_saver_title
+
+ override val icon: Int
+ get() = R.drawable.ic_settings_data_usage
+
+ override fun isIndexable(context: Context) =
+ DataUsageUtils.hasMobileData(context) &&
+ DataUsageUtils.getDefaultSubscriptionId(context) != INVALID_SUBSCRIPTION_ID
+
+ override fun getSummary(context: Context): CharSequence? =
+ when {
+ DataSaverBackend(context).isDataSaverEnabled ->
+ context.getString(R.string.data_saver_on)
+ else -> context.getString(R.string.data_saver_off)
+ }
+
+ override fun isAvailable(context: Context) =
+ context.resources.getBoolean(R.bool.config_show_data_saver)
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystRestrictBackgroundParentEntry()
+
+ override fun fragmentClass() = DataSaverSummary::class.java
+
+ override fun getPreferenceHierarchy(context: Context) =
+ preferenceHierarchy(this) { +DataSaverMainSwitchPreference(context) }
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(this) }
+ dataSaverBackendListener = listener
+ dataSaverBackend = DataSaverBackend(context).apply { addListener(listener) }
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ dataSaverBackend?.remListener(dataSaverBackendListener)
+ dataSaverBackend = null
+ dataSaverBackendListener = null
+ }
+
+ companion object {
+ const val KEY = "restrict_background_parent_entry"
+ }
+}
diff --git a/src/com/android/settings/datausage/DataSaverSummary.kt b/src/com/android/settings/datausage/DataSaverSummary.kt
index e118bd6..60de8a7 100644
--- a/src/com/android/settings/datausage/DataSaverSummary.kt
+++ b/src/com/android/settings/datausage/DataSaverSummary.kt
@@ -43,26 +43,34 @@
return
}
- dataSaverBackend = DataSaverBackend(requireContext())
+ if (!isCatalystEnabled) {
+ dataSaverBackend = DataSaverBackend(requireContext())
+ }
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- switchBar = (activity as SettingsActivity).switchBar.apply {
- setTitle(getString(R.string.data_saver_switch_title))
- show()
- addOnSwitchChangeListener { _, isChecked -> onSwitchChanged(isChecked) }
+ if (!isCatalystEnabled) {
+ switchBar = (activity as SettingsActivity).switchBar.apply {
+ setTitle(getString(R.string.data_saver_switch_title))
+ show()
+ addOnSwitchChangeListener { _, isChecked -> onSwitchChanged(isChecked) }
+ }
}
}
override fun onResume() {
super.onResume()
- dataSaverBackend.addListener(dataSaverBackendListener)
+ if (!isCatalystEnabled) {
+ dataSaverBackend.addListener(dataSaverBackendListener)
+ }
}
override fun onPause() {
super.onPause()
- dataSaverBackend.remListener(dataSaverBackendListener)
+ if (!isCatalystEnabled) {
+ dataSaverBackend.remListener(dataSaverBackendListener)
+ }
}
private fun onSwitchChanged(isChecked: Boolean) {
@@ -79,6 +87,8 @@
override fun getHelpResource() = R.string.help_url_data_saver
override fun getLogTag() = TAG
+ override fun getPreferenceScreenBindingKey(context: Context) = DataSaverScreen.KEY
+
private val dataSaverBackendListener = object : DataSaverBackend.Listener {
override fun onDataSaverChanged(isDataSaving: Boolean) {
synchronized(this) {
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
index b3e66a9..bb84c18 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
@@ -30,6 +30,7 @@
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedPreferenceHelper;
+import com.android.settingslib.RestrictedPreferenceHelperProvider;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -37,7 +38,7 @@
import com.android.settingslib.widget.AppSwitchPreference;
public class UnrestrictedDataAccessPreference extends AppSwitchPreference implements
- DataSaverBackend.Listener {
+ DataSaverBackend.Listener, RestrictedPreferenceHelperProvider {
private static final String ECM_SETTING_IDENTIFIER = "android:unrestricted_data_access";
private final ApplicationsState mApplicationsState;
@@ -79,6 +80,11 @@
}
@Override
+ public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
+ return mHelper;
+ }
+
+ @Override
public void onAttached() {
super.onAttached();
mDataSaverBackend.addListener(this);
diff --git a/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java b/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java
index adbedee..120d8ca 100644
--- a/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java
+++ b/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java
@@ -164,7 +164,9 @@
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// To prevent a large space on tool bar.
- mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ if (mAppBarLayout != null) {
+ mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ }
// To prevent user can expand the collapsing tool bar view.
ViewCompat.setNestedScrollingEnabled(mRecyclerView, false);
return true;
@@ -173,7 +175,9 @@
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// We keep the collapsed status after user cancel the search function.
- mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ if (mAppBarLayout != null) {
+ mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ }
ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
return true;
}
@@ -196,6 +200,10 @@
}
private void autoSetCollapsingToolbarLayoutScrolling() {
+ if (mAppBarLayout == null) {
+ return;
+ }
+
CoordinatorLayout.LayoutParams params =
(CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = new AppBarLayout.Behavior();
diff --git a/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java b/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java
index f460b9e..45d82ad 100644
--- a/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java
+++ b/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java
@@ -75,6 +75,12 @@
}
@Override
+ protected void onDeveloperOptionsSwitchEnabled() {
+ super.onDeveloperOptionsSwitchEnabled();
+ updateState(mPreference);
+ }
+
+ @Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
final boolean offloadSupported =
diff --git a/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java b/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java
index 739258d..bf5efa7 100644
--- a/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java
+++ b/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java
@@ -34,12 +34,10 @@
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+import java.util.Objects;
-/**
- * Preference controller to control Bluetooth LE audio mode
- */
-public class BluetoothLeAudioModePreferenceController
- extends DeveloperOptionsPreferenceController
+/** Preference controller to control Bluetooth LE audio mode */
+public class BluetoothLeAudioModePreferenceController extends DeveloperOptionsPreferenceController
implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin {
private static final String PREFERENCE_KEY = "bluetooth_leaudio_mode";
@@ -51,15 +49,13 @@
private final String[] mListValues;
private final String[] mListSummaries;
- @VisibleForTesting
- @Nullable String mNewMode;
- @VisibleForTesting
- BluetoothAdapter mBluetoothAdapter;
+ @VisibleForTesting @Nullable String mNewMode;
+ @VisibleForTesting BluetoothAdapter mBluetoothAdapter;
boolean mChanged = false;
- public BluetoothLeAudioModePreferenceController(@NonNull Context context,
- @Nullable DevelopmentSettingsDashboardFragment fragment) {
+ public BluetoothLeAudioModePreferenceController(
+ @NonNull Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) {
super(context);
mFragment = fragment;
mBluetoothAdapter = context.getSystemService(BluetoothManager.class).getAdapter();
@@ -69,7 +65,8 @@
}
@Override
- @NonNull public String getPreferenceKey() {
+ @NonNull
+ public String getPreferenceKey() {
return PREFERENCE_KEY;
}
@@ -125,20 +122,25 @@
}
}
- /**
- * Called when the RebootDialog confirm is clicked.
- */
+ /** Called when the RebootDialog confirm is clicked. */
public void onRebootDialogConfirmed() {
if (!mChanged) {
return;
}
SystemProperties.set(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, mNewMode);
+ if (mFragment != null && !Objects.equals(mNewMode, "broadcast")) {
+ mFragment.onBroadcastDisabled();
+ }
}
- /**
- * Called when the RebootDialog cancel is clicked.
- */
+ /** Called when the RebootDialog cancel is clicked. */
public void onRebootDialogCanceled() {
mChanged = false;
}
+
+ public interface OnModeChangeListener {
+
+ /** Called when the broadcast mode is disabled. */
+ void onBroadcastDisabled();
+ }
}
diff --git a/src/com/android/settings/development/BluetoothLeAudioUiPreferenceController.java b/src/com/android/settings/development/BluetoothLeAudioUiPreferenceController.java
new file mode 100644
index 0000000..f2ae55f
--- /dev/null
+++ b/src/com/android/settings/development/BluetoothLeAudioUiPreferenceController.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2024 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.settings.development;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothStatusCodes;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+import android.sysprop.BluetoothProperties;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreferenceCompat;
+
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+import com.android.settingslib.flags.Flags;
+import com.android.settingslib.utils.ThreadUtils;
+
+/** Preference controller to enable / disable the Bluetooth LE audio sharing UI flow */
+public class BluetoothLeAudioUiPreferenceController extends DeveloperOptionsPreferenceController
+ implements Preference.OnPreferenceChangeListener,
+ PreferenceControllerMixin,
+ BluetoothLeAudioModePreferenceController.OnModeChangeListener {
+ private static final String TAG = "BluetoothLeAudioUiPreferenceController";
+ private static final String PREFERENCE_KEY = "bluetooth_leaudio_broadcast_ui";
+
+ @VisibleForTesting
+ static final String VALUE_KEY = "bluetooth_le_audio_sharing_ui_preview_enabled";
+
+ @VisibleForTesting static final int VALUE_OFF = 0;
+ @VisibleForTesting static final int VALUE_ON = 1;
+ @VisibleForTesting static final int VALUE_UNSET = -1;
+ @Nullable private final DevelopmentSettingsDashboardFragment mFragment;
+ private final BluetoothAdapter mBluetoothAdapter;
+ private boolean mCurrentSettingsValue = false;
+ private boolean mShouldToggleCurrentValue = false;
+
+ public BluetoothLeAudioUiPreferenceController(
+ @NonNull Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) {
+ super(context);
+ mFragment = fragment;
+ mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return Flags.audioSharingDeveloperOption()
+ && BluetoothProperties.isProfileBapBroadcastSourceEnabled().orElse(false)
+ && BluetoothProperties.isProfileBapBroadcastAssistEnabled().orElse(false);
+ }
+
+ @Override
+ public boolean onPreferenceChange(@NonNull Preference preference, @Nullable Object newValue) {
+ if (mFragment != null && newValue != null && (boolean) newValue != mCurrentSettingsValue) {
+ mShouldToggleCurrentValue = true;
+ BluetoothRebootDialog.show(mFragment);
+ }
+ return false;
+ }
+
+ @Override
+ public void updateState(@NonNull Preference preference) {
+ if (mBluetoothAdapter == null) {
+ return;
+ }
+ var unused = ThreadUtils.postOnBackgroundThread(
+ () -> {
+ boolean shouldEnable =
+ mBluetoothAdapter.isEnabled()
+ && mBluetoothAdapter.isLeAudioBroadcastSourceSupported()
+ == BluetoothStatusCodes.FEATURE_SUPPORTED
+ && mBluetoothAdapter.isLeAudioBroadcastAssistantSupported()
+ == BluetoothStatusCodes.FEATURE_SUPPORTED;
+ boolean valueOn =
+ Settings.Global.getInt(
+ mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET)
+ == VALUE_ON;
+ mContext.getMainExecutor()
+ .execute(
+ () -> {
+ if (!shouldEnable && valueOn) {
+ Log.e(
+ TAG,
+ "Error state: toggle disabled but current"
+ + " settings value is true.");
+ }
+ mCurrentSettingsValue = valueOn;
+ preference.setEnabled(shouldEnable);
+ ((SwitchPreferenceCompat) preference).setChecked(valueOn);
+ });
+ });
+ }
+
+ @Override
+ public @NonNull String getPreferenceKey() {
+ return PREFERENCE_KEY;
+ }
+
+ /** Called when the RebootDialog confirm is clicked. */
+ public void onRebootDialogConfirmed() {
+ if (isAvailable() && mShouldToggleCurrentValue) {
+ // Blocking, ensure reboot happens after value is saved.
+ Log.d(TAG, "onRebootDialogConfirmed(): setting value to " + !mCurrentSettingsValue);
+ toggleSetting(mContext.getContentResolver(), !mCurrentSettingsValue);
+ }
+ }
+
+ /** Called when the RebootDialog cancel is clicked. */
+ public void onRebootDialogCanceled() {
+ mShouldToggleCurrentValue = false;
+ }
+
+ @Override
+ public void onBroadcastDisabled() {
+ if (isAvailable() && mCurrentSettingsValue) {
+ Log.d(TAG, "onBroadcastDisabled(): setting value to false");
+ // Blocking, ensure reboot happens after value is saved.
+ toggleSetting(mContext.getContentResolver(), false);
+ }
+ }
+
+ private static void toggleSetting(ContentResolver contentResolver, boolean valueOn) {
+ Settings.Global.putInt(contentResolver, VALUE_KEY, valueOn ? VALUE_ON : VALUE_OFF);
+ }
+}
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 8a970fb..9c13794 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -74,6 +74,7 @@
import com.android.settings.development.bluetooth.BluetoothSampleRateDialogPreferenceController;
import com.android.settings.development.bluetooth.BluetoothStackLogPreferenceController;
import com.android.settings.development.graphicsdriver.GraphicsDriverEnableAngleAsSystemDriverController;
+import com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController;
import com.android.settings.development.qstile.DevelopmentTiles;
import com.android.settings.development.storage.SharedDataPreferenceController;
import com.android.settings.overlay.FeatureFactory;
@@ -99,7 +100,9 @@
AdbClearKeysDialogHost, LogPersistDialogHost,
BluetoothRebootDialog.OnRebootDialogListener,
AbstractBluetoothPreferenceController.Callback,
- NfcRebootDialog.OnNfcRebootDialogConfirmedListener, BluetoothSnoopLogHost {
+ NfcRebootDialog.OnNfcRebootDialogConfirmedListener,
+ BluetoothSnoopLogHost,
+ BluetoothLeAudioModePreferenceController.OnModeChangeListener {
private static final String TAG = "DevSettingsDashboard";
@VisibleForTesting static final int REQUEST_BIOMETRIC_PROMPT = 100;
@@ -498,6 +501,10 @@
getDevelopmentOptionsController(
BluetoothLeAudioModePreferenceController.class);
leAudioModeController.onRebootDialogConfirmed();
+
+ final BluetoothLeAudioUiPreferenceController leAudioUiController =
+ getDevelopmentOptionsController(BluetoothLeAudioUiPreferenceController.class);
+ leAudioUiController.onRebootDialogConfirmed();
}
@Override
@@ -520,6 +527,10 @@
getDevelopmentOptionsController(
BluetoothLeAudioModePreferenceController.class);
leAudioModeController.onRebootDialogCanceled();
+
+ final BluetoothLeAudioUiPreferenceController leAudioUiController =
+ getDevelopmentOptionsController(BluetoothLeAudioUiPreferenceController.class);
+ leAudioUiController.onRebootDialogCanceled();
}
@Override
@@ -741,6 +752,7 @@
controllers.add(new BluetoothMapVersionPreferenceController(context));
controllers.add(new BluetoothLeAudioPreferenceController(context, fragment));
controllers.add(new BluetoothLeAudioModePreferenceController(context, fragment));
+ controllers.add(new BluetoothLeAudioUiPreferenceController(context, fragment));
controllers.add(new BluetoothLeAudioDeviceDetailsPreferenceController(context));
controllers.add(new BluetoothLeAudioAllowListPreferenceController(context));
controllers.add(new BluetoothA2dpHwOffloadPreferenceController(context, fragment));
@@ -858,6 +870,15 @@
}
}
+ @Override
+ public void onBroadcastDisabled() {
+ for (AbstractPreferenceController controller : mPreferenceControllers) {
+ if (controller instanceof BluetoothLeAudioUiPreferenceController) {
+ ((BluetoothLeAudioUiPreferenceController) controller).onBroadcastDisabled();
+ }
+ }
+ }
+
/**
* For Search.
*/
diff --git a/src/com/android/settings/development/LinuxTerminalPreferenceController.java b/src/com/android/settings/development/LinuxTerminalPreferenceController.java
deleted file mode 100644
index 3e419e4..0000000
--- a/src/com/android/settings/development/LinuxTerminalPreferenceController.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2024 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.settings.development;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.TwoStatePreference;
-
-import com.android.settings.R;
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.development.DeveloperOptionsPreferenceController;
-
-public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenceController
- implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin {
- private static final String TAG = "LinuxTerminalPrefCtrl";
-
- private static final String ENABLE_TERMINAL_KEY = "enable_linux_terminal";
-
- @NonNull
- private final PackageManager mPackageManager;
-
- @Nullable
- private final String mTerminalPackageName;
-
- public LinuxTerminalPreferenceController(@NonNull Context context) {
- super(context);
- mPackageManager = mContext.getPackageManager();
-
- String packageName = mContext.getString(R.string.config_linux_terminal_app_package_name);
- mTerminalPackageName =
- isPackageInstalled(mPackageManager, packageName) ? packageName : null;
-
- Log.d(TAG, "Terminal app package name=" + packageName + ", isAvailable=" + isAvailable());
- }
-
- // Avoid lazy initialization because this may be called before displayPreference().
- @Override
- public boolean isAvailable() {
- // Returns true only if the terminal app is installed which only happens when the build flag
- // RELEASE_AVF_SUPPORT_CUSTOM_VM_WITH_PARAVIRTUALIZED_DEVICES is true.
- // TODO(b/343795511): Add explicitly check for the flag when it's accessible from Java code.
- return getTerminalPackageName() != null;
- }
-
- @Override
- @NonNull
- public String getPreferenceKey() {
- return ENABLE_TERMINAL_KEY;
- }
-
- @Override
- public void displayPreference(@NonNull PreferenceScreen screen) {
- super.displayPreference(screen);
- mPreference.setEnabled(isAvailable());
- }
-
- @Override
- public boolean onPreferenceChange(
- @NonNull Preference preference, @NonNull Object newValue) {
- String packageName = getTerminalPackageName();
- if (packageName == null) {
- return false;
- }
-
- boolean terminalEnabled = (Boolean) newValue;
- int state = terminalEnabled
- ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
- : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
- mPackageManager.setApplicationEnabledSetting(packageName, state, /* flags=*/ 0);
- ((TwoStatePreference) mPreference).setChecked(terminalEnabled);
- return true;
- }
-
- @Override
- public void updateState(@NonNull Preference preference) {
- String packageName = getTerminalPackageName();
- if (packageName == null) {
- return;
- }
-
- boolean isTerminalEnabled = mPackageManager.getApplicationEnabledSetting(packageName)
- == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
- ((TwoStatePreference) mPreference).setChecked(isTerminalEnabled);
- }
-
- // Can be mocked for testing
- @VisibleForTesting
- @Nullable
- String getTerminalPackageName() {
- return mTerminalPackageName;
- }
-
- private static boolean isPackageInstalled(PackageManager manager, String packageName) {
- if (TextUtils.isEmpty(packageName)) {
- return false;
- }
- try {
- return manager.getPackageInfo(
- packageName,
- PackageManager.MATCH_ALL | PackageManager.MATCH_DISABLED_COMPONENTS) != null;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-}
diff --git a/src/com/android/settings/development/linuxterminal/EnableLinuxTerminalPreferenceController.java b/src/com/android/settings/development/linuxterminal/EnableLinuxTerminalPreferenceController.java
new file mode 100644
index 0000000..bc3b44b
--- /dev/null
+++ b/src/com/android/settings/development/linuxterminal/EnableLinuxTerminalPreferenceController.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2024 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.settings.development.linuxterminal;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.CompoundButton;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.widget.SettingsMainSwitchPreference;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+/** Preference controller for enable/disable toggle of the linux terminal */
+public class EnableLinuxTerminalPreferenceController extends BasePreferenceController
+ implements CompoundButton.OnCheckedChangeListener, PreferenceControllerMixin {
+ @VisibleForTesting
+ static final int TERMINAL_PACKAGE_NAME_RESID = R.string.config_linux_terminal_app_package_name;
+
+ private static final String TAG = "LinuxTerminalPrefCtrl";
+
+ private static final String ENABLE_TERMINAL_KEY = "enable_linux_terminal";
+
+ @NonNull private final PackageManager mPackageManager;
+ private final boolean mIsPrimaryUser;
+ @Nullable private final String mTerminalPackageName;
+
+ @Nullable private SettingsMainSwitchPreference mPreference;
+
+ public EnableLinuxTerminalPreferenceController(
+ @NonNull Context context, @NonNull Context userAwareContext, int userId) {
+ this(context, userAwareContext, userId == UserHandle.myUserId());
+ }
+
+ @VisibleForTesting
+ EnableLinuxTerminalPreferenceController(
+ @NonNull Context context, @NonNull Context userAwareContext, boolean isPrimaryUser) {
+ super(context, ENABLE_TERMINAL_KEY);
+
+ mPackageManager = userAwareContext.getPackageManager();
+ mIsPrimaryUser = isPrimaryUser;
+
+ String packageName =
+ userAwareContext.getString(R.string.config_linux_terminal_app_package_name);
+ mTerminalPackageName =
+ isPackageInstalled(mPackageManager, packageName) ? packageName : null;
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ mPreference = screen.findPreference(getPreferenceKey());
+ if (mPreference != null) {
+ mPreference.addOnSwitchChangeListener(this);
+ }
+ }
+
+ @Override
+ public void onCheckedChanged(@NonNull CompoundButton buttonView, boolean isChecked) {
+ if (mTerminalPackageName == null) {
+ return;
+ }
+
+ int state =
+ isChecked
+ ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+ : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
+ mPackageManager.setApplicationEnabledSetting(mTerminalPackageName, state, /* flags= */ 0);
+ if (!isChecked) {
+ mPackageManager.clearApplicationUserData(
+ mTerminalPackageName, /* observer= */ null);
+ }
+ }
+
+ @Override
+ @SuppressWarnings("NullAway") // setDisabledByAdmin(EnforcedAdmin) doesn't have @Nullable
+ public void updateState(@NonNull Preference preference) {
+ if (mPreference != preference) {
+ return;
+ }
+
+ boolean isInstalled = (mTerminalPackageName != null);
+ if (isInstalled) {
+ mPreference.setDisabledByAdmin(/* admin= */ null);
+ mPreference.setEnabled(/* enabled= */ true);
+ boolean terminalEnabled =
+ mPackageManager.getApplicationEnabledSetting(mTerminalPackageName)
+ == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+ mPreference.setChecked(terminalEnabled);
+ } else {
+ if (mIsPrimaryUser) {
+ Log.e(TAG, "Terminal app doesn't exist for primary user but UI was shown");
+ mPreference.setDisabledByAdmin(/* admin= */ null);
+ mPreference.setEnabled(/* enabled= */ false);
+ } else {
+ // If admin hasn't enabled the system app, mark it as disabled by admin.
+ mPreference.setDisabledByAdmin(new EnforcedAdmin());
+ // Make it enabled, so clicking it would show error dialog.
+ mPreference.setEnabled(/* enabled= */ true);
+ }
+ mPreference.setChecked(/* checked= */ false);
+ }
+ }
+
+ private static boolean isPackageInstalled(PackageManager manager, String packageName) {
+ if (TextUtils.isEmpty(packageName)) {
+ return false;
+ }
+ try {
+ return manager.getPackageInfo(
+ packageName,
+ PackageManager.MATCH_ALL | PackageManager.MATCH_DISABLED_COMPONENTS)
+ != null;
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ }
+}
diff --git a/src/com/android/settings/development/linuxterminal/LinuxTerminalDashboardFragment.java b/src/com/android/settings/development/linuxterminal/LinuxTerminalDashboardFragment.java
new file mode 100644
index 0000000..0eeeedd
--- /dev/null
+++ b/src/com/android/settings/development/linuxterminal/LinuxTerminalDashboardFragment.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2024 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.settings.development.linuxterminal;
+
+import static android.content.Intent.EXTRA_USER_ID;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.development.DevelopmentSettingsEnabler;
+import com.android.settingslib.search.SearchIndexable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Fragment shown for 'Linux terminal development' preference in developer option. */
+@SearchIndexable
+public class LinuxTerminalDashboardFragment extends DashboardFragment {
+ private static final String TAG = "LinuxTerminalFrag";
+
+ private Context mUserAwareContext;
+
+ private int mUserId;
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.LINUX_TERMINAL_DASHBOARD;
+ }
+
+ @NonNull
+ @Override
+ public String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ public int getPreferenceScreenResId() {
+ return R.xml.linux_terminal_settings;
+ }
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ // Initialize mUserId and mUserAwareContext before super.onAttach(),
+ // so createPreferenceControllers() can be called with proper values from super.onAttach().
+ int currentUserId = UserHandle.myUserId();
+ mUserId = getArguments().getInt(EXTRA_USER_ID, currentUserId);
+ mUserAwareContext =
+ (currentUserId == mUserId)
+ ? context
+ : context.createContextAsUser(UserHandle.of(mUserId), /* flags= */ 0);
+
+ // Note: This calls createPreferenceControllers() inside.
+ super.onAttach(context);
+ }
+
+ @Override
+ @NonNull
+ public List<AbstractPreferenceController> createPreferenceControllers(
+ @NonNull Context context) {
+ List<AbstractPreferenceController> list = new ArrayList<>();
+ list.add(new EnableLinuxTerminalPreferenceController(context, mUserAwareContext, mUserId));
+ return list;
+ }
+
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(R.xml.linux_terminal_settings) {
+
+ @Override
+ protected boolean isPageSearchEnabled(Context context) {
+ return DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context);
+ }
+ };
+}
diff --git a/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java b/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java
new file mode 100644
index 0000000..b3a0f80
--- /dev/null
+++ b/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2024 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.settings.development.linuxterminal;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.R;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+
+/** Preference controller for Linux terminal option in developers option */
+public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenceController
+ implements PreferenceControllerMixin {
+ @VisibleForTesting
+ static final int TERMINAL_PACKAGE_NAME_RESID = R.string.config_linux_terminal_app_package_name;
+
+ private static final String LINUX_TERMINAL_KEY = "linux_terminal";
+
+ @Nullable private final String mTerminalPackageName;
+
+ public LinuxTerminalPreferenceController(@NonNull Context context) {
+ super(context);
+ String packageName = context.getString(TERMINAL_PACKAGE_NAME_RESID);
+ mTerminalPackageName =
+ isPackageInstalled(context.getPackageManager(), packageName) ? packageName : null;
+ }
+
+ // Avoid lazy initialization because this may be called before displayPreference().
+ @Override
+ public boolean isAvailable() {
+ // Returns true only if the terminal app is installed which only happens when the build flag
+ // RELEASE_AVF_SUPPORT_CUSTOM_VM_WITH_PARAVIRTUALIZED_DEVICES is true.
+ // TODO(b/343795511): Add explicitly check for the flag when it's accessible from Java code.
+ return mTerminalPackageName != null;
+ }
+
+ @Override
+ @NonNull
+ public String getPreferenceKey() {
+ return LINUX_TERMINAL_KEY;
+ }
+
+ private static boolean isPackageInstalled(PackageManager manager, String packageName) {
+ if (TextUtils.isEmpty(packageName)) {
+ return false;
+ }
+ try {
+ return manager.getPackageInfo(
+ packageName,
+ PackageManager.MATCH_ALL | PackageManager.MATCH_DISABLED_COMPONENTS)
+ != null;
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ }
+}
diff --git a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java
index 50b6097..e209d85 100644
--- a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java
+++ b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java
@@ -25,6 +25,9 @@
import android.os.UserManager;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
@@ -211,6 +214,11 @@
controller.updateDeviceName(confirm);
}
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return MyDeviceInfoScreen.KEY;
+ }
+
/**
* For Search.
*/
diff --git a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt
new file mode 100644
index 0000000..254a91e
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2024 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.settings.deviceinfo.aboutphone
+
+import android.content.Context
+import android.os.Build
+import android.provider.Settings
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.PreferenceIconProvider
+import com.android.settingslib.metadata.PreferenceSummaryProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class MyDeviceInfoScreen :
+ PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.about_settings
+
+ override fun getSummary(context: Context): CharSequence? {
+ return Settings.Global.getString(context.contentResolver, Settings.Global.DEVICE_NAME)
+ ?: Build.MODEL
+ }
+
+ override fun getIcon(context: Context): Int {
+ return when (Flags.homepageRevamp()) {
+ true -> R.drawable.ic_settings_about_device_filled
+ false -> R.drawable.ic_settings_about_device
+ }
+ }
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystMyDeviceInfoPrefScreen()
+
+ override fun fragmentClass() = MyDeviceInfoFragment::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ override fun hasCompleteHierarchy() = false
+
+ companion object {
+ const val KEY = "my_device_info_pref_screen"
+ }
+}
diff --git a/src/com/android/settings/display/AdaptiveSleepPreference.kt b/src/com/android/settings/display/AdaptiveSleepPreference.kt
new file mode 100644
index 0000000..f31959b
--- /dev/null
+++ b/src/com/android/settings/display/AdaptiveSleepPreference.kt
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.hardware.SensorPrivacyManager
+import android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener
+import android.hardware.SensorPrivacyManager.Sensors.CAMERA
+import android.os.PowerManager
+import android.os.UserManager
+import android.provider.Settings
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settingslib.RestrictedSwitchPreference
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.KeyedObservableDelegate
+import com.android.settingslib.datastore.SettingsSecureStore
+import com.android.settingslib.datastore.SettingsStore
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.metadata.TwoStatePreference
+import com.android.settingslib.preference.PreferenceBindingPlaceholder
+import com.android.settingslib.preference.SwitchPreferenceBinding
+
+// LINT.IfChange
+class AdaptiveSleepPreference :
+ TwoStatePreference,
+ SwitchPreferenceBinding,
+ PreferenceLifecycleProvider,
+ PreferenceBindingPlaceholder, // not needed once controller class is cleaned up
+ PreferenceAvailabilityProvider,
+ PreferenceRestrictionMixin {
+
+ private var broadcastReceiver: BroadcastReceiver? = null
+ private var sensorPrivacyChangedListener: OnSensorPrivacyChangedListener? = null
+
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.adaptive_sleep_title
+
+ override val summary: Int
+ get() = R.string.adaptive_sleep_description
+
+ override fun isIndexable(context: Context) = false
+
+ override fun isEnabled(context: Context) =
+ super<PreferenceRestrictionMixin>.isEnabled(context) && context.canBeEnabled()
+
+ override val restrictionKeys: Array<String>
+ get() = arrayOf(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT)
+
+ override fun isAvailable(context: Context) = context.isAdaptiveSleepSupported()
+
+ override fun createWidget(context: Context) = RestrictedSwitchPreference(context)
+
+ override fun storage(context: Context): KeyValueStore = Storage(context)
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ @Suppress("UNCHECKED_CAST")
+ private class Storage(
+ private val context: Context,
+ private val settingsStore: SettingsStore = SettingsSecureStore.get(context),
+ ) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
+
+ override fun contains(key: String) = settingsStore.contains(key)
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ (context.canBeEnabled() && settingsStore.getBoolean(key) == true) as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
+ settingsStore.setBoolean(key, value as Boolean?)
+ }
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ val receiver =
+ object : BroadcastReceiver() {
+ override fun onReceive(receiverContext: Context, intent: Intent) {
+ context.notifyPreferenceChange(this@AdaptiveSleepPreference)
+ }
+ }
+ context.registerReceiver(
+ receiver,
+ IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED),
+ )
+ broadcastReceiver = receiver
+
+ val listener = OnSensorPrivacyChangedListener { _, _ ->
+ context.notifyPreferenceChange(this)
+ }
+ SensorPrivacyManager.getInstance(context).addSensorPrivacyListener(CAMERA, listener)
+ sensorPrivacyChangedListener = listener
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ broadcastReceiver?.let { context.unregisterReceiver(it) }
+ sensorPrivacyChangedListener?.let {
+ SensorPrivacyManager.getInstance(context).removeSensorPrivacyListener(it)
+ }
+ }
+
+ companion object {
+ const val KEY = Settings.Secure.ADAPTIVE_SLEEP
+
+ @Suppress("DEPRECATION")
+ private fun Context.canBeEnabled() =
+ AdaptiveSleepPreferenceController.hasSufficientPermission(packageManager) &&
+ getSystemService(PowerManager::class.java)?.isPowerSaveMode != true &&
+ !SensorPrivacyManager.getInstance(this).isSensorPrivacyEnabled(CAMERA)
+ }
+}
+// LINT.ThenChange(AdaptiveSleepPreferenceController.java)
diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
index 725b956..82a8709 100644
--- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
@@ -20,19 +20,16 @@
import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+import static com.android.settings.display.UtilsKt.isAdaptiveSleepSupported;
import android.Manifest;
import android.app.settings.SettingsEnums;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.hardware.SensorPrivacyManager;
import android.os.PowerManager;
import android.os.UserManager;
import android.provider.Settings;
-import android.service.attention.AttentionService;
-import android.text.TextUtils;
import androidx.preference.PreferenceScreen;
@@ -45,9 +42,10 @@
import com.google.common.annotations.VisibleForTesting;
+// LINT.IfChange
/** The controller for Screen attention switch preference. */
public class AdaptiveSleepPreferenceController {
- public static final String PREFERENCE_KEY = "adaptive_sleep";
+ public static final String PREFERENCE_KEY = Settings.Secure.ADAPTIVE_SLEEP;
private static final int DEFAULT_VALUE = 0;
private final SensorPrivacyManager mPrivacyManager;
private final RestrictionUtils mRestrictionUtils;
@@ -144,28 +142,10 @@
: UNSUPPORTED_ON_DEVICE;
}
- static boolean isAdaptiveSleepSupported(Context context) {
- return context.getResources().getBoolean(
- com.android.internal.R.bool.config_adaptive_sleep_available)
- && isAttentionServiceAvailable(context);
- }
-
- private static boolean isAttentionServiceAvailable(Context context) {
- final PackageManager packageManager = context.getPackageManager();
- final String resolvePackage = packageManager.getAttentionServicePackageName();
- if (TextUtils.isEmpty(resolvePackage)) {
- return false;
- }
- final Intent intent = new Intent(AttentionService.SERVICE_INTERFACE).setPackage(
- resolvePackage);
- final ResolveInfo resolveInfo = packageManager.resolveService(intent,
- PackageManager.MATCH_SYSTEM_ONLY);
- return resolveInfo != null && resolveInfo.serviceInfo != null;
- }
-
static boolean hasSufficientPermission(PackageManager packageManager) {
final String attentionPackage = packageManager.getAttentionServicePackageName();
return attentionPackage != null && packageManager.checkPermission(
Manifest.permission.CAMERA, attentionPackage) == PackageManager.PERMISSION_GRANTED;
}
}
+// LINT.ThenChange(AdaptiveSleepPreference.kt)
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index 0a80d69..5635a9b 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -32,6 +32,7 @@
/**
* The top-level preference controller that updates the adaptive brightness.
*/
+// LINT.IfChange
public class AutoBrightnessPreferenceController extends TogglePreferenceController {
private final String SYSTEM_KEY = SCREEN_BRIGHTNESS_MODE;
@@ -90,3 +91,4 @@
return R.string.menu_key_display;
}
}
+// LINT.ThenChange(AutoBrightnessScreen.kt)
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceControllerForSetupWizard.java b/src/com/android/settings/display/AutoBrightnessPreferenceControllerForSetupWizard.java
index 7cdf3e0..7afe3ea 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceControllerForSetupWizard.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceControllerForSetupWizard.java
@@ -41,4 +41,9 @@
}
return super.getAvailabilityStatus();
}
+
+ @Override
+ public CharSequence getSummary() {
+ return "";
+ }
}
diff --git a/src/com/android/settings/display/AutoBrightnessScreen.kt b/src/com/android/settings/display/AutoBrightnessScreen.kt
new file mode 100644
index 0000000..385fe20
--- /dev/null
+++ b/src/com/android/settings/display/AutoBrightnessScreen.kt
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.Context
+import android.os.UserManager
+import android.provider.Settings
+import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
+import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
+import androidx.preference.Preference
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.PrimarySwitchPreference
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.KeyedObservableDelegate
+import com.android.settingslib.datastore.SettingsStore
+import com.android.settingslib.datastore.SettingsSystemStore
+import com.android.settingslib.metadata.BooleanValue
+import com.android.settingslib.metadata.PersistentPreference
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenBinding
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class AutoBrightnessScreen :
+ PreferenceScreenCreator,
+ PreferenceScreenBinding,
+ PreferenceAvailabilityProvider,
+ PreferenceRestrictionMixin,
+ PersistentPreference<Boolean>,
+ BooleanValue {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.auto_brightness_title
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystScreenBrightnessMode()
+
+ override fun fragmentClass() = AutoBrightnessSettings::class.java
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ override fun storage(context: Context): KeyValueStore =
+ AutoBrightnessDataStore(SettingsSystemStore.get(context))
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun isAvailable(context: Context) =
+ context.resources.getBoolean(
+ com.android.internal.R.bool.config_automatic_brightness_available
+ )
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_CONFIG_BRIGHTNESS)
+
+ override val useAdminDisabledSummary: Boolean
+ get() = true
+
+ override fun createWidget(context: Context) = PrimarySwitchPreference(context)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ (preference as PrimarySwitchPreference).apply {
+ isSwitchEnabled = isEnabled
+ // "true" is not the real default value (it is provided by AutoBrightnessDataStore)
+ isChecked = preferenceDataStore!!.getBoolean(key, true)
+ }
+ }
+
+ /**
+ * The datastore for brightness, which is persisted as integer but the external type is boolean.
+ */
+ @Suppress("UNCHECKED_CAST")
+ private class AutoBrightnessDataStore(private val settingsStore: SettingsStore) :
+ KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
+
+ override fun contains(key: String) = settingsStore.contains(key)
+
+ override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
+ DEFAULT_VALUE.toBoolean() as T
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ (settingsStore.getInt(key) ?: DEFAULT_VALUE).toBoolean() as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
+ settingsStore.setInt(key, (value as? Boolean)?.toBrightnessMode())
+
+ /** Converts brightness mode integer to boolean. */
+ private fun Int.toBoolean() = this == SCREEN_BRIGHTNESS_MODE_AUTOMATIC
+
+ /** Converts boolean value to brightness mode integer. */
+ private fun Boolean.toBrightnessMode() =
+ if (this) SCREEN_BRIGHTNESS_MODE_AUTOMATIC else SCREEN_BRIGHTNESS_MODE_MANUAL
+ }
+
+ companion object {
+ const val KEY = Settings.System.SCREEN_BRIGHTNESS_MODE
+ private const val DEFAULT_VALUE = SCREEN_BRIGHTNESS_MODE_MANUAL
+ }
+}
diff --git a/src/com/android/settings/display/BatteryPercentagePreferenceController.java b/src/com/android/settings/display/BatteryPercentagePreferenceController.java
index a7113b3..b859c78 100644
--- a/src/com/android/settings/display/BatteryPercentagePreferenceController.java
+++ b/src/com/android/settings/display/BatteryPercentagePreferenceController.java
@@ -35,6 +35,7 @@
* A controller to manage the switch for showing battery percentage in the status bar.
*/
+// LINT.IfChange
public class BatteryPercentagePreferenceController extends BasePreferenceController implements
PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
@@ -69,7 +70,7 @@
int setting = Settings.System.getInt(mContext.getContentResolver(),
SHOW_BATTERY_PERCENT,
mContext.getResources().getBoolean(
- R.bool.config_defaultBatteryPercentageSetting) ? 1 : 0);
+ R.bool.config_defaultBatteryPercentageSetting) ? 1 : 0);
((TwoStatePreference) preference).setChecked(setting == 1);
}
@@ -84,3 +85,4 @@
return true;
}
}
+// LINT.ThenChange(BatteryPercentageSwitchPreference.kt)
diff --git a/src/com/android/settings/display/BatteryPercentageSwitchPreference.kt b/src/com/android/settings/display/BatteryPercentageSwitchPreference.kt
new file mode 100644
index 0000000..fd7b037
--- /dev/null
+++ b/src/com/android/settings/display/BatteryPercentageSwitchPreference.kt
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.app.settings.SettingsEnums
+import android.content.Context
+import android.provider.Settings
+import androidx.preference.Preference
+import com.android.settings.R
+import com.android.settings.Utils
+import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.KeyedObservableDelegate
+import com.android.settingslib.datastore.SettingsStore
+import com.android.settingslib.datastore.SettingsSystemStore
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.metadata.SwitchPreference
+import com.android.settingslib.preference.SwitchPreferenceBinding
+
+// LINT.IfChange
+class BatteryPercentageSwitchPreference :
+ SwitchPreference(KEY, R.string.battery_percentage, R.string.battery_percentage_description),
+ SwitchPreferenceBinding,
+ PreferenceAvailabilityProvider,
+ Preference.OnPreferenceChangeListener {
+
+ override fun storage(context: Context): KeyValueStore =
+ BatteryPercentageStorage(context, SettingsSystemStore.get(context))
+
+ override fun isAvailable(context: Context): Boolean =
+ Utils.isBatteryPresent(context) &&
+ context.resources.getBoolean(
+ com.android.internal.R.bool.config_battery_percentage_setting_available
+ )
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ preference.onPreferenceChangeListener = this
+ }
+
+ override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
+ val showPercentage = newValue as Boolean
+
+ featureFactory.metricsFeatureProvider.action(
+ preference.context,
+ SettingsEnums.OPEN_BATTERY_PERCENTAGE,
+ showPercentage,
+ )
+ return true
+ }
+
+ @Suppress("UNCHECKED_CAST")
+ private class BatteryPercentageStorage(
+ private val context: Context,
+ private val settingsStore: SettingsStore,
+ ) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
+
+ override fun contains(key: String) = settingsStore.contains(KEY)
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ (settingsStore.getBoolean(key) ?: getDefaultValue(key, valueType)) as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ settingsStore.setBoolean(key, value as Boolean)
+ }
+
+ override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
+ context.resources.getBoolean(
+ com.android.internal.R.bool.config_defaultBatteryPercentageSetting
+ ) as T
+ }
+
+ companion object {
+ const val KEY = Settings.System.SHOW_BATTERY_PERCENT
+ }
+}
+// LINT.ThenChange(BatteryPercentagePreferenceController.java)
diff --git a/src/com/android/settings/display/BrightnessLevelPreference.kt b/src/com/android/settings/display/BrightnessLevelPreference.kt
new file mode 100644
index 0000000..c053dfe
--- /dev/null
+++ b/src/com/android/settings/display/BrightnessLevelPreference.kt
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.app.ActivityOptions
+import android.content.Context
+import android.content.Intent
+import android.content.Intent.ACTION_SHOW_BRIGHTNESS_DIALOG
+import android.content.Intent.EXTRA_BRIGHTNESS_DIALOG_IS_FULL_WIDTH
+import android.hardware.display.BrightnessInfo
+import android.hardware.display.DisplayManager
+import android.hardware.display.DisplayManager.DisplayListener
+import android.os.UserManager
+import android.provider.Settings.System
+import androidx.preference.Preference
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settings.Utils
+import com.android.settings.core.SettingsBaseActivity
+import com.android.settingslib.RestrictedPreference
+import com.android.settingslib.datastore.HandlerExecutor
+import com.android.settingslib.datastore.KeyedObserver
+import com.android.settingslib.datastore.SettingsSystemStore
+import com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX
+import com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MIN
+import com.android.settingslib.display.BrightnessUtils.convertLinearToGammaFloat
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.PreferenceSummaryProvider
+import com.android.settingslib.preference.PreferenceBinding
+import com.android.settingslib.transition.SettingsTransitionHelper
+import java.text.NumberFormat
+
+// LINT.IfChange
+class BrightnessLevelPreference :
+ PreferenceMetadata,
+ PreferenceBinding,
+ PreferenceRestrictionMixin,
+ PreferenceSummaryProvider,
+ PreferenceLifecycleProvider,
+ Preference.OnPreferenceClickListener {
+
+ private var brightnessObserver: KeyedObserver<String>? = null
+ private var displayListener: DisplayListener? = null
+
+ override val key: String
+ get() = "brightness"
+
+ override val title: Int
+ get() = R.string.brightness
+
+ override val keywords: Int
+ get() = R.string.keywords_display_brightness_level
+
+ override fun getSummary(context: Context): CharSequence? =
+ NumberFormat.getPercentInstance().format(getCurrentBrightness(context))
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_CONFIG_BRIGHTNESS)
+
+ override val useAdminDisabledSummary: Boolean
+ get() = true
+
+ override fun createWidget(context: Context) = RestrictedPreference(context)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ preference.onPreferenceClickListener = this
+ }
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ val observer =
+ KeyedObserver<String> { _, _ ->
+ context.notifyPreferenceChange(this@BrightnessLevelPreference)
+ }
+ brightnessObserver = observer
+ SettingsSystemStore.get(context)
+ .addObserver(System.SCREEN_AUTO_BRIGHTNESS_ADJ, observer, HandlerExecutor.main)
+
+ val listener =
+ object : DisplayListener {
+ override fun onDisplayAdded(displayId: Int) {}
+
+ override fun onDisplayRemoved(displayId: Int) {}
+
+ override fun onDisplayChanged(displayId: Int) {
+ context.notifyPreferenceChange(this@BrightnessLevelPreference)
+ }
+ }
+ displayListener = listener
+ context.displayManager.registerDisplayListener(
+ listener,
+ HandlerExecutor.main,
+ /* eventFlags= */ 0,
+ DisplayManager.PRIVATE_EVENT_FLAG_DISPLAY_BRIGHTNESS,
+ )
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ brightnessObserver?.let {
+ SettingsSystemStore.get(context).removeObserver(System.SCREEN_AUTO_BRIGHTNESS_ADJ, it)
+ brightnessObserver = null
+ }
+
+ displayListener?.let {
+ context.displayManager.unregisterDisplayListener(it)
+ displayListener = null
+ }
+ }
+
+ private val Context.displayManager: DisplayManager
+ get() = getSystemService(DisplayManager::class.java)!!
+
+ override fun onPreferenceClick(preference: Preference): Boolean {
+ val context = preference.context
+ val intent =
+ Intent(ACTION_SHOW_BRIGHTNESS_DIALOG)
+ .setPackage(Utils.SYSTEMUI_PACKAGE_NAME)
+ .putExtra(
+ SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
+ SettingsTransitionHelper.TransitionType.TRANSITION_NONE,
+ )
+ .putExtra(EXTRA_BRIGHTNESS_DIALOG_IS_FULL_WIDTH, true)
+ val options =
+ ActivityOptions.makeCustomAnimation(
+ context,
+ android.R.anim.fade_in,
+ android.R.anim.fade_out,
+ )
+ context.startActivityForResult(preference.key, intent, 0, options.toBundle())
+ return true
+ }
+
+ private fun getCurrentBrightness(context: Context): Double {
+ val info: BrightnessInfo? = context.display.brightnessInfo
+ val value =
+ info?.run {
+ convertLinearToGammaFloat(brightness, brightnessMinimum, brightnessMaximum)
+ }
+ return getPercentage(value?.toDouble() ?: 0.0)
+ }
+
+ private fun getPercentage(value: Double): Double =
+ when {
+ value > GAMMA_SPACE_MAX -> 1.0
+ value < GAMMA_SPACE_MIN -> 0.0
+ else -> (value - GAMMA_SPACE_MIN) / (GAMMA_SPACE_MAX - GAMMA_SPACE_MIN)
+ }
+}
+// LINT.ThenChange(BrightnessLevelPreferenceController.java)
diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
index 96043db..2691146 100644
--- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java
+++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
@@ -57,6 +57,7 @@
/**
* The top-level preference controller that updates the adaptive brightness level.
*/
+// LINT.IfChange
public class BrightnessLevelPreferenceController extends BasePreferenceController implements
PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop {
private static final Uri BRIGHTNESS_ADJ_URI;
@@ -132,8 +133,8 @@
@Override
public void onStart() {
mContentResolver.registerContentObserver(BRIGHTNESS_ADJ_URI, false, mBrightnessObserver);
- mDisplayManager.registerDisplayListener(mDisplayListener, mHandler,
- DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS);
+ mDisplayManager.registerDisplayListener(mDisplayListener, mHandler, /* eventFlags= */ 0,
+ DisplayManager.PRIVATE_EVENT_FLAG_DISPLAY_BRIGHTNESS);
updatedSummary(mPreference);
}
@@ -187,3 +188,4 @@
return (value - min) / (max - min);
}
}
+// LINT.ThenChange(BrightnessLevelPreference.kt)
diff --git a/src/com/android/settings/display/DarkUIPreferenceController.java b/src/com/android/settings/display/DarkUIPreferenceController.java
index f1bbfcd..26b33da 100644
--- a/src/com/android/settings/display/DarkUIPreferenceController.java
+++ b/src/com/android/settings/display/DarkUIPreferenceController.java
@@ -34,6 +34,7 @@
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
+// LINT.IfChange
public class DarkUIPreferenceController extends TogglePreferenceController implements
LifecycleObserver, OnStart, OnStop {
@@ -123,3 +124,4 @@
return AVAILABLE;
}
}
+// LINT.ThenChange(darkmode/DarkModeScreen.kt)
diff --git a/src/com/android/settings/display/DisplayScreen.kt b/src/com/android/settings/display/DisplayScreen.kt
index 7b1d000..422ea67 100644
--- a/src/com/android/settings/display/DisplayScreen.kt
+++ b/src/com/android/settings/display/DisplayScreen.kt
@@ -18,15 +18,19 @@
import android.content.Context
import com.android.settings.DisplaySettings
import com.android.settings.R
+import com.android.settings.Settings.DisplaySettingsActivity
+import com.android.settings.display.darkmode.DarkModeScreen
import com.android.settings.flags.Flags
+import com.android.settings.utils.makeLaunchIntent
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceIconProvider
+import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen
-class DisplayScreen :
+open class DisplayScreen :
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
override val key: String
get() = KEY
@@ -46,7 +50,15 @@
override fun fragmentClass() = DisplaySettings::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ +BrightnessLevelPreference()
+ +AutoBrightnessScreen.KEY
+ +DarkModeScreen.KEY
+ +PeakRefreshRateSwitchPreference()
+ }
+
+ override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
+ makeLaunchIntent(context, DisplaySettingsActivity::class.java, metadata?.key)
override fun isAvailable(context: Context) =
context.resources.getBoolean(R.bool.config_show_top_level_display)
diff --git a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
index 261eaf1..740a726 100644
--- a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
@@ -40,6 +40,7 @@
import java.util.concurrent.Executor;
+// LINT.IfChange
public class PeakRefreshRatePreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnStart, OnStop {
@@ -196,3 +197,4 @@
return defaultPeakRefreshRate;
}
}
+// LINT.ThenChange(PeakRefreshRateSwitchPreference.kt)
diff --git a/src/com/android/settings/display/PeakRefreshRateSwitchPreference.kt b/src/com/android/settings/display/PeakRefreshRateSwitchPreference.kt
new file mode 100644
index 0000000..6615ee9
--- /dev/null
+++ b/src/com/android/settings/display/PeakRefreshRateSwitchPreference.kt
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.Context
+import android.hardware.display.DisplayManager
+import android.provider.DeviceConfig
+import android.provider.Settings.System.PEAK_REFRESH_RATE
+import com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE
+import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays
+import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay
+import com.android.server.display.feature.flags.Flags
+import com.android.settings.R
+import com.android.settingslib.datastore.HandlerExecutor
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.KeyedObservableDelegate
+import com.android.settingslib.datastore.SettingsStore
+import com.android.settingslib.datastore.SettingsSystemStore
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.PreferenceSummaryProvider
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.metadata.SwitchPreference
+import kotlin.math.roundToInt
+
+// LINT.IfChange
+class PeakRefreshRateSwitchPreference :
+ SwitchPreference(PEAK_REFRESH_RATE, R.string.peak_refresh_rate_title),
+ PreferenceAvailabilityProvider,
+ PreferenceSummaryProvider,
+ PreferenceLifecycleProvider {
+
+ private var propertiesChangedListener: DeviceConfig.OnPropertiesChangedListener? = null
+
+ override fun storage(context: Context): KeyValueStore =
+ PeakRefreshRateStore(context, SettingsSystemStore.get(context))
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun isAvailable(context: Context) =
+ context.resources.getBoolean(R.bool.config_show_smooth_display) &&
+ context.peakRefreshRate > DEFAULT_REFRESH_RATE
+
+ override fun getSummary(context: Context): CharSequence? =
+ context.getString(R.string.peak_refresh_rate_summary, context.peakRefreshRate.roundToInt())
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ val listener =
+ DeviceConfig.OnPropertiesChangedListener {
+ // Got notified if any property has been changed in NAMESPACE_DISPLAY_MANAGER. The
+ // KEY_PEAK_REFRESH_RATE_DEFAULT value could be added, changed, removed or
+ // unchanged.
+ // Just force a UI update for any case.
+ context.notifyPreferenceChange(this)
+ }
+
+ propertiesChangedListener = listener
+
+ DeviceConfig.addOnPropertiesChangedListener(
+ DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
+ HandlerExecutor.main,
+ listener,
+ )
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ propertiesChangedListener?.let {
+ DeviceConfig.removeOnPropertiesChangedListener(it)
+ propertiesChangedListener = null
+ }
+ }
+
+ @Suppress("UNCHECKED_CAST")
+ private class PeakRefreshRateStore(
+ private val context: Context,
+ private val settingsStore: SettingsStore,
+ ) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
+
+ override fun contains(key: String) = settingsStore.contains(key)
+
+ override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>): T? {
+ if (key != PEAK_REFRESH_RATE) return super.getDefaultValue(key, valueType)
+ return context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T
+ }
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>): T? {
+ if (key != PEAK_REFRESH_RATE) return null
+ val refreshRate =
+ settingsStore.getFloat(PEAK_REFRESH_RATE) ?: context.defaultPeakRefreshRate
+ return refreshRate.refreshRateAsBoolean(context) as T
+ }
+
+ private fun Float.refreshRateAsBoolean(context: Context) =
+ this.isInfinite() || roundToInt() == context.peakRefreshRate.roundToInt()
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
+ when {
+ key != PEAK_REFRESH_RATE -> {}
+ value == null -> settingsStore.setFloat(PEAK_REFRESH_RATE, null)
+ else -> {
+ val peakRefreshRate =
+ if (value as Boolean) context.refreshRateIfON() else DEFAULT_REFRESH_RATE
+ settingsStore.setFloat(PEAK_REFRESH_RATE, peakRefreshRate)
+ }
+ }
+
+ private fun Context.refreshRateIfON() =
+ when {
+ Flags.backUpSmoothDisplayAndForcePeakRefreshRate() -> Float.POSITIVE_INFINITY
+ else -> peakRefreshRate
+ }
+ }
+
+ companion object {
+ private const val INVALIDATE_REFRESH_RATE: Float = -1f
+
+ private val Context.peakRefreshRate: Float
+ get() =
+ Math.round(
+ when {
+ Flags.backUpSmoothDisplayAndForcePeakRefreshRate() ->
+ findHighestRefreshRateAmongAllDisplays(this)
+ else -> findHighestRefreshRateForDefaultDisplay(this)
+ }
+ )
+ .toFloat()
+
+ private val Context.defaultPeakRefreshRate: Float
+ get() {
+ val defaultPeakRefreshRate =
+ DeviceConfig.getFloat(
+ DeviceConfig.NAMESPACE_DISPLAY_MANAGER,
+ DisplayManager.DeviceConfig.KEY_PEAK_REFRESH_RATE_DEFAULT,
+ INVALIDATE_REFRESH_RATE,
+ )
+ if (defaultPeakRefreshRate != INVALIDATE_REFRESH_RATE) return defaultPeakRefreshRate
+ return resources
+ .getInteger(com.android.internal.R.integer.config_defaultPeakRefreshRate)
+ .toFloat()
+ }
+ }
+}
+// LINT.ThenChange(PeakRefreshRatePreferenceController.java)
diff --git a/src/com/android/settings/display/ScreenTimeoutScreen.kt b/src/com/android/settings/display/ScreenTimeoutScreen.kt
new file mode 100644
index 0000000..9dcd102
--- /dev/null
+++ b/src/com/android/settings/display/ScreenTimeoutScreen.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.Settings.ScreenTimeoutActivity
+import com.android.settings.flags.Flags
+import com.android.settings.utils.makeLaunchIntent
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+// TODO(b/368359967): The entry point logic is not yet migrated
+@ProvidePreferenceScreen
+class ScreenTimeoutScreen : PreferenceScreenCreator {
+
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.screen_timeout
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystScreenTimeout()
+
+ override fun fragmentClass() = ScreenTimeoutSettings::class.java
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun getPreferenceHierarchy(context: Context) =
+ preferenceHierarchy(this) { +AdaptiveSleepPreference() }
+
+ override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
+ makeLaunchIntent(context, ScreenTimeoutActivity::class.java, metadata?.key)
+
+ companion object {
+ const val KEY = "screen_timeout"
+ }
+}
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index 2d229a3..d4ca48e 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -20,6 +20,8 @@
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
+import static com.android.settings.display.UtilsKt.isAdaptiveSleepSupported;
+
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
@@ -34,7 +36,9 @@
import android.provider.Settings;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
@@ -80,7 +84,9 @@
@Override
public void onReceive(Context context, Intent intent) {
mAdaptiveSleepBatterySaverPreferenceController.updateVisibility();
- mAdaptiveSleepController.updatePreference();
+ if (!isCatalystEnabled()) {
+ mAdaptiveSleepController.updatePreference();
+ }
}
};
@@ -123,7 +129,6 @@
mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
mInitialEntries = getResources().getStringArray(R.array.screen_timeout_entries);
mInitialValues = getResources().getStringArray(R.array.screen_timeout_values);
- mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context);
mAdaptiveSleepPermissionController =
new AdaptiveSleepPermissionPreferenceController(context);
mAdaptiveSleepCameraStatePreferenceController =
@@ -136,8 +141,12 @@
mPrivacyPreference.setSelectable(false);
mPrivacyPreference.setLayoutResource(
com.android.settingslib.widget.preference.footer.R.layout.preference_footer);
- mPrivacyManager = SensorPrivacyManager.getInstance(context);
- mPrivacyChangedListener = (sensor, enabled) -> mAdaptiveSleepController.updatePreference();
+ if (!isCatalystEnabled()) {
+ mPrivacyManager = SensorPrivacyManager.getInstance(context);
+ mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context);
+ mPrivacyChangedListener =
+ (sensor, enabled) -> mAdaptiveSleepController.updatePreference();
+ }
mAdditionalTogglePreferenceController = FeatureFactory.getFeatureFactory()
.getDisplayFeatureProvider().createAdditionalPreference(context);
}
@@ -166,10 +175,12 @@
mAdaptiveSleepPermissionController.updateVisibility();
mAdaptiveSleepCameraStatePreferenceController.updateVisibility();
mAdaptiveSleepBatterySaverPreferenceController.updateVisibility();
- mAdaptiveSleepController.updatePreference();
mContext.registerReceiver(
mReceiver, new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
- mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
+ if (!isCatalystEnabled()) {
+ mAdaptiveSleepController.updatePreference();
+ mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
+ }
mIsUserAuthenticated = false;
FeatureFactory.getFeatureFactory().getDisplayFeatureProvider().updatePreference(
mAdditionalTogglePreferenceController);
@@ -179,13 +190,17 @@
public void onStop() {
super.onStop();
mContext.unregisterReceiver(mReceiver);
- mPrivacyManager.removeSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
+ if (!isCatalystEnabled()) {
+ mPrivacyManager.removeSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
+ }
}
@Override
public void updateCandidates() {
final String defaultKey = getDefaultKey();
final PreferenceScreen screen = getPreferenceScreen();
+ // Adaptive sleep preference is added to the screen when catalyst is enabled
+ Preference adaptiveSleepPreference = screen.findPreference(AdaptiveSleepPreference.KEY);
screen.removeAll();
final List<? extends CandidateInfo> candidateList = getCandidates();
@@ -222,10 +237,16 @@
FeatureFactory.getFeatureFactory().getDisplayFeatureProvider()
.addToScreen(mAdditionalTogglePreferenceController, screen);
- if (isScreenAttentionAvailable(getContext())) {
+ if (isAdaptiveSleepSupported(getContext())) {
mAdaptiveSleepPermissionController.addToScreen(screen);
mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen);
- mAdaptiveSleepController.addToScreen(screen);
+ if (adaptiveSleepPreference != null) {
+ // reset order for appending
+ adaptiveSleepPreference.setOrder(Preference.DEFAULT_ORDER);
+ screen.addPreference(adaptiveSleepPreference);
+ } else {
+ mAdaptiveSleepController.addToScreen(screen);
+ }
mAdaptiveSleepBatterySaverPreferenceController.addToScreen(screen);
screen.addPreference(mPrivacyPreference);
}
@@ -308,6 +329,11 @@
}
@Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return ScreenTimeoutScreen.KEY;
+ }
+
+ @Override
public int getHelpResource() {
return R.string.help_url_adaptive_sleep;
}
@@ -352,10 +378,6 @@
}
}
- private static boolean isScreenAttentionAvailable(Context context) {
- return AdaptiveSleepPreferenceController.isAdaptiveSleepSupported(context);
- }
-
private static long getTimeoutFromKey(String key) {
return Long.parseLong(key);
}
@@ -423,7 +445,7 @@
new BaseSearchIndexProvider(R.xml.screen_timeout_settings) {
public List<SearchIndexableRaw> getRawDataToIndex(
Context context, boolean enabled) {
- if (!isScreenAttentionAvailable(context)) {
+ if (!isAdaptiveSleepSupported(context)) {
return null;
}
final Resources res = context.getResources();
diff --git a/src/com/android/settings/display/Utils.kt b/src/com/android/settings/display/Utils.kt
new file mode 100644
index 0000000..7ee63cd
--- /dev/null
+++ b/src/com/android/settings/display/Utils.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.service.attention.AttentionService
+
+fun Context.isAdaptiveSleepSupported() =
+ resources.getBoolean(com.android.internal.R.bool.config_adaptive_sleep_available) &&
+ isAttentionServiceAvailable()
+
+private fun Context.isAttentionServiceAvailable(): Boolean {
+ val packageManager = getPackageManager()
+ val packageName = packageManager.attentionServicePackageName
+ if (packageName.isNullOrEmpty()) return false
+ val intent = Intent(AttentionService.SERVICE_INTERFACE).setPackage(packageName)
+ val resolveInfo = packageManager.resolveService(intent, PackageManager.MATCH_SYSTEM_ONLY)
+ return resolveInfo != null && resolveInfo.serviceInfo != null
+}
diff --git a/src/com/android/settings/display/darkmode/DarkModePreference.java b/src/com/android/settings/display/darkmode/DarkModePreference.java
index a1440ee..ff21131 100644
--- a/src/com/android/settings/display/darkmode/DarkModePreference.java
+++ b/src/com/android/settings/display/darkmode/DarkModePreference.java
@@ -14,7 +14,6 @@
package com.android.settings.display.darkmode;
-import android.app.UiModeManager;
import android.content.Context;
import android.content.res.Configuration;
import android.os.PowerManager;
@@ -28,39 +27,44 @@
*/
public class DarkModePreference extends PrimarySwitchPreference {
- private UiModeManager mUiModeManager;
private DarkModeObserver mDarkModeObserver;
- private PowerManager mPowerManager;
- private Runnable mCallback;
-
- private TimeFormatter mFormat;
+ private boolean isCatalystEnabled;
public DarkModePreference(Context context, AttributeSet attrs) {
super(context, attrs);
- mDarkModeObserver = new DarkModeObserver(context);
- mUiModeManager = context.getSystemService(UiModeManager.class);
- mPowerManager = context.getSystemService(PowerManager.class);
- mFormat = new TimeFormatter(context);
- mCallback = () -> {
- final boolean batterySaver = mPowerManager.isPowerSaveMode();
- final boolean active = (getContext().getResources().getConfiguration().uiMode
- & Configuration.UI_MODE_NIGHT_YES) != 0;
- setSwitchEnabled(!batterySaver);
- updateSummary(batterySaver, active);
- };
- mDarkModeObserver.subscribe(mCallback);
+ }
+
+ /**
+ * Sets if catalyst is enabled on the preference.
+ */
+ public void setCatalystEnabled(boolean catalystEnabled) {
+ isCatalystEnabled = catalystEnabled;
}
@Override
public void onAttached() {
super.onAttached();
- mDarkModeObserver.subscribe(mCallback);
+ if (!isCatalystEnabled) {
+ Context context = getContext();
+ mDarkModeObserver = new DarkModeObserver(context);
+ Runnable callback = () -> {
+ PowerManager powerManager = context.getSystemService(PowerManager.class);
+ final boolean batterySaver = powerManager.isPowerSaveMode();
+ final boolean active = (context.getResources().getConfiguration().uiMode
+ & Configuration.UI_MODE_NIGHT_YES) != 0;
+ setSwitchEnabled(!batterySaver);
+ updateSummary(batterySaver, active);
+ };
+ mDarkModeObserver.subscribe(callback);
+ }
}
@Override
public void onDetached() {
super.onDetached();
- mDarkModeObserver.unsubscribe();
+ if (!isCatalystEnabled) {
+ mDarkModeObserver.unsubscribe();
+ }
}
private void updateSummary(boolean batterySaver, boolean active) {
diff --git a/src/com/android/settings/display/darkmode/DarkModeScreen.kt b/src/com/android/settings/display/darkmode/DarkModeScreen.kt
new file mode 100644
index 0000000..1b951be
--- /dev/null
+++ b/src/com/android/settings/display/darkmode/DarkModeScreen.kt
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2024 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.settings.display.darkmode
+
+import android.app.UiModeManager
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.content.res.Configuration
+import android.os.PowerManager
+import androidx.preference.Preference
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.PrimarySwitchPreference
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.metadata.BooleanValue
+import com.android.settingslib.metadata.PersistentPreference
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.PreferenceSummaryProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenBinding
+import com.android.settingslib.preference.PreferenceScreenCreator
+import java.util.WeakHashMap
+
+// LINT.IfChange
+@ProvidePreferenceScreen
+class DarkModeScreen :
+ PreferenceScreenCreator,
+ PreferenceScreenBinding,
+ PersistentPreference<Boolean>,
+ BooleanValue,
+ PreferenceSummaryProvider,
+ PreferenceLifecycleProvider {
+
+ /**
+ * States for different screens.
+ *
+ * The "Dark mode" appears in several screens. And in Android split-screen mode, more than one
+ * "Dark mode" settings could be displayed at the same time. As [PreferenceScreenCreator] works
+ * like singleton, we need to register different broadcast receivers for different screens.
+ */
+ private val fragmentStates = WeakHashMap<PreferenceLifecycleContext, FragmentState>()
+
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.dark_ui_mode
+
+ override val keywords: Int
+ get() = R.string.keywords_dark_ui_mode
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystDarkUiMode()
+
+ override fun fragmentClass() = DarkModeSettingsFragment::class.java
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ override fun storage(context: Context): KeyValueStore = DarkModeStorage(context)
+
+ override fun createWidget(context: Context) = PrimarySwitchPreference(context)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ if (preference is DarkModePreference) preference.setCatalystEnabled(true)
+ val context = preference.context
+ val primarySwitchPreference = preference as PrimarySwitchPreference
+ primarySwitchPreference.isSwitchEnabled = !context.isPowerSaveMode()
+ primarySwitchPreference.isChecked = context.isDarkMode()
+ }
+
+ override fun isEnabled(context: Context) = !context.isPowerSaveMode()
+
+ override fun getSummary(context: Context): CharSequence? {
+ val active = context.isDarkMode()
+ return when {
+ !context.isPowerSaveMode() -> AutoDarkTheme.getStatus(context, active)
+ active -> context.getString(R.string.dark_ui_mode_disabled_summary_dark_theme_on)
+ else -> context.getString(R.string.dark_ui_mode_disabled_summary_dark_theme_off)
+ }
+ }
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ val broadcastReceiver =
+ object : BroadcastReceiver() {
+ override fun onReceive(receiverContext: Context, intent: Intent) {
+ context.notifyPreferenceChange(this@DarkModeScreen)
+ }
+ }
+ context.registerReceiver(
+ broadcastReceiver,
+ IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED),
+ )
+
+ val darkModeObserver = DarkModeObserver(context)
+ darkModeObserver.subscribe { context.notifyPreferenceChange(this@DarkModeScreen) }
+
+ fragmentStates[context] = FragmentState(broadcastReceiver, darkModeObserver)
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ fragmentStates.remove(context)?.run {
+ context.unregisterReceiver(broadcastReceiver)
+ darkModeObserver.unsubscribe()
+ }
+ }
+
+ private class FragmentState(
+ val broadcastReceiver: BroadcastReceiver,
+ val darkModeObserver: DarkModeObserver,
+ )
+
+ /**
+ * Abstract storage for dark mode settings.
+ *
+ * The underlying storage is manipulated by [UiModeManager] but we do not need to worry about
+ * the details. Additionally, the observer is for UI purpose only right now, so use
+ * [NoOpKeyedObservable].
+ */
+ @Suppress("UNCHECKED_CAST")
+ private class DarkModeStorage(private val context: Context) :
+ NoOpKeyedObservable<String>(), KeyValueStore {
+
+ override fun contains(key: String) = key == KEY
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ when {
+ key == KEY && valueType == Boolean::class.javaObjectType ->
+ context.isDarkMode() as T
+ else -> null
+ }
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ if (key == KEY && value is Boolean) {
+ context.getSystemService(UiModeManager::class.java)?.setNightModeActivated(value)
+ }
+ }
+ }
+
+ companion object {
+ const val KEY = "dark_ui_mode"
+
+ private fun Context.isPowerSaveMode() =
+ getSystemService(PowerManager::class.java)?.isPowerSaveMode == true
+
+ private fun Context.isDarkMode() =
+ (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_YES) != 0
+ }
+}
+// LINT.ThenChange(../DarkUIPreferenceController.java)
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index e922f70..28d7d58 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -26,13 +26,10 @@
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.UserHandle;
-import android.text.TextUtils;
import android.util.Log;
import android.view.View;
-import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
@@ -48,7 +45,6 @@
import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.EntityHeaderController;
-import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -67,9 +63,7 @@
* 2. Battery related controls for app(i.e uninstall, force stop)
*/
public class AdvancedPowerUsageDetail extends DashboardFragment
- implements ButtonActionDialogFragment.AppButtonsDialogListener,
- Preference.OnPreferenceClickListener,
- Preference.OnPreferenceChangeListener {
+ implements ButtonActionDialogFragment.AppButtonsDialogListener {
public static final String TAG = "AdvancedPowerDetail";
public static final String EXTRA_UID = "extra_uid";
public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
@@ -86,7 +80,8 @@
public static final String EXTRA_POWER_USAGE_AMOUNT = "extra_power_usage_amount";
private static final String KEY_PREF_HEADER = "header_view";
- private static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
+ private static final String KEY_BACKGROUND_USAGE_ALLOWABILITY_CATEGORY =
+ "background_usage_allowability_category";
private static final int REQUEST_UNINSTALL = 0;
private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
@@ -96,11 +91,9 @@
private AppButtonsPreferenceController mAppButtonsPreferenceController;
private PowerUsageTimeController mPowerUsageTimeController;
- @VisibleForTesting LayoutPreference mHeaderPreference;
@VisibleForTesting ApplicationsState mState;
@VisibleForTesting ApplicationsState.AppEntry mAppEntry;
@VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
- @VisibleForTesting PrimarySwitchPreference mAllowBackgroundUsagePreference;
@VisibleForTesting @BatteryOptimizeUtils.OptimizationMode
int mOptimizationMode = BatteryOptimizeUtils.MODE_UNKNOWN;
@@ -242,17 +235,11 @@
public void onAttach(Activity activity) {
super.onAttach(activity);
+ final Bundle bundle = getArguments();
+ final int uid = bundle.getInt(EXTRA_UID, 0);
+ final String packageName = bundle.getString(EXTRA_PACKAGE_NAME);
+ mBatteryOptimizeUtils = new BatteryOptimizeUtils(getContext(), uid, packageName);
mState = ApplicationsState.getInstance(getActivity().getApplication());
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- final String packageName = getArguments().getString(EXTRA_PACKAGE_NAME);
- onCreateBackgroundUsageState(packageName);
- mHeaderPreference = findPreference(KEY_PREF_HEADER);
-
if (packageName != null) {
mAppEntry = mState.getEntry(packageName, UserHandle.myUserId());
}
@@ -264,7 +251,6 @@
initHeader();
mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
- initFooter();
mLogStringBuilder = new StringBuilder("onResume mode = ").append(mOptimizationMode);
}
@@ -299,7 +285,8 @@
@VisibleForTesting
void initHeader() {
- final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
+ final LayoutPreference headerPreference = findPreference(KEY_PREF_HEADER);
+ final View appSnippet = headerPreference.findViewById(R.id.entity_header);
final Activity context = getActivity();
final Bundle bundle = getArguments();
EntityHeaderController controller =
@@ -340,31 +327,6 @@
controller.done(true /* rebindActions */);
}
- @VisibleForTesting
- void initFooter() {
- final String stateString;
- final String detailInfoString;
- final Context context = getContext();
-
- if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
- // Present optimized only string when the package name is invalid.
- stateString = context.getString(R.string.manager_battery_usage_optimized_only);
- detailInfoString =
- context.getString(R.string.manager_battery_usage_footer_limited, stateString);
- } else if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
- // Present unrestricted only string when the package is system or default active app.
- stateString = context.getString(R.string.manager_battery_usage_unrestricted_only);
- detailInfoString =
- context.getString(R.string.manager_battery_usage_footer_limited, stateString);
- } else {
- // Present default string to normal app.
- detailInfoString =
- context.getString(
- R.string.manager_battery_usage_allow_background_usage_summary);
- }
- mAllowBackgroundUsagePreference.setSummary(detailInfoString);
- }
-
@Override
public int getMetricsCategory() {
return SettingsEnums.FUELGAUGE_POWER_USAGE_DETAIL;
@@ -384,7 +346,6 @@
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
final Bundle bundle = getArguments();
- final int uid = bundle.getInt(EXTRA_UID, 0);
final String packageName = bundle.getString(EXTRA_PACKAGE_NAME);
mAppButtonsPreferenceController =
@@ -401,7 +362,12 @@
controllers.add(mPowerUsageTimeController);
}
controllers.add(mAppButtonsPreferenceController);
- controllers.add(new AllowBackgroundPreferenceController(context, uid, packageName));
+ controllers.add(
+ new BackgroundUsageAllowabilityPreferenceController(
+ context,
+ /* dashboardFragment= */ this,
+ KEY_BACKGROUND_USAGE_ALLOWABILITY_CATEGORY,
+ mBatteryOptimizeUtils));
return controllers;
}
@@ -421,34 +387,6 @@
}
}
- @Override
- public boolean onPreferenceClick(Preference preference) {
- if (!(preference instanceof PrimarySwitchPreference)
- || !TextUtils.equals(preference.getKey(), KEY_ALLOW_BACKGROUND_USAGE)) {
- return false;
- }
- PowerBackgroundUsageDetail.startPowerBackgroundUsageDetailPage(
- getContext(), getArguments());
- return true;
- }
-
- @Override
- public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
- if (!(preference instanceof PrimarySwitchPreference)
- || !TextUtils.equals(preference.getKey(), KEY_ALLOW_BACKGROUND_USAGE)) {
- return false;
- }
- if (newValue instanceof Boolean) {
- final boolean isAllowBackgroundUsage = (boolean) newValue;
- mBatteryOptimizeUtils.setAppUsageState(
- isAllowBackgroundUsage
- ? BatteryOptimizeUtils.MODE_OPTIMIZED
- : BatteryOptimizeUtils.MODE_RESTRICTED,
- Action.APPLY);
- }
- return true;
- }
-
private void logMetricCategory(int currentOptimizeMode) {
if (currentOptimizeMode == mOptimizationMode) {
return;
@@ -482,16 +420,4 @@
getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
});
}
-
- private void onCreateBackgroundUsageState(String packageName) {
- mAllowBackgroundUsagePreference = findPreference(KEY_ALLOW_BACKGROUND_USAGE);
- if (mAllowBackgroundUsagePreference != null) {
- mAllowBackgroundUsagePreference.setOnPreferenceClickListener(this);
- mAllowBackgroundUsagePreference.setOnPreferenceChangeListener(this);
- }
-
- mBatteryOptimizeUtils =
- new BatteryOptimizeUtils(
- getContext(), getArguments().getInt(EXTRA_UID), packageName);
- }
}
diff --git a/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java b/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java
deleted file mode 100644
index 52cec795..0000000
--- a/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2023 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.settings.fuelgauge;
-
-import android.content.Context;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.PrimarySwitchPreference;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.MainSwitchPreference;
-
-/** Controller to update the app background usage state */
-public class AllowBackgroundPreferenceController extends AbstractPreferenceController
- implements PreferenceControllerMixin {
-
- private static final String TAG = "AllowBackgroundPreferenceController";
-
- @VisibleForTesting static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
-
- @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
-
- public AllowBackgroundPreferenceController(Context context, int uid, String packageName) {
- super(context);
- mBatteryOptimizeUtils = new BatteryOptimizeUtils(context, uid, packageName);
- }
-
- private void setChecked(Preference preference, boolean checked) {
- if (preference instanceof PrimarySwitchPreference) {
- ((PrimarySwitchPreference) preference).setChecked(checked);
- } else if (preference instanceof MainSwitchPreference) {
- ((MainSwitchPreference) preference).setChecked(checked);
- }
- }
-
- private void setEnabled(Preference preference, boolean enabled) {
- if (preference instanceof PrimarySwitchPreference) {
- ((PrimarySwitchPreference) preference).setEnabled(enabled);
- ((PrimarySwitchPreference) preference).setSwitchEnabled(enabled);
- } else if (preference instanceof MainSwitchPreference) {
- ((MainSwitchPreference) preference).setEnabled(enabled);
- }
- }
-
- @Override
- public void updateState(Preference preference) {
- setEnabled(preference, mBatteryOptimizeUtils.isOptimizeModeMutable());
-
- final boolean isAllowBackground =
- mBatteryOptimizeUtils.getAppOptimizationMode()
- != BatteryOptimizeUtils.MODE_RESTRICTED;
- setChecked(preference, isAllowBackground);
- }
-
- @Override
- public boolean isAvailable() {
- return true;
- }
-
- @Override
- public String getPreferenceKey() {
- return KEY_ALLOW_BACKGROUND_USAGE;
- }
-
- @Override
- public boolean handlePreferenceTreeClick(Preference preference) {
- return getPreferenceKey().equals(preference.getKey());
- }
-}
diff --git a/src/com/android/settings/fuelgauge/BackgroundUsageAllowabilityPreferenceController.java b/src/com/android/settings/fuelgauge/BackgroundUsageAllowabilityPreferenceController.java
new file mode 100644
index 0000000..bce439b
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BackgroundUsageAllowabilityPreferenceController.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2024 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.settings.fuelgauge;
+
+import android.content.Context;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.PrimarySwitchPreference;
+
+/** Controller to update the manage battery usage preference in App Battery Usage page */
+public class BackgroundUsageAllowabilityPreferenceController extends BasePreferenceController
+ implements PreferenceControllerMixin {
+
+ @VisibleForTesting
+ static final String KEY_BACKGROUND_USAGE_ALLOWABILITY_SWITCH =
+ "background_usage_allowability_switch";
+
+ private final BatteryOptimizeUtils mBatteryOptimizeUtils;
+ private final DashboardFragment mDashboardFragment;
+ @Nullable @VisibleForTesting PrimarySwitchPreference mBackgroundUsageAllowabilityPreference;
+
+ public BackgroundUsageAllowabilityPreferenceController(
+ @NonNull Context context,
+ @NonNull DashboardFragment dashboardFragment,
+ @NonNull String preferenceKey,
+ @NonNull BatteryOptimizeUtils batteryOptimizeUtils) {
+ super(context, preferenceKey);
+ mDashboardFragment = dashboardFragment;
+ mBatteryOptimizeUtils = batteryOptimizeUtils;
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public void updateState(@NonNull Preference preference) {
+ updatePreferences(mBatteryOptimizeUtils.getAppOptimizationMode());
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ mBackgroundUsageAllowabilityPreference =
+ screen.findPreference(KEY_BACKGROUND_USAGE_ALLOWABILITY_SWITCH);
+ initPreferences();
+ }
+
+ @VisibleForTesting
+ void initPreferences() {
+ if (mBackgroundUsageAllowabilityPreference == null) {
+ return;
+ }
+ final String stateString;
+ final String detailInfoString;
+ boolean isPreferenceEnabled = true;
+ if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
+ // Present "Optimized" only string if the package name is invalid.
+ stateString = mContext.getString(R.string.manager_battery_usage_optimized_only);
+ detailInfoString =
+ mContext.getString(R.string.manager_battery_usage_footer_limited, stateString);
+ isPreferenceEnabled = false;
+ } else if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
+ // Present "Unrestricted" only string if the package is system important apps.
+ stateString = mContext.getString(R.string.manager_battery_usage_unrestricted_only);
+ detailInfoString =
+ mContext.getString(R.string.manager_battery_usage_footer_limited, stateString);
+ isPreferenceEnabled = false;
+ } else {
+ // Present default string to normal app.
+ detailInfoString =
+ mContext.getString(
+ R.string.manager_battery_usage_allow_background_usage_summary);
+ }
+ mBackgroundUsageAllowabilityPreference.setEnabled(isPreferenceEnabled);
+ mBackgroundUsageAllowabilityPreference.setSwitchEnabled(isPreferenceEnabled);
+ mBackgroundUsageAllowabilityPreference.setSummary(detailInfoString);
+ if (isPreferenceEnabled) {
+ mBackgroundUsageAllowabilityPreference.setOnPreferenceClickListener(
+ preference -> {
+ PowerBackgroundUsageDetail.startPowerBackgroundUsageDetailPage(
+ mContext, mDashboardFragment.getArguments());
+ return true;
+ });
+ mBackgroundUsageAllowabilityPreference.setOnPreferenceChangeListener(
+ (preference, isAllowBackground) -> {
+ handleBatteryOptimizeModeUpdated(
+ (boolean) isAllowBackground
+ ? BatteryOptimizeUtils.MODE_OPTIMIZED
+ : BatteryOptimizeUtils.MODE_RESTRICTED);
+ return true;
+ });
+ }
+ }
+
+ @VisibleForTesting
+ void handleBatteryOptimizeModeUpdated(int newBatteryOptimizeMode) {
+ if (mBatteryOptimizeUtils.getAppOptimizationMode() == newBatteryOptimizeMode) {
+ Log.w(TAG, "ignore same mode for: " + mBatteryOptimizeUtils.getPackageName());
+ return;
+ }
+ mBatteryOptimizeUtils.setAppUsageState(
+ newBatteryOptimizeMode, BatteryOptimizeHistoricalLogEntry.Action.APPLY);
+ updatePreferences(newBatteryOptimizeMode);
+ }
+
+ @VisibleForTesting
+ void updatePreferences(int optimizationMode) {
+ if (mBackgroundUsageAllowabilityPreference == null) {
+ return;
+ }
+ mBackgroundUsageAllowabilityPreference.setChecked(
+ optimizationMode != BatteryOptimizeUtils.MODE_RESTRICTED);
+ }
+}
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizationModePreferenceController.java b/src/com/android/settings/fuelgauge/BatteryOptimizationModePreferenceController.java
new file mode 100644
index 0000000..0a4cbac
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizationModePreferenceController.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2024 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.settings.fuelgauge;
+
+import android.content.Context;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+/** Controller to update the app background usage mode state in Allow background usage page */
+public class BatteryOptimizationModePreferenceController extends BasePreferenceController
+ implements PreferenceControllerMixin {
+
+ @VisibleForTesting
+ static final String KEY_BACKGROUND_USAGE_ALLOWABILITY_SWITCH =
+ "background_usage_allowability_switch";
+
+ @VisibleForTesting static final String KEY_OPTIMIZED_PREF = "optimized_preference";
+ @VisibleForTesting static final String KEY_UNRESTRICTED_PREF = "unrestricted_preference";
+
+ private final BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @Nullable @VisibleForTesting MainSwitchPreference mBackgroundUsageAllowabilityPreference;
+ @Nullable @VisibleForTesting SelectorWithWidgetPreference mOptimizedPreference;
+ @Nullable @VisibleForTesting SelectorWithWidgetPreference mUnrestrictedPreference;
+
+ public BatteryOptimizationModePreferenceController(
+ @NonNull Context context,
+ @NonNull String preferenceKey,
+ @NonNull BatteryOptimizeUtils batteryOptimizeUtils) {
+ super(context, preferenceKey);
+ mBatteryOptimizeUtils = batteryOptimizeUtils;
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public void updateState(@NonNull Preference preference) {
+ updatePreferences(mBatteryOptimizeUtils.getAppOptimizationMode());
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ mBackgroundUsageAllowabilityPreference =
+ screen.findPreference(KEY_BACKGROUND_USAGE_ALLOWABILITY_SWITCH);
+ mOptimizedPreference = screen.findPreference(KEY_OPTIMIZED_PREF);
+ mUnrestrictedPreference = screen.findPreference(KEY_UNRESTRICTED_PREF);
+ initPreferences();
+ }
+
+ @VisibleForTesting
+ void initPreferences() {
+ if (mBackgroundUsageAllowabilityPreference == null
+ || mOptimizedPreference == null
+ || mUnrestrictedPreference == null) {
+ return;
+ }
+ final boolean isEnabled = mBatteryOptimizeUtils.isOptimizeModeMutable();
+ mBackgroundUsageAllowabilityPreference.setEnabled(isEnabled);
+ mOptimizedPreference.setEnabled(isEnabled);
+ mUnrestrictedPreference.setEnabled(isEnabled);
+ if (isEnabled) {
+ mBackgroundUsageAllowabilityPreference.setOnPreferenceChangeListener(
+ (preference, isAllowBackground) -> {
+ handleBatteryOptimizeModeUpdated(
+ (boolean) isAllowBackground
+ ? BatteryOptimizeUtils.MODE_OPTIMIZED
+ : BatteryOptimizeUtils.MODE_RESTRICTED);
+ return true;
+ });
+ mOptimizedPreference.setOnPreferenceClickListener(
+ preference -> {
+ handleBatteryOptimizeModeUpdated(BatteryOptimizeUtils.MODE_OPTIMIZED);
+ return true;
+ });
+ mUnrestrictedPreference.setOnPreferenceClickListener(
+ preference -> {
+ handleBatteryOptimizeModeUpdated(BatteryOptimizeUtils.MODE_UNRESTRICTED);
+ return true;
+ });
+ }
+ }
+
+ @VisibleForTesting
+ void updatePreferences(int optimizationMode) {
+ if (mBackgroundUsageAllowabilityPreference == null
+ || mOptimizedPreference == null
+ || mUnrestrictedPreference == null) {
+ return;
+ }
+ final boolean isAllowBackground = optimizationMode != BatteryOptimizeUtils.MODE_RESTRICTED;
+ mBackgroundUsageAllowabilityPreference.setChecked(isAllowBackground);
+ mOptimizedPreference.setEnabled(isAllowBackground);
+ mUnrestrictedPreference.setEnabled(isAllowBackground);
+ mOptimizedPreference.setChecked(optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED);
+ mUnrestrictedPreference.setChecked(
+ optimizationMode == BatteryOptimizeUtils.MODE_UNRESTRICTED);
+ }
+
+ @VisibleForTesting
+ void handleBatteryOptimizeModeUpdated(int newBatteryOptimizeMode) {
+ if (mBatteryOptimizeUtils.getAppOptimizationMode() == newBatteryOptimizeMode) {
+ Log.w(TAG, "ignore same mode for: " + mBatteryOptimizeUtils.getPackageName());
+ return;
+ }
+ mBatteryOptimizeUtils.setAppUsageState(
+ newBatteryOptimizeMode, BatteryOptimizeHistoricalLogEntry.Action.APPLY);
+ updatePreferences(newBatteryOptimizeMode);
+ }
+}
diff --git a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
deleted file mode 100644
index a26ab7a..0000000
--- a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2021 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.settings.fuelgauge;
-
-import android.content.Context;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
-
-public class OptimizedPreferenceController extends AbstractPreferenceController
- implements PreferenceControllerMixin {
-
- private static final String TAG = "OPTIMIZED_PREF";
-
- @VisibleForTesting static final String KEY_OPTIMIZED_PREF = "optimized_preference";
- @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
-
- public OptimizedPreferenceController(Context context, int uid, String packageName) {
- super(context);
- mBatteryOptimizeUtils = new BatteryOptimizeUtils(context, uid, packageName);
- }
-
- @Override
- public boolean isAvailable() {
- return true;
- }
-
- @Override
- public void updateState(Preference preference) {
- preference.setEnabled(mBatteryOptimizeUtils.isSelectorPreferenceEnabled());
-
- final boolean isOptimized =
- mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()
- || mBatteryOptimizeUtils.getAppOptimizationMode()
- == BatteryOptimizeUtils.MODE_OPTIMIZED;
- ((SelectorWithWidgetPreference) preference).setChecked(isOptimized);
- }
-
- @Override
- public String getPreferenceKey() {
- return KEY_OPTIMIZED_PREF;
- }
-
- @Override
- public boolean handlePreferenceTreeClick(Preference preference) {
- return getPreferenceKey().equals(preference.getKey());
- }
-}
diff --git a/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java b/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java
index e59cc4ad..dadf2e8 100644
--- a/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java
@@ -24,11 +24,8 @@
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
-import android.text.TextUtils;
import android.util.Log;
import android.view.View;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
import androidx.annotation.VisibleForTesting;
@@ -44,8 +41,6 @@
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.widget.MainSwitchPreference;
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
import java.util.ArrayList;
import java.util.List;
@@ -53,8 +48,7 @@
import java.util.concurrent.Executors;
/** Allow background usage fragment for each app */
-public class PowerBackgroundUsageDetail extends DashboardFragment
- implements SelectorWithWidgetPreference.OnClickListener, OnCheckedChangeListener {
+public class PowerBackgroundUsageDetail extends DashboardFragment {
private static final String TAG = "PowerBackgroundUsageDetail";
public static final String EXTRA_UID = "extra_uid";
@@ -63,21 +57,15 @@
public static final String EXTRA_POWER_USAGE_AMOUNT = "extra_power_usage_amount";
public static final String EXTRA_ICON_ID = "extra_icon_id";
private static final String KEY_PREF_HEADER = "header_view";
- private static final String KEY_PREF_UNRESTRICTED = "unrestricted_preference";
- private static final String KEY_PREF_OPTIMIZED = "optimized_preference";
- private static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
private static final String KEY_FOOTER_PREFERENCE = "app_usage_footer_preference";
+ private static final String KEY_BATTERY_OPTIMIZATION_MODE_CATEGORY =
+ "battery_optimization_mode_category";
private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
- @VisibleForTesting LayoutPreference mHeaderPreference;
@VisibleForTesting ApplicationsState mState;
@VisibleForTesting ApplicationsState.AppEntry mAppEntry;
@VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
- @VisibleForTesting SelectorWithWidgetPreference mOptimizePreference;
- @VisibleForTesting SelectorWithWidgetPreference mUnrestrictedPreference;
- @VisibleForTesting MainSwitchPreference mMainSwitchPreference;
- @VisibleForTesting FooterPreference mFooterPreference;
@VisibleForTesting StringBuilder mLogStringBuilder;
@VisibleForTesting @BatteryOptimizeUtils.OptimizationMode
@@ -87,17 +75,11 @@
public void onAttach(Activity activity) {
super.onAttach(activity);
+ final Bundle bundle = getArguments();
+ final int uid = bundle.getInt(EXTRA_UID, 0);
+ final String packageName = bundle.getString(EXTRA_PACKAGE_NAME);
+ mBatteryOptimizeUtils = new BatteryOptimizeUtils(getContext(), uid, packageName);
mState = ApplicationsState.getInstance(getActivity().getApplication());
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- final String packageName = getArguments().getString(EXTRA_PACKAGE_NAME);
- onCreateBackgroundUsageState(packageName);
- mHeaderPreference = findPreference(KEY_PREF_HEADER);
-
if (packageName != null) {
mAppEntry = mState.getEntry(packageName, UserHandle.myUserId());
}
@@ -107,8 +89,8 @@
public void onResume() {
super.onResume();
initHeader();
- mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
initFooter();
+ mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
mLogStringBuilder = new StringBuilder("onResume mode = ").append(mOptimizationMode);
}
@@ -137,34 +119,16 @@
}
@Override
- public void onRadioButtonClicked(SelectorWithWidgetPreference selected) {
- final String selectedKey = selected == null ? null : selected.getKey();
- updateSelectorPreferenceState(mUnrestrictedPreference, selectedKey);
- updateSelectorPreferenceState(mOptimizePreference, selectedKey);
- mBatteryOptimizeUtils.setAppUsageState(getSelectedPreference(), Action.APPLY);
- }
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mMainSwitchPreference.setChecked(isChecked);
- updateSelectorPreference(isChecked);
- }
-
- @Override
public int getMetricsCategory() {
return SettingsEnums.FUELGAUGE_POWER_USAGE_MANAGE_BACKGROUND;
}
@Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
- final List<AbstractPreferenceController> controllers = new ArrayList<>();
- final Bundle bundle = getArguments();
- final int uid = bundle.getInt(EXTRA_UID, 0);
- final String packageName = bundle.getString(EXTRA_PACKAGE_NAME);
-
- controllers.add(new AllowBackgroundPreferenceController(context, uid, packageName));
- controllers.add(new OptimizedPreferenceController(context, uid, packageName));
- controllers.add(new UnrestrictedPreferenceController(context, uid, packageName));
+ final List<AbstractPreferenceController> controllers = new ArrayList<>(1);
+ controllers.add(
+ new BatteryOptimizationModePreferenceController(
+ context, KEY_BATTERY_OPTIMIZATION_MODE_CATEGORY, mBatteryOptimizeUtils));
return controllers;
}
@@ -179,26 +143,6 @@
return TAG;
}
- @VisibleForTesting
- void updateSelectorPreference(boolean isEnabled) {
- mOptimizePreference.setEnabled(isEnabled);
- mUnrestrictedPreference.setEnabled(isEnabled);
- onRadioButtonClicked(isEnabled ? mOptimizePreference : null);
- }
-
- @VisibleForTesting
- int getSelectedPreference() {
- if (!mMainSwitchPreference.isChecked()) {
- return BatteryOptimizeUtils.MODE_RESTRICTED;
- } else if (mUnrestrictedPreference.isChecked()) {
- return BatteryOptimizeUtils.MODE_UNRESTRICTED;
- } else if (mOptimizePreference.isChecked()) {
- return BatteryOptimizeUtils.MODE_OPTIMIZED;
- } else {
- return BatteryOptimizeUtils.MODE_UNKNOWN;
- }
- }
-
static void startPowerBackgroundUsageDetailPage(Context context, Bundle args) {
new SubSettingLauncher(context)
.setDestination(PowerBackgroundUsageDetail.class.getName())
@@ -209,7 +153,11 @@
@VisibleForTesting
void initHeader() {
- final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
+ final LayoutPreference headerPreference = findPreference(KEY_PREF_HEADER);
+ if (headerPreference == null) {
+ return;
+ }
+ final View appSnippet = headerPreference.findViewById(R.id.entity_header);
final Activity context = getActivity();
final Bundle bundle = getArguments();
EntityHeaderController controller =
@@ -239,58 +187,25 @@
@VisibleForTesting
void initFooter() {
- final String stateString;
- final String footerString;
- final Context context = getContext();
-
- if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
- // Present optimized only string when the package name is invalid.
- stateString = context.getString(R.string.manager_battery_usage_optimized_only);
- footerString =
- context.getString(R.string.manager_battery_usage_footer_limited, stateString);
- } else if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
- // Present unrestricted only string when the package is system or default active app.
- stateString = context.getString(R.string.manager_battery_usage_unrestricted_only);
- footerString =
- context.getString(R.string.manager_battery_usage_footer_limited, stateString);
- } else {
- // Present default string to normal app.
- footerString = context.getString(R.string.manager_battery_usage_footer);
+ final FooterPreference footerPreference = findPreference(KEY_FOOTER_PREFERENCE);
+ if (footerPreference == null) {
+ return;
}
- mFooterPreference.setTitle(footerString);
+ final Context context = getContext();
+ footerPreference.setTitle(context.getString(R.string.manager_battery_usage_footer));
final Intent helpIntent =
HelpUtils.getHelpIntent(
context,
context.getString(R.string.help_url_app_usage_settings),
/* backupContext= */ "");
if (helpIntent != null) {
- mFooterPreference.setLearnMoreAction(
+ footerPreference.setLearnMoreAction(
v -> startActivityForResult(helpIntent, /* requestCode= */ 0));
- mFooterPreference.setLearnMoreText(
+ footerPreference.setLearnMoreText(
context.getString(R.string.manager_battery_usage_link_a11y));
}
}
- private void onCreateBackgroundUsageState(String packageName) {
- mOptimizePreference = findPreference(KEY_PREF_OPTIMIZED);
- mUnrestrictedPreference = findPreference(KEY_PREF_UNRESTRICTED);
- mMainSwitchPreference = findPreference(KEY_ALLOW_BACKGROUND_USAGE);
- mFooterPreference = findPreference(KEY_FOOTER_PREFERENCE);
-
- mOptimizePreference.setOnClickListener(this);
- mUnrestrictedPreference.setOnClickListener(this);
- mMainSwitchPreference.addOnSwitchChangeListener(this);
-
- mBatteryOptimizeUtils =
- new BatteryOptimizeUtils(
- getContext(), getArguments().getInt(EXTRA_UID), packageName);
- }
-
- private void updateSelectorPreferenceState(
- SelectorWithWidgetPreference preference, String selectedKey) {
- preference.setChecked(TextUtils.equals(selectedKey, preference.getKey()));
- }
-
private void logMetricCategory(int currentOptimizeMode) {
if (currentOptimizeMode == mOptimizationMode) {
return;
diff --git a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
deleted file mode 100644
index 652941b..0000000
--- a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2021 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.settings.fuelgauge;
-
-import android.content.Context;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
-
-public class UnrestrictedPreferenceController extends AbstractPreferenceController
- implements PreferenceControllerMixin {
-
- private static final String TAG = "UNRESTRICTED_PREF";
-
- @VisibleForTesting static final String KEY_UNRESTRICTED_PREF = "unrestricted_preference";
-
- @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
-
- public UnrestrictedPreferenceController(Context context, int uid, String packageName) {
- super(context);
- mBatteryOptimizeUtils = new BatteryOptimizeUtils(context, uid, packageName);
- }
-
- @Override
- public void updateState(Preference preference) {
- preference.setEnabled(mBatteryOptimizeUtils.isSelectorPreferenceEnabled());
-
- final boolean isUnrestricted =
- mBatteryOptimizeUtils.getAppOptimizationMode()
- == BatteryOptimizeUtils.MODE_UNRESTRICTED;
- ((SelectorWithWidgetPreference) preference).setChecked(isUnrestricted);
- }
-
- @Override
- public boolean isAvailable() {
- return true;
- }
-
- @Override
- public String getPreferenceKey() {
- return KEY_UNRESTRICTED_PREF;
- }
-
- @Override
- public boolean handlePreferenceTreeClick(Preference preference) {
- return getPreferenceKey().equals(preference.getKey());
- }
-}
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
index 5c57c0c..d4b29b4 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
@@ -38,6 +38,7 @@
import com.android.settingslib.widget.MainSwitchPreference;
/** Controller to update the battery saver button */
+// LINT.IfChange
public class BatterySaverButtonPreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
private static final long SWITCH_ANIMATION_DURATION = 350L;
@@ -129,3 +130,4 @@
}
}
}
+// LINT.ThenChange(BatterySaverPreference.kt)
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverPreference.kt b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverPreference.kt
new file mode 100644
index 0000000..5d5ba3c
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverPreference.kt
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2024 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.settings.fuelgauge.batterysaver
+
+import android.content.Context
+import android.os.Handler
+import android.os.Looper
+import android.os.PowerManager
+import com.android.settings.R
+import com.android.settings.fuelgauge.BatterySaverReceiver
+import com.android.settings.fuelgauge.BatterySaverReceiver.BatterySaverListener
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.fuelgauge.BatterySaverLogging.SAVER_ENABLED_SETTINGS
+import com.android.settingslib.fuelgauge.BatterySaverUtils
+import com.android.settingslib.fuelgauge.BatteryStatus
+import com.android.settingslib.fuelgauge.BatteryUtils
+import com.android.settingslib.metadata.MainSwitchPreference
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.ReadWritePermit
+
+// LINT.IfChange
+class BatterySaverPreference :
+ MainSwitchPreference(KEY, R.string.battery_saver_master_switch_title),
+ PreferenceLifecycleProvider {
+
+ private var batterySaverReceiver: BatterySaverReceiver? = null
+ private val handler by lazy { Handler(Looper.getMainLooper()) }
+
+ override fun storage(context: Context) = BatterySaverStore(context)
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun isEnabled(context: Context) =
+ !BatteryStatus(BatteryUtils.getBatteryIntent(context)).isPluggedIn
+
+ override fun onStart(context: PreferenceLifecycleContext) {
+ BatterySaverReceiver(context).apply {
+ batterySaverReceiver = this
+ setBatterySaverListener(
+ object : BatterySaverListener {
+ override fun onPowerSaveModeChanged() {
+ handler.postDelayed(
+ { context.notifyPreferenceChange(this@BatterySaverPreference) },
+ SWITCH_ANIMATION_DURATION,
+ )
+ }
+
+ override fun onBatteryChanged(pluggedIn: Boolean) =
+ context.notifyPreferenceChange(this@BatterySaverPreference)
+ }
+ )
+ setListening(true)
+ }
+ }
+
+ override fun onStop(context: PreferenceLifecycleContext) {
+ batterySaverReceiver?.setListening(false)
+ batterySaverReceiver = null
+ handler.removeCallbacksAndMessages(null /* token */)
+ }
+
+ @Suppress("UNCHECKED_CAST")
+ class BatterySaverStore(private val context: Context) :
+ NoOpKeyedObservable<String>(), KeyValueStore {
+ override fun contains(key: String) = key == KEY
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ context.isPowerSaveMode() as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ BatterySaverUtils.setPowerSaveMode(
+ context,
+ value as Boolean,
+ /* needFirstTimeWarning= */ false,
+ SAVER_ENABLED_SETTINGS,
+ )
+ }
+
+ private fun Context.isPowerSaveMode() =
+ getSystemService(PowerManager::class.java)?.isPowerSaveMode == true
+ }
+
+ companion object {
+ private const val KEY = "battery_saver"
+ private const val SWITCH_ANIMATION_DURATION: Long = 350L
+ }
+}
+// LINT.ThenChange(BatterySaverButtonPreferenceController.java)
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt
index 2226e37..d022073 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt
@@ -23,7 +23,7 @@
import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen
-class BatterySaverScreen : PreferenceScreenCreator {
+open class BatterySaverScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -39,7 +39,8 @@
override fun hasCompleteHierarchy() = false
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) =
+ preferenceHierarchy(this) { +BatterySaverPreference() order -100 }
companion object {
const val KEY = "battery_saver_screen"
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
index 0836912..df84aba 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
@@ -20,8 +20,6 @@
import android.content.Context;
import android.os.AsyncTask;
import android.os.BatteryUsageStats;
-import android.os.Handler;
-import android.os.Looper;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
@@ -117,11 +115,9 @@
private static void preprocessBatteryUsageSlots(
final Context context, final UserIdsSeries userIdsSeries) {
final long start = System.currentTimeMillis();
- final Handler handler = new Handler(Looper.getMainLooper());
final BatteryLevelData batteryLevelData =
DataProcessManager.getBatteryLevelData(
context,
- handler,
userIdsSeries,
/* isFromPeriodJob= */ true,
batteryDiffDataMap -> {
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
index 0a1a547..fd548ab 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
@@ -19,8 +19,6 @@
import android.app.usage.UsageEvents;
import android.content.Context;
import android.os.AsyncTask;
-import android.os.Handler;
-import android.os.Looper;
import android.util.ArrayMap;
import android.util.Log;
@@ -82,7 +80,6 @@
private final long mLastFullChargeTimestamp;
private final boolean mIsFromPeriodJob;
private final Context mContext;
- private final Handler mHandler;
private final UserIdsSeries mUserIdsSeries;
private final OnBatteryDiffDataMapLoadedListener mCallbackFunction;
private final List<AppUsageEvent> mAppUsageEventList = new ArrayList<>();
@@ -123,7 +120,6 @@
/** Constructor when there exists battery level data. */
DataProcessManager(
Context context,
- Handler handler,
final UserIdsSeries userIdsSeries,
final boolean isFromPeriodJob,
final long rawStartTimestamp,
@@ -132,7 +128,6 @@
@NonNull final List<BatteryLevelData.PeriodBatteryLevelData> hourlyBatteryLevelsPerDay,
@NonNull final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
mContext = context.getApplicationContext();
- mHandler = handler;
mUserIdsSeries = userIdsSeries;
mIsFromPeriodJob = isFromPeriodJob;
mRawStartTimestamp = rawStartTimestamp;
@@ -145,11 +140,9 @@
/** Constructor when there is no battery level data. */
DataProcessManager(
Context context,
- Handler handler,
final UserIdsSeries userIdsSeries,
@NonNull final OnBatteryDiffDataMapLoadedListener callbackFunction) {
mContext = context.getApplicationContext();
- mHandler = handler;
mUserIdsSeries = userIdsSeries;
mCallbackFunction = callbackFunction;
mIsFromPeriodJob = false;
@@ -444,12 +437,8 @@
@Override
protected void onPostExecute(final Map<Long, BatteryDiffData> batteryDiffDataMap) {
- // Post results back to main thread to refresh UI.
- if (mHandler != null && mCallbackFunction != null) {
- mHandler.post(
- () -> {
- mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
- });
+ if (mCallbackFunction != null) {
+ mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
}
}
}.execute();
@@ -534,12 +523,8 @@
@Override
protected void onPostExecute(final Map<Long, BatteryDiffData> batteryDiffDataMap) {
- // Post results back to main thread to refresh UI.
- if (mHandler != null && mCallbackFunction != null) {
- mHandler.post(
- () -> {
- mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
- });
+ if (mCallbackFunction != null) {
+ mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
}
}
}.execute();
@@ -581,7 +566,6 @@
@Nullable
public static BatteryLevelData getBatteryLevelData(
Context context,
- @Nullable Handler handler,
final UserIdsSeries userIdsSeries,
final boolean isFromPeriodJob,
final OnBatteryDiffDataMapLoadedListener onBatteryUsageMapLoadedListener) {
@@ -601,7 +585,6 @@
final BatteryLevelData batteryLevelData =
getPeriodBatteryLevelData(
context,
- handler,
userIdsSeries,
startTimestamp,
lastFullChargeTime,
@@ -621,7 +604,6 @@
private static BatteryLevelData getPeriodBatteryLevelData(
Context context,
- @Nullable Handler handler,
final UserIdsSeries userIdsSeries,
final long startTimestamp,
final long lastFullChargeTime,
@@ -639,7 +621,6 @@
return null;
}
- handler = handler != null ? handler : new Handler(Looper.getMainLooper());
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
sFakeBatteryHistoryMap != null
? sFakeBatteryHistoryMap
@@ -650,8 +631,7 @@
lastFullChargeTime);
if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
Log.d(TAG, "batteryHistoryMap is null in getPeriodBatteryLevelData()");
- new DataProcessManager(
- context, handler, userIdsSeries, onBatteryDiffDataMapLoadedListener)
+ new DataProcessManager(context, userIdsSeries, onBatteryDiffDataMapLoadedListener)
.start();
return null;
}
@@ -680,8 +660,7 @@
DataProcessor.getLevelDataThroughProcessedHistoryMap(
context, processedBatteryHistoryMap);
if (batteryLevelData == null) {
- new DataProcessManager(
- context, handler, userIdsSeries, onBatteryDiffDataMapLoadedListener)
+ new DataProcessManager(context, userIdsSeries, onBatteryDiffDataMapLoadedListener)
.start();
Log.d(TAG, "getBatteryLevelData() returns null");
return null;
@@ -690,7 +669,6 @@
// Start the async task to compute diff usage data and load labels and icons.
new DataProcessManager(
context,
- handler,
userIdsSeries,
isFromPeriodJob,
startTimestamp,
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
index ad487ef..0998e2d 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
@@ -31,8 +31,6 @@
import android.os.AsyncTask;
import android.os.BatteryManager;
import android.os.BatteryUsageStats;
-import android.os.Handler;
-import android.os.Looper;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserManager;
@@ -66,12 +64,6 @@
public final class DatabaseUtils {
private static final String TAG = "DatabaseUtils";
private static final String SHARED_PREFS_FILE = "battery_usage_shared_prefs";
- private static final boolean EXPLICIT_CLEAR_MEMORY_ENABLED = false;
-
- /** Clear memory threshold for device booting phase. */
- private static final long CLEAR_MEMORY_THRESHOLD_MS = Duration.ofMinutes(5).toMillis();
-
- private static final long CLEAR_MEMORY_DELAYED_MS = Duration.ofSeconds(2).toMillis();
private static final long INVALID_TIMESTAMP = 0L;
static final int DATA_RETENTION_INTERVAL_DAY = 9;
@@ -593,7 +585,6 @@
String.format(
"sendAppUsageEventData() size=%d in %d/ms",
size, (System.currentTimeMillis() - startTime)));
- clearMemory();
return valuesList;
}
@@ -613,7 +604,6 @@
String.format(
"sendBatteryEventData() in %d/ms",
(System.currentTimeMillis() - startTime)));
- clearMemory();
return contentValues;
}
@@ -647,7 +637,6 @@
String.format(
"sendBatteryEventData() size=%d in %d/ms",
size, (System.currentTimeMillis() - startTime)));
- clearMemory();
return valuesList;
}
@@ -681,7 +670,6 @@
String.format(
"sendBatteryUsageSlotData() size=%d in %d/ms",
size, (System.currentTimeMillis() - startTime)));
- clearMemory();
return valuesList;
}
@@ -695,7 +683,6 @@
final Intent intent = BatteryUtils.getBatteryIntent(context);
if (intent == null) {
Log.e(TAG, "sendBatteryEntryData(): cannot fetch battery intent");
- clearMemory();
return null;
}
final int batteryLevel = BatteryStatus.getBatteryLevel(intent);
@@ -796,7 +783,6 @@
if (isFullChargeStart) {
recordDateTime(context, KEY_LAST_UPLOAD_FULL_CHARGE_TIME);
}
- clearMemory();
return valuesList;
}
@@ -992,20 +978,4 @@
writer.println(String.format("\t\t%s: %s", prefix, results.toString()));
}
}
-
- private static void clearMemory() {
- if (!EXPLICIT_CLEAR_MEMORY_ENABLED
- || SystemClock.uptimeMillis() > CLEAR_MEMORY_THRESHOLD_MS) {
- return;
- }
- final Handler mainHandler = new Handler(Looper.getMainLooper());
- mainHandler.postDelayed(
- () -> {
- System.gc();
- System.runFinalization();
- System.gc();
- Log.w(TAG, "invoke clearMemory()");
- },
- CLEAR_MEMORY_DELAYED_MS);
- }
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
index a9c2332..1ed6a74 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
@@ -214,20 +214,22 @@
if (!isResumed() || mBatteryLevelData == null) {
return;
}
- mBatteryUsageMap =
- DataProcessor.generateBatteryUsageMap(
- getContext(), batteryDiffDataMap, mBatteryLevelData.orElse(null));
- Log.d(TAG, "onBatteryDiffDataMapUpdate: " + mBatteryUsageMap);
- DataProcessor.loadLabelAndIcon(mBatteryUsageMap);
- onSelectedSlotDataUpdated();
- detectAnomaly();
- logScreenUsageTime();
- if (mBatteryChartPreferenceController != null
- && mBatteryLevelData.isEmpty()
- && isBatteryUsageMapNullOrEmpty()) {
- // No available battery usage and battery level data.
- mBatteryChartPreferenceController.showEmptyChart();
- }
+ mHandler.post(() -> {
+ mBatteryUsageMap =
+ DataProcessor.generateBatteryUsageMap(
+ getContext(), batteryDiffDataMap, mBatteryLevelData.orElse(null));
+ Log.d(TAG, "onBatteryDiffDataMapUpdate: " + mBatteryUsageMap);
+ DataProcessor.loadLabelAndIcon(mBatteryUsageMap);
+ onSelectedSlotDataUpdated();
+ detectAnomaly();
+ logScreenUsageTime();
+ if (mBatteryChartPreferenceController != null
+ && mBatteryLevelData.isEmpty()
+ && isBatteryUsageMapNullOrEmpty()) {
+ // No available battery usage and battery level data.
+ mBatteryChartPreferenceController.showEmptyChart();
+ }
+ });
}
private void onSelectedSlotDataUpdated() {
@@ -503,7 +505,6 @@
public BatteryLevelData loadInBackground() {
return DataProcessManager.getBatteryLevelData(
getContext(),
- mHandler,
new UserIdsSeries(getContext(), /* isNonUIRequest= */ false),
/* isFromPeriodJob= */ false,
PowerUsageAdvanced.this::onBatteryDiffDataMapUpdate);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt
index 229e308..b397bf3 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt
@@ -17,6 +17,7 @@
import android.content.Context
import com.android.settings.R
+import com.android.settings.display.BatteryPercentageSwitchPreference
import com.android.settings.flags.Flags
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceIconProvider
@@ -25,9 +26,8 @@
import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen
-class PowerUsageSummaryScreen : PreferenceScreenCreator,
- PreferenceAvailabilityProvider,
- PreferenceIconProvider {
+class PowerUsageSummaryScreen :
+ PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
override val key: String
get() = KEY
@@ -53,10 +53,10 @@
R.drawable.ic_settings_battery_white
}
-
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) =
+ preferenceHierarchy(this) { +BatteryPercentageSwitchPreference() }
companion object {
const val KEY = "power_usage_summary_screen"
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/gestures/OneHandedSettings.java b/src/com/android/settings/gestures/OneHandedSettings.java
index 0a1ab64..0378888 100644
--- a/src/com/android/settings/gestures/OneHandedSettings.java
+++ b/src/com/android/settings/gestures/OneHandedSettings.java
@@ -29,15 +29,19 @@
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.accessibility.AccessibilityShortcutController;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityFragmentUtils;
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.search.SearchIndexableRaw;
import com.android.settingslib.widget.IllustrationPreference;
import com.android.settingslib.widget.MainSwitchPreference;
+import java.util.List;
+
/**
* Fragment for One-handed mode settings
*
@@ -48,7 +52,8 @@
public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {
private static final String TAG = "OneHandedSettings";
- private static final String ONE_HANDED_SHORTCUT_KEY = "one_handed_shortcuts_preference";
+ @VisibleForTesting
+ static final String ONE_HANDED_SHORTCUT_KEY = "one_handed_shortcuts_preference";
private static final String ONE_HANDED_ILLUSTRATION_KEY = "one_handed_header";
protected static final String ONE_HANDED_MAIN_SWITCH_KEY =
"gesture_one_handed_mode_enabled_main_switch";
@@ -180,6 +185,25 @@
protected boolean isPageSearchEnabled(Context context) {
return OneHandedSettingsUtils.isSupportOneHandedMode();
}
+
+ @Override
+ public List<SearchIndexableRaw> getRawDataToIndex(Context context,
+ boolean enabled) {
+ final List<SearchIndexableRaw> rawData =
+ super.getRawDataToIndex(context, enabled);
+ if (!com.android.settings.accessibility.Flags.fixA11ySettingsSearch()) {
+ return rawData;
+ }
+ rawData.add(createShortcutPreferenceSearchData(context));
+ return rawData;
+ }
+
+ private SearchIndexableRaw createShortcutPreferenceSearchData(Context context) {
+ final SearchIndexableRaw raw = new SearchIndexableRaw(context);
+ raw.key = ONE_HANDED_SHORTCUT_KEY;
+ raw.title = context.getString(R.string.one_handed_mode_shortcut_title);
+ return raw;
+ }
};
@Override
diff --git a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
index cfaee00..9b4da46 100644
--- a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
+++ b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
@@ -243,7 +243,9 @@
protected boolean setDefaultKey(String key) {
setCurrentSystemNavigationMode(mOverlayManager, key);
setIllustrationVideo(mVideoPreference, key);
- setGestureNavigationTutorialDialog(key);
+ if (!android.provider.Flags.a11yStandaloneGestureEnabled()) {
+ setGestureNavigationTutorialDialog(key);
+ }
setIllustrationClickListener(mVideoPreference, key);
return true;
}
diff --git a/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java b/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java
index 57ae88a..34f53c4 100644
--- a/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java
+++ b/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java
@@ -22,15 +22,23 @@
import android.provider.Settings;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleObserver;
import androidx.preference.PreferenceScreen;
-import androidx.preference.TwoStatePreference;
+
+import com.android.settingslib.PrimarySwitchPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
public class KeyboardAccessibilityMouseKeysController extends
InputSettingPreferenceController implements
LifecycleObserver {
+ private static final String KEY_MOUSE_KEY = "accessibility_mouse_keys";
+ private static final String KEY_MOUSE_KEY_MAIN_PAGE = "mouse_keys_main_switch";
- private TwoStatePreference mTwoStatePreference;
+ @Nullable
+ private PrimarySwitchPreference mPrimaryPreference;
+ @Nullable
+ private MainSwitchPreference mMainSwitchPreference;
public KeyboardAccessibilityMouseKeysController(@NonNull Context context, @NonNull String key) {
super(context, key);
@@ -39,7 +47,11 @@
@Override
public void displayPreference(@NonNull PreferenceScreen screen) {
super.displayPreference(screen);
- mTwoStatePreference = screen.findPreference(getPreferenceKey());
+ if (KEY_MOUSE_KEY.equals(getPreferenceKey())) {
+ mPrimaryPreference = screen.findPreference(getPreferenceKey());
+ } else if (KEY_MOUSE_KEY_MAIN_PAGE.equals(getPreferenceKey())) {
+ mMainSwitchPreference = screen.findPreference(getPreferenceKey());
+ }
}
@Override
@@ -63,8 +75,11 @@
@Override
protected void onInputSettingUpdated() {
- if (mTwoStatePreference != null) {
- mTwoStatePreference.setChecked(
+ if (mPrimaryPreference != null) {
+ mPrimaryPreference.setChecked(
+ InputSettings.isAccessibilityMouseKeysEnabled(mContext));
+ } else if (mMainSwitchPreference != null) {
+ mMainSwitchPreference.setChecked(
InputSettings.isAccessibilityMouseKeysEnabled(mContext));
}
}
diff --git a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java
index 7255107..4233ce2 100644
--- a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java
+++ b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java
@@ -35,20 +35,21 @@
boolean supportsFirmwareUpdate();
/**
- * Add firmware update preference category .
+ * Register firmware information preferences update on preference screen.
*
- * @param context The context to initialize the application with.
- * @param screen The {@link PreferenceScreen} to add the firmware update preference category.
- *
- * @return true if the category is added successfully.
+ * @param screen The {@link PreferenceScreen} to add the firmware information preferences.
*/
- boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen);
+ void registerKeyboardInformationCategory(@Nullable PreferenceScreen screen);
+
+ /**
+ * Unregister firmware information preferences update on preference screen.
+ */
+ void unregisterKeyboardInformationCategory();
/**
* Get custom action key icon.
*
* @param context Context for accessing resources.
- *
* @return Returns the image of the icon, or null if there is no any custom icon.
*/
@Nullable
diff --git a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java
index 26b10e5..b6cc774 100644
--- a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java
+++ b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java
@@ -19,6 +19,7 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
+import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen;
/**
@@ -32,12 +33,13 @@
}
@Override
- public boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen) {
- return false;
- }
+ public void registerKeyboardInformationCategory(@Nullable PreferenceScreen screen) {}
+
+ @Override
+ public void unregisterKeyboardInformationCategory() {}
@Override
public Drawable getActionKeyIcon(Context context) {
return null;
- };
+ }
}
diff --git a/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java b/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java
new file mode 100644
index 0000000..65024b1
--- /dev/null
+++ b/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2024 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.settings.inputmethod;
+
+import android.content.Context;
+import android.view.InputDevice;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+public class MouseKeysImageListAdapter extends
+ RecyclerView.Adapter<MouseKeysImageListAdapter.MouseKeyImageViewHolder> {
+ private static final ImmutableList<Integer> DRAWABLE_LIST = ImmutableList.of(
+ R.drawable.mouse_keys_directional, R.drawable.mouse_keys_click,
+ R.drawable.mouse_keys_press_hold, R.drawable.mouse_keys_release,
+ R.drawable.mouse_keys_toggle_scroll, R.drawable.mouse_keys_release2);
+ private static final ImmutableList<Integer> DIRECTIONAL_CHAR_KEYCODE_LIST = ImmutableList.of(
+ KeyEvent.KEYCODE_7, KeyEvent.KEYCODE_8, KeyEvent.KEYCODE_9, KeyEvent.KEYCODE_U,
+ KeyEvent.KEYCODE_O, KeyEvent.KEYCODE_J, KeyEvent.KEYCODE_K, KeyEvent.KEYCODE_L
+ );
+ private static final int LEFT_CLICK_CHAR_KEYCODE =
+ KeyEvent.KEYCODE_I;
+ private static final int PRESS_HOLD_CHAR_KEYCODE =
+ KeyEvent.KEYCODE_M;
+ private static final int RELEASE_CHAR_KEYCODE =
+ KeyEvent.KEYCODE_COMMA;
+ private static final ImmutableList<Integer> TOGGLE_SCROLL_CHAR_KEYCODE_LIST = ImmutableList.of(
+ KeyEvent.KEYCODE_PERIOD, KeyEvent.KEYCODE_8, KeyEvent.KEYCODE_K, KeyEvent.KEYCODE_O,
+ KeyEvent.KEYCODE_U
+ );
+ private static final int RIGHT_CLICK_CHAR_KEYCODE =
+ KeyEvent.KEYCODE_SLASH;
+ private final List<String> mComposedSummaryList = new ArrayList<>();
+
+ public MouseKeysImageListAdapter(@NonNull Context context,
+ @Nullable InputDevice currentInputDevice) {
+ composeSummaryForImages(context, currentInputDevice);
+ }
+
+ @NonNull
+ @Override
+ public MouseKeyImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.mouse_keys_image_item, parent, false);
+ return new MouseKeyImageViewHolder(view, parent.getContext());
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull MouseKeyImageViewHolder holder, int position) {
+ ((MouseKeyImageViewHolder) holder).bindView(DRAWABLE_LIST.get(position),
+ mComposedSummaryList.get(position));
+ }
+
+ @Override
+ public int getItemCount() {
+ return DRAWABLE_LIST.size();
+ }
+
+ private void composeSummaryForImages(Context context,
+ @Nullable InputDevice currentInputDevice) {
+ if (currentInputDevice == null) {
+ return;
+ }
+ mComposedSummaryList.clear();
+ List<String> directionalLabelList = DIRECTIONAL_CHAR_KEYCODE_LIST.stream().map(
+ (key) -> getDisplayLabel(currentInputDevice, key)).toList();
+ mComposedSummaryList.add(context.getString(R.string.mouse_keys_directional_summary,
+ String.join(",", directionalLabelList)));
+ String leftClickLabel = getDisplayLabel(currentInputDevice, LEFT_CLICK_CHAR_KEYCODE);
+ mComposedSummaryList.add(
+ context.getString(R.string.mouse_keys_click_summary, leftClickLabel));
+ String pressHoldLabel = getDisplayLabel(currentInputDevice, PRESS_HOLD_CHAR_KEYCODE);
+ mComposedSummaryList.add(
+ context.getString(R.string.mouse_keys_press_hold_summary, pressHoldLabel));
+ String releaseLabel = getDisplayLabel(currentInputDevice, RELEASE_CHAR_KEYCODE);
+ mComposedSummaryList.add(
+ context.getString(R.string.mouse_keys_release_summary, releaseLabel));
+ List<String> toggleScrollLabelList = TOGGLE_SCROLL_CHAR_KEYCODE_LIST.stream().map(
+ (key) -> getDisplayLabel(currentInputDevice, key)).toList();
+ mComposedSummaryList.add(context.getString(R.string.mouse_keys_toggle_scroll_summary,
+ toggleScrollLabelList.getFirst(),
+ String.join(",", toggleScrollLabelList.subList(1, toggleScrollLabelList.size()))
+ ));
+ String rightClickLabel = getDisplayLabel(currentInputDevice, RIGHT_CLICK_CHAR_KEYCODE);
+ mComposedSummaryList.add(
+ context.getString(R.string.mouse_keys_release2_summary, rightClickLabel));
+ }
+
+ private String getDisplayLabel(InputDevice currentInputDevice, int keycode) {
+ return String.valueOf(currentInputDevice.getKeyCharacterMap().getDisplayLabel(
+ currentInputDevice.getKeyCodeForKeyLocation(keycode))).toLowerCase(Locale.ROOT);
+ }
+
+ public static class MouseKeyImageViewHolder extends RecyclerView.ViewHolder {
+ private final TextView mTextView;
+ private final Context mContext;
+
+ public MouseKeyImageViewHolder(View itemView, Context context) {
+ super(itemView);
+ mTextView = (TextView) itemView;
+ mContext = context;
+ }
+
+ void bindView(int drawableRes, String summary) {
+ mTextView.setText(summary);
+ mTextView.setCompoundDrawablesWithIntrinsicBounds(null,
+ mContext.getDrawable(drawableRes), null, null);
+ }
+ }
+}
diff --git a/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java b/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java
new file mode 100644
index 0000000..dd9c1dd
--- /dev/null
+++ b/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2024 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.settings.inputmethod;
+
+import static com.android.settings.inputmethod.PhysicalKeyboardFragment.getHardKeyboards;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.hardware.input.InputManager;
+import android.os.Bundle;
+import android.view.InputDevice;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.internal.util.Preconditions;
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.keyboard.Flags;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.utils.ThreadUtils;
+import com.android.settingslib.widget.LayoutPreference;
+
+import java.util.List;
+
+@SearchIndexable
+public class MouseKeysMainPageFragment extends DashboardFragment
+ implements InputManager.InputDeviceListener {
+
+ private static final String TAG = "MouseKeysMainPageFragment";
+ private static final String KEY_MOUSE_KEY_LIST = "mouse_keys_list";
+
+ private InputManager mInputManager;
+ private LayoutPreference mMouseKeyImagesPreference;
+ @Nullable
+ private InputDevice mCurrentInputDevice;
+
+ @Override
+ public void onCreate(@NonNull Bundle bundle) {
+ super.onCreate(bundle);
+ mCurrentInputDevice = getInputDevice();
+ final PreferenceScreen screen = getPreferenceScreen();
+ mMouseKeyImagesPreference = screen.findPreference(KEY_MOUSE_KEY_LIST);
+ mInputManager = Preconditions.checkNotNull(getActivity()
+ .getSystemService(InputManager.class));
+ String title = mCurrentInputDevice == null ? getActivity().getString(R.string.mouse_keys)
+ : getActivity().getString(R.string.mouse_key_main_page_title,
+ mCurrentInputDevice.getName());
+ getActivity().setTitle(title);
+ configureImagesPreference();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ finishEarlyIfNeeded();
+ mInputManager.registerInputDeviceListener(this, null);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ mInputManager.unregisterInputDeviceListener(this);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.PHYSICAL_KEYBOARD_A11Y;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.mouse_keys_main_page;
+ }
+
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ public void onInputDeviceAdded(int deviceId) {
+ finishEarlyIfNeeded();
+ }
+
+ @Override
+ public void onInputDeviceRemoved(int deviceId) {
+ finishEarlyIfNeeded();
+ }
+
+ @Override
+ public void onInputDeviceChanged(int deviceId) {
+ finishEarlyIfNeeded();
+ }
+
+ private void finishEarlyIfNeeded() {
+ final Context context = getContext();
+ ThreadUtils.postOnBackgroundThread(() -> {
+ final List<PhysicalKeyboardFragment.HardKeyboardDeviceInfo> newHardKeyboards =
+ getHardKeyboards(context);
+ if (newHardKeyboards.isEmpty()) {
+ getActivity().finish();
+ }
+ });
+ }
+
+ private void configureImagesPreference() {
+ final RecyclerView recyclerView = mMouseKeyImagesPreference.findViewById(
+ R.id.mouse_keys_image_recycler_list);
+ recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
+ recyclerView.setAdapter(new MouseKeysImageListAdapter(getActivity(), mCurrentInputDevice));
+ }
+
+ /**
+ * Priority of picking input device:
+ * 1. internal keyboard(built-in keyboard)
+ * 2. first keyboard in the list
+ */
+ @Nullable
+ private InputDevice getInputDevice() {
+ InputDevice inputDevice = null;
+ for (int deviceId : InputDevice.getDeviceIds()) {
+ final InputDevice device = InputDevice.getDevice(deviceId);
+ if (device == null || device.isVirtual() || !device.isFullKeyboard()) {
+ continue;
+ }
+ if (inputDevice == null) {
+ inputDevice = device;
+ } else if (!device.isExternal()) {
+ inputDevice = device;
+ break;
+ }
+ }
+ return inputDevice;
+ }
+
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(R.xml.mouse_keys_main_page) {
+ @Override
+ protected boolean isPageSearchEnabled(Context context) {
+ return Flags.keyboardAndTouchpadA11yNewPageEnabled()
+ && !getHardKeyboards(context).isEmpty();
+ }
+ };
+}
diff --git a/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java b/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java
index f7a9aca..587370b 100644
--- a/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java
+++ b/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java
@@ -36,6 +36,8 @@
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
+import androidx.annotation.StringRes;
+
import com.android.settings.R;
import java.util.Arrays;
@@ -80,6 +82,18 @@
return false;
}
+ static @StringRes int getTouchpadAndMouseTitleTitleResId() {
+ boolean isMouse = isMouse();
+ boolean isTouchpad = isTouchpad();
+ if (isMouse && isTouchpad) {
+ return R.string.trackpad_mouse_settings;
+ } else if (isMouse) {
+ return R.string.mouse_settings;
+ } else {
+ return R.string.trackpad_settings;
+ }
+ }
+
@SuppressLint("MissingPermission")
@Nullable
static String getSelectedKeyboardLayoutLabelForUser(Context context, @UserIdInt int userId,
diff --git a/src/com/android/settings/inputmethod/OWNERS b/src/com/android/settings/inputmethod/OWNERS
index 8dc4870..c8850fe 100644
--- a/src/com/android/settings/inputmethod/OWNERS
+++ b/src/com/android/settings/inputmethod/OWNERS
@@ -2,8 +2,8 @@
include platform/frameworks/base:/services/core/java/com/android/server/inputmethod/OWNERS
include /OWNERS
-# Settings for physical keyboard and game pad are better to be reviewed by the input team
+# Settings for physical keyboard, gamepad, and touchpad are better reviewed by the input team
per-file GameControllerPreferenceController.java = file:platform/frameworks/base:/INPUT_OWNERS
per-file KeyboardLayoutPicker*.java = file:platform/frameworks/base:/INPUT_OWNERS
per-file PhysicalKeyboard*.java = file:platform/frameworks/base:/INPUT_OWNERS
-per-file Trackpad*.java = file:platform/frameworks/base:/INPUT_OWNERS
+per-file Trackpad*.java,Touchpad*.java,PointerTouchpad*.java = file:platform/frameworks/base:/INPUT_OWNERS
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index edc9989..910a1d6 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -164,7 +164,7 @@
mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider();
mSupportsFirmwareUpdate = mFeatureProvider.supportsFirmwareUpdate();
if (mSupportsFirmwareUpdate) {
- mFeatureProvider.addFirmwareUpdateCategory(getContext(), getPreferenceScreen());
+ mFeatureProvider.registerKeyboardInformationCategory(getPreferenceScreen());
}
boolean isModifierKeySettingsEnabled = FeatureFlagUtils
.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_MODIFIER_KEY);
@@ -344,7 +344,7 @@
mKeyboardAssistanceCategory.setOrder(1);
preferenceScreen.addPreference(mKeyboardAssistanceCategory);
if (mSupportsFirmwareUpdate) {
- mFeatureProvider.addFirmwareUpdateCategory(getPrefContext(), preferenceScreen);
+ mFeatureProvider.registerKeyboardInformationCategory(preferenceScreen);
}
if (InputSettings.isAccessibilityBounceKeysFeatureEnabled()
@@ -423,6 +423,9 @@
private void unregisterSettingsObserver() {
getActivity().getContentResolver().unregisterContentObserver(mContentObserver);
+ if (mSupportsFirmwareUpdate) {
+ mFeatureProvider.unregisterKeyboardInformationCategory();
+ }
}
private void updateAccessibilityBounceKeysSwitch(@NonNull Context context) {
diff --git a/src/com/android/settings/inputmethod/TrackpadSettings.java b/src/com/android/settings/inputmethod/TrackpadSettings.java
index dca418a..0f9e9cf 100644
--- a/src/com/android/settings/inputmethod/TrackpadSettings.java
+++ b/src/com/android/settings/inputmethod/TrackpadSettings.java
@@ -18,8 +18,11 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
+import android.os.Bundle;
import android.util.FeatureFlagUtils;
+import androidx.annotation.NonNull;
+
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -31,12 +34,19 @@
private static final String TAG = "TrackpadSettings";
@Override
- public void onAttach(Context context) {
+ public void onAttach(@NonNull Context context) {
super.onAttach(context);
use(TouchGesturesButtonPreferenceController.class).setFragment(this /*parent*/);
}
@Override
+ public void onCreate(@NonNull Bundle icicle) {
+ super.onCreate(icicle);
+ getPreferenceScreen().setTitle(
+ NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId());
+ }
+
+ @Override
public int getMetricsCategory() {
return SettingsEnums.SETTINGS_KEYBOARDS_TOUCHPAD;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadSettingsController.java b/src/com/android/settings/inputmethod/TrackpadSettingsController.java
index d88b282..9a549ea 100644
--- a/src/com/android/settings/inputmethod/TrackpadSettingsController.java
+++ b/src/com/android/settings/inputmethod/TrackpadSettingsController.java
@@ -77,6 +77,7 @@
return;
}
mPreference.setVisible(isAvailable());
+ mPreference.setTitle(NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId());
}
@Override
diff --git a/src/com/android/settings/language/LanguageSettingScreen.kt b/src/com/android/settings/language/LanguageSettingScreen.kt
new file mode 100644
index 0000000..09ca11b
--- /dev/null
+++ b/src/com/android/settings/language/LanguageSettingScreen.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 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.settings.language
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.pm.PackageManager
+import com.android.settings.R
+import com.android.settings.Settings.LanguageSettingsActivity
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class LanguageSettingScreen: PreferenceScreenCreator {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.languages_settings
+
+ override val summary: Int
+ get() = R.string.languages_setting_summary
+
+ override val icon: Int
+ get() = R.drawable.ic_settings_languages
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystLanguageSetting()
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun fragmentClass() = LanguageSettings::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ companion object {
+ const val KEY = "language_setting"
+ }
+}
diff --git a/src/com/android/settings/language/LanguageSettings.java b/src/com/android/settings/language/LanguageSettings.java
index a5adb02..d992ff2 100644
--- a/src/com/android/settings/language/LanguageSettings.java
+++ b/src/com/android/settings/language/LanguageSettings.java
@@ -67,6 +67,11 @@
}
@Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return LanguageSettingScreen.KEY;
+ }
+
+ @Override
protected int getPreferenceScreenResId() {
return R.xml.language_settings;
}
diff --git a/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java b/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java
index 59a5fb0..a7ebe32 100644
--- a/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java
+++ b/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java
@@ -39,7 +39,10 @@
* <p>It only removes one locale at the time, but most users don't
* really add many locales "by mistake", so there is no real need
* to delete a lot of locales at once.</p>
+ *
+ * @deprecated use SettingLib's widget instead of customized UIs.
*/
+@Deprecated
public class LocaleLinearLayoutManager extends LinearLayoutManager {
private final LocaleDragAndDropAdapter mAdapter;
private final Context mContext;
diff --git a/src/com/android/settings/localepicker/LocaleListSearchCallback.java b/src/com/android/settings/localepicker/LocaleListSearchCallback.java
new file mode 100644
index 0000000..b80bbcc
--- /dev/null
+++ b/src/com/android/settings/localepicker/LocaleListSearchCallback.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (C) 2024 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.settings.localepicker;
+
+import androidx.annotation.NonNull;
+
+import com.android.internal.app.LocaleStore;
+
+import java.util.List;
+
+/** Interface for when locale list changes in SearchView . */
+public interface LocaleListSearchCallback {
+
+ /** Callback method for searching changes. */
+ void onSearchListChanged(@NonNull List<LocaleStore.LocaleInfo> localeInfoList);
+}
diff --git a/src/com/android/settings/localepicker/LocalePickerBaseListPreferenceController.java b/src/com/android/settings/localepicker/LocalePickerBaseListPreferenceController.java
new file mode 100644
index 0000000..8c71abf
--- /dev/null
+++ b/src/com/android/settings/localepicker/LocalePickerBaseListPreferenceController.java
@@ -0,0 +1,210 @@
+/**
+ * Copyright (C) 2024 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.settings.localepicker;
+
+import android.content.Context;
+import android.os.LocaleList;
+import android.provider.Settings;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+
+import com.android.internal.app.LocaleCollectorBase;
+import com.android.internal.app.LocaleHelper;
+import com.android.internal.app.LocaleStore;
+import com.android.settings.core.BasePreferenceController;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/** A base controller for handling locale controllers. */
+public abstract class LocalePickerBaseListPreferenceController extends
+ BasePreferenceController implements LocaleListSearchCallback {
+
+ private static final String TAG = "LocalePickerBaseListPreference";
+ private static final String KEY_SUGGESTED = "suggested";
+
+ private PreferenceCategory mPreferenceCategory;
+ private LocaleList mExplicitLocales;
+ private Set<LocaleStore.LocaleInfo> mLocaleList;
+ private List<LocaleStore.LocaleInfo> mLocaleOptions;
+ private Map<String, Preference> mPreferences;
+ private String mPackageName;
+ private boolean mCountryMode;
+
+ public LocalePickerBaseListPreferenceController(@NonNull Context context,
+ @NonNull String preferenceKey) {
+ super(context, preferenceKey);
+ // TODO: Should get extra from fragment.
+// if (isDeviceDemoMode()) {
+// Bundle bundle = preference.getExtras();
+// mExplicitLocales = bundle == null
+// ? null
+// : bundle.getParcelable(Settings.EXTRA_EXPLICIT_LOCALES, LocaleList.class);
+// Log.d(TAG, "Has explicit locales : " + mExplicitLocales);
+// }
+ mLocaleList = getLocaleCollectorController(context).getSupportedLocaleList(null,
+ false, false);
+ mLocaleOptions = new ArrayList<>(mLocaleList.size());
+ mPreferences = new ArrayMap<>();
+ }
+
+ private boolean isDeviceDemoMode() {
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 0) == 1;
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ mPreferenceCategory = screen.findPreference(getPreferenceCategoryKey());
+ updatePreferences();
+ }
+
+ private void updatePreferences() {
+ if (mPreferenceCategory == null) {
+ Log.d(TAG, "updatePreferences, mPreferenceCategory is null");
+ return;
+ }
+
+ List<LocaleStore.LocaleInfo> result;
+ result = getSortedLocaleList(
+ getPreferenceCategoryKey().contains(KEY_SUGGESTED) ? getSuggestedLocaleList()
+ : getSupportedLocaleList());
+
+ final Map<String, Preference> existingPreferences = mPreferences;
+ mPreferences = new ArrayMap<>();
+ setupPreference(result, existingPreferences);
+
+ for (Preference pref : existingPreferences.values()) {
+ mPreferenceCategory.removePreference(pref);
+ }
+ }
+
+ @Override
+ public void onSearchListChanged(@NonNull List<LocaleStore.LocaleInfo> newList) {
+ mPreferenceCategory.removeAll();
+ mPreferences.clear();
+ final Map<String, Preference> existingPreferences = mPreferences;
+ if (getPreferenceCategoryKey().contains(KEY_SUGGESTED)) {
+ newList = getSortedSuggestedLocaleFromSearchList(
+ newList, getSuggestedLocaleList());
+ }
+ if (!newList.isEmpty()) {
+ mPreferenceCategory.setVisible(true);
+ setupPreference(newList, existingPreferences);
+ } else {
+ mPreferenceCategory.setVisible(false);
+ }
+ }
+
+ private List<LocaleStore.LocaleInfo> getSortedSuggestedLocaleFromSearchList(
+ List<LocaleStore.LocaleInfo> listOptions,
+ List<LocaleStore.LocaleInfo> listSuggested) {
+ List<LocaleStore.LocaleInfo> searchItem = new ArrayList<>();
+ for (LocaleStore.LocaleInfo option : listOptions) {
+ for (LocaleStore.LocaleInfo suggested : listSuggested) {
+ if (suggested.toString().contains(option.toString())) {
+ searchItem.add(suggested);
+ }
+ }
+ }
+ searchItem = getSortedLocaleList(searchItem);
+ return searchItem;
+ }
+
+ private void setupPreference(List<LocaleStore.LocaleInfo> localeInfoList,
+ Map<String, Preference> existingPreferences) {
+ localeInfoList.stream().forEach(locale ->
+ {
+ Preference pref = existingPreferences.remove(locale.getId());
+ if (pref == null) {
+ pref = new Preference(mContext);
+ mPreferenceCategory.addPreference(pref);
+ }
+ String localeName =
+ mCountryMode ? locale.getFullCountryNameNative() : locale.getFullNameNative();
+ pref.setTitle(localeName);
+ pref.setKey(locale.toString());
+ pref.setOnPreferenceClickListener(clickedPref -> {
+ // TODO: Click locale to show region or numbering system page if needed.
+ return true;
+ });
+ mPreferences.put(locale.getId(), pref);
+ });
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ protected abstract String getPreferenceCategoryKey();
+
+ protected abstract LocaleCollectorBase getLocaleCollectorController(Context context);
+
+ protected String getPackageName() {
+ return mPackageName;
+ }
+
+ protected LocaleList getExplicitLocaleList() {
+ return mExplicitLocales;
+ }
+
+ protected List<LocaleStore.LocaleInfo> getSuggestedLocaleList() {
+ mLocaleOptions.clear();
+ if (mLocaleList != null && !mLocaleList.isEmpty()) {
+ mLocaleOptions.addAll(mLocaleList.stream()
+ .filter(localeInfo -> localeInfo.isSuggested())
+ .collect(Collectors.toList()));
+ } else {
+ Log.d(TAG, "Can not get suggested locales because the locale list is null or empty.");
+ }
+
+ return mLocaleOptions;
+ }
+
+ protected List<LocaleStore.LocaleInfo> getSupportedLocaleList() {
+ if (mLocaleList != null && !mLocaleList.isEmpty()) {
+ mLocaleOptions.addAll(mLocaleList.stream()
+ .filter(localeInfo -> !localeInfo.isSuggested())
+ .collect(Collectors.toList()));
+ } else {
+ Log.d(TAG, "Can not get supported locales because the locale list is null or empty.");
+ }
+
+ return mLocaleOptions;
+ }
+
+ private List<LocaleStore.LocaleInfo> getSortedLocaleList(
+ List<LocaleStore.LocaleInfo> localeInfos) {
+ final Locale sortingLocale = Locale.getDefault();
+ final LocaleHelper.LocaleInfoComparator comp =
+ new LocaleHelper.LocaleInfoComparator(sortingLocale, mCountryMode);
+ Collections.sort(localeInfos, comp);
+ return localeInfos;
+ }
+}
diff --git a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java
index 05cb6a4..3cf7683 100644
--- a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java
+++ b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java
@@ -34,7 +34,12 @@
import com.android.settings.R;
import com.android.settings.core.SettingsBaseActivity;
-/** A activity to show the locale picker page. */
+/**
+ * An activity to show the locale picker page.
+ *
+ * @deprecated use {@link com.android.settings.localepicker.SystemLocalePickerFragment} instead.
+ */
+@Deprecated
public class LocalePickerWithRegionActivity extends SettingsBaseActivity
implements LocalePickerWithRegion.LocaleSelectedListener, MenuItem.OnActionExpandListener {
private static final String TAG = LocalePickerWithRegionActivity.class.getSimpleName();
diff --git a/src/com/android/settings/localepicker/RegionAndNumberingSystemPickerFragment.java b/src/com/android/settings/localepicker/RegionAndNumberingSystemPickerFragment.java
new file mode 100644
index 0000000..171df6a
--- /dev/null
+++ b/src/com/android/settings/localepicker/RegionAndNumberingSystemPickerFragment.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (C) 2024 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.settings.localepicker;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceCategory;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.internal.app.LocaleHelper;
+import com.android.internal.app.LocaleStore;
+import com.android.internal.app.SystemLocaleCollector;
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.widget.PreferenceCategoryController;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+import com.google.android.material.appbar.AppBarLayout;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+/**
+ * A locale picker fragment to show region country and numbering system.
+ *
+ * <p>It shows suggestions at the top, then the rest of the locales.
+ * Allows the user to search for locales using both their native name and their name in the
+ * default locale.</p>
+ */
+public class RegionAndNumberingSystemPickerFragment extends DashboardFragment {
+ private static final String TAG = "RegionAndNumberingSystemPickerFragment";
+
+ private RecyclerView mRecyclerView;
+ private AppBarLayout mAppBarLayout;
+ private Activity mActivity;
+
+ @Override
+ public void onCreate(@NonNull Bundle icicle) {
+ super.onCreate(icicle);
+ mActivity = getActivity();
+ if (mActivity.isFinishing()) {
+ return;
+ }
+ }
+
+ @Override
+ public @NonNull View onCreateView(@NonNull LayoutInflater inflater,
+ @NonNull ViewGroup container, @NonNull Bundle savedInstanceState) {
+ mAppBarLayout = mActivity.findViewById(R.id.app_bar);
+ mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ return super.onCreateView(inflater, container, savedInstanceState);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ mRecyclerView = view.findViewById(R.id.recycler_view);
+ }
+
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.system_language_picker;
+ }
+
+ @Override
+ protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
+ return buildPreferenceControllers(context, getSettingsLifecycle());
+ }
+
+ private List<AbstractPreferenceController> buildPreferenceControllers(
+ @NonNull Context context, @Nullable Lifecycle lifecycle) {
+ final List<AbstractPreferenceController> controllers = new ArrayList<>();
+
+ // TODO: b/30358431 - Add preference of region locales.
+
+ return controllers;
+ }
+
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(R.xml.system_language_picker);
+
+ @Override
+ public int getMetricsCategory() {
+ return 0;
+ }
+}
diff --git a/src/com/android/settings/localepicker/SystemLocalePickerFragment.java b/src/com/android/settings/localepicker/SystemLocalePickerFragment.java
new file mode 100644
index 0000000..df3ae84
--- /dev/null
+++ b/src/com/android/settings/localepicker/SystemLocalePickerFragment.java
@@ -0,0 +1,281 @@
+/**
+ * Copyright (C) 2024 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.settings.localepicker;
+
+import android.app.Activity;
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+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.Filter;
+import android.widget.SearchView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.view.ViewCompat;
+import androidx.preference.PreferenceCategory;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.internal.app.LocaleHelper;
+import com.android.internal.app.LocaleStore;
+import com.android.internal.app.SystemLocaleCollector;
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+import com.google.android.material.appbar.AppBarLayout;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+/**
+ * A locale picker fragment to show system languages.
+ *
+ * <p>It shows suggestions at the top, then the rest of the locales.
+ * Allows the user to search for locales using both their native name and their name in the
+ * default locale.</p>
+ */
+public class SystemLocalePickerFragment extends DashboardFragment implements
+ SearchView.OnQueryTextListener, MenuItem.OnActionExpandListener {
+
+ private static final String TAG = "SystemLocalePickerFragment";
+ private static final String EXTRA_EXPAND_SEARCH_VIEW = "expand_search_view";
+
+ @Nullable private SearchView mSearchView = null;
+ @Nullable private SearchFilter mSearchFilter = null;
+ @Nullable private Set<LocaleStore.LocaleInfo> mLocaleList;
+ @Nullable private List<LocaleStore.LocaleInfo> mLocaleOptions;
+ @Nullable private List<LocaleStore.LocaleInfo> mOriginalLocaleInfos;
+ private AppBarLayout mAppBarLayout;
+ private RecyclerView mRecyclerView;
+ private Activity mActivity;
+ private boolean mExpandSearch;
+
+ @Override
+ public void onCreate(@NonNull Bundle icicle) {
+ super.onCreate(icicle);
+ mActivity = getActivity();
+ if (mActivity.isFinishing()) {
+ return;
+ }
+ setHasOptionsMenu(true);
+
+ mExpandSearch = mActivity.getIntent().getBooleanExtra(EXTRA_EXPAND_SEARCH_VIEW, false);
+ if (icicle != null) {
+ mExpandSearch = icicle.getBoolean(EXTRA_EXPAND_SEARCH_VIEW);
+ }
+
+ SystemLocaleCollector systemLocaleCollector = new SystemLocaleCollector(getContext(), null);
+ mLocaleList = systemLocaleCollector.getSupportedLocaleList(null, false, false);
+ mLocaleOptions = new ArrayList<>(mLocaleList.size());
+ }
+
+ @Override
+ public @NonNull View onCreateView(@NonNull LayoutInflater inflater,
+ @NonNull ViewGroup container, @NonNull Bundle savedInstanceState) {
+ mAppBarLayout = mActivity.findViewById(R.id.app_bar);
+ return super.onCreateView(inflater, container, savedInstanceState);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ mRecyclerView = view.findViewById(R.id.recycler_view);
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle outState) {
+ super.onSaveInstanceState(outState);
+ if (mSearchView != null) {
+ outState.putBoolean(EXTRA_EXPAND_SEARCH_VIEW, !mSearchView.isIconified());
+ }
+ }
+
+ @Override
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ inflater.inflate(R.menu.language_selection_list, menu);
+ final MenuItem searchMenuItem = menu.findItem(R.id.locale_search_menu);
+ if (searchMenuItem != null) {
+ searchMenuItem.setOnActionExpandListener(this);
+ mSearchView = (SearchView) searchMenuItem.getActionView();
+ mSearchView.setQueryHint(
+ getContext().getResources().getText(R.string.search_language_hint));
+ mSearchView.setOnQueryTextListener(this);
+ mSearchView.setMaxWidth(Integer.MAX_VALUE);
+ if (mExpandSearch) {
+ searchMenuItem.expandActionView();
+ }
+ }
+ }
+
+ private void filterSearch(@Nullable String query) {
+ if (mSearchFilter == null) {
+ mSearchFilter = new SearchFilter();
+ }
+
+ // TODO: b/30358431 - Add preference of system locales.
+ // mOriginalLocaleInfos = mSystemLocaleAllListPreferenceController.getSupportedLocaleList();
+ // If we haven't load apps list completely, don't filter anything.
+ if (mOriginalLocaleInfos == null) {
+ Log.w(TAG, "Locales haven't loaded completely yet, so nothing can be filtered");
+ return;
+ }
+ mSearchFilter.filter(query);
+ }
+
+ private class SearchFilter extends Filter {
+
+ @Override
+ protected FilterResults performFiltering(CharSequence prefix) {
+ FilterResults results = new FilterResults();
+
+ if (mOriginalLocaleInfos == null) {
+ mOriginalLocaleInfos = new ArrayList<>(mLocaleList);
+ }
+
+ if (TextUtils.isEmpty(prefix)) {
+ results.values = mOriginalLocaleInfos;
+ results.count = mOriginalLocaleInfos.size();
+ } else {
+ // TODO: decide if we should use the string's locale
+ Locale locale = Locale.getDefault();
+ String prefixString = LocaleHelper.normalizeForSearch(prefix.toString(), locale);
+
+ final int count = mOriginalLocaleInfos.size();
+ final ArrayList<LocaleStore.LocaleInfo> newValues = new ArrayList<>();
+
+ for (int i = 0; i < count; i++) {
+ final LocaleStore.LocaleInfo value = mOriginalLocaleInfos.get(i);
+ final String nameToCheck = LocaleHelper.normalizeForSearch(
+ value.getFullNameInUiLanguage(), locale);
+ final String nativeNameToCheck = LocaleHelper.normalizeForSearch(
+ value.getFullNameNative(), locale);
+ if ((wordMatches(nativeNameToCheck, prefixString)
+ || wordMatches(nameToCheck, prefixString)) && !newValues.contains(
+ value)) {
+ newValues.add(value);
+ }
+ }
+
+ results.values = newValues;
+ results.count = newValues.size();
+ }
+
+ return results;
+ }
+
+ @Override
+ protected void publishResults(CharSequence constraint, FilterResults results) {
+ mLocaleOptions = (ArrayList<LocaleStore.LocaleInfo>) results.values;
+ // Need to scroll to first preference when searching.
+ if (mRecyclerView != null) {
+ mRecyclerView.post(() -> mRecyclerView.scrollToPosition(0));
+ }
+ // TODO: b/30358431 - Add preference of system locales.
+ // mSystemLocaleAllListPreferenceController.onSearchListChanged(mLocaleOptions);
+ // mSuggestedListPreferenceController.onSearchListChanged(mLocaleOptions);
+ }
+
+ // TODO: decide if this is enough, or we want to use a BreakIterator...
+ private boolean wordMatches(String valueText, String prefixString) {
+ if (valueText == null) {
+ return false;
+ }
+
+ // First match against the whole, non-split value
+ if (valueText.startsWith(prefixString)) {
+ return true;
+ }
+
+ return Arrays.stream(valueText.split(" "))
+ .anyMatch(word -> word.startsWith(prefixString));
+ }
+ }
+
+ @Override
+ public boolean onMenuItemActionExpand(@NonNull MenuItem item) {
+ // To prevent a large space on tool bar.
+ mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ // To prevent user can expand the collapsing tool bar view.
+ ViewCompat.setNestedScrollingEnabled(mRecyclerView, false);
+ return true;
+ }
+
+ @Override
+ public boolean onMenuItemActionCollapse(@NonNull MenuItem item) {
+ // We keep the collapsed status after user cancel the search function.
+ mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
+ ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
+ return true;
+ }
+
+ @Override
+ public boolean onQueryTextSubmit(@Nullable String query) {
+ return false;
+ }
+
+ @Override
+ public boolean onQueryTextChange(@Nullable String newText) {
+ filterSearch(newText);
+ return false;
+ }
+
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.USER_LOCALE_LIST;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.system_language_picker;
+ }
+
+ @Override
+ protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
+ return buildPreferenceControllers(context, getSettingsLifecycle());
+ }
+
+ private List<AbstractPreferenceController> buildPreferenceControllers(
+ @NonNull Context context, @Nullable Lifecycle lifecycle) {
+ final List<AbstractPreferenceController> controllers = new ArrayList<>();
+ // TODO: b/30358431 - Add preference of system locales.
+ return controllers;
+ }
+
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(R.xml.system_language_picker);
+}
diff --git a/src/com/android/settings/localepicker/TermsOfAddressBaseController.java b/src/com/android/settings/localepicker/TermsOfAddressBaseController.java
index 86b139e..889acf0 100644
--- a/src/com/android/settings/localepicker/TermsOfAddressBaseController.java
+++ b/src/com/android/settings/localepicker/TermsOfAddressBaseController.java
@@ -23,8 +23,8 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@@ -32,9 +32,9 @@
public abstract class TermsOfAddressBaseController extends BasePreferenceController {
private static final Executor sExecutor = Executors.newSingleThreadExecutor();
- private PreferenceScreen mPreferenceScreen;
private MetricsFeatureProvider mMetricsFeatureProvider;
- private TickButtonPreference mPreference;
+ private SelectorWithWidgetPreference mPreference;
+
private TermsOfAddressHelper mTermsOfAddressHelper;
public TermsOfAddressBaseController(Context context, String preferenceKey) {
@@ -49,34 +49,17 @@
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
- mPreferenceScreen = screen;
mPreference = screen.findPreference(getPreferenceKey());
- mPreference.setOnPreferenceClickListener(clickedPref -> {
+ mPreference.setChecked(
+ mTermsOfAddressHelper.getSystemGrammaticalGender() == getGrammaticalGenderType());
+ mPreference.setOnClickListener(v -> {
sExecutor.execute(
() -> {
mTermsOfAddressHelper.setSystemGrammaticalGender(
getGrammaticalGenderType());
});
- setSelected(mPreference);
mMetricsFeatureProvider.action(mContext, getMetricsActionKey());
- return true;
});
- updatePreferences();
- }
-
- private void setSelected(TickButtonPreference preference) {
- for (int i = 1; i < mPreferenceScreen.getPreferenceCount(); i++) {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(i);
- pref.setSelected(pref.getKey().equals(preference.getKey()));
- }
- }
-
- private void updatePreferences() {
- if (mPreference == null) {
- return;
- }
- mPreference.setSelected(
- mTermsOfAddressHelper.getSystemGrammaticalGender() == getGrammaticalGenderType());
}
@Override
diff --git a/src/com/android/settings/network/AdaptiveConnectivityScreen.kt b/src/com/android/settings/network/AdaptiveConnectivityScreen.kt
new file mode 100644
index 0000000..0604236
--- /dev/null
+++ b/src/com/android/settings/network/AdaptiveConnectivityScreen.kt
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class AdaptiveConnectivityScreen : PreferenceScreenCreator {
+ override val key
+ get() = KEY
+
+ override val title
+ get() = R.string.adaptive_connectivity_title
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystAdaptiveConnectivity()
+
+ override fun fragmentClass() = AdaptiveConnectivitySettings::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ +AdaptiveConnectivityTogglePreference()
+ }
+
+ override fun hasCompleteHierarchy() = false
+
+ companion object {
+ const val KEY = "adaptive_connectivity"
+ }
+}
diff --git a/src/com/android/settings/network/AdaptiveConnectivitySettings.java b/src/com/android/settings/network/AdaptiveConnectivitySettings.java
index 5e1dc12..a4e872c 100644
--- a/src/com/android/settings/network/AdaptiveConnectivitySettings.java
+++ b/src/com/android/settings/network/AdaptiveConnectivitySettings.java
@@ -16,6 +16,10 @@
package com.android.settings.network;
import android.app.settings.SettingsEnums;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -30,8 +34,6 @@
private static final String TAG = "AdaptiveConnectivitySettings";
- private static final String KEY_ADAPTIVE_CONNECTIVITY_PREFERENCE = "adaptive_connectivity";
-
@Override
public int getMetricsCategory() {
return SettingsEnums.ADAPTIVE_CONNECTIVITY_CATEGORY;
@@ -49,4 +51,9 @@
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.adaptive_connectivity_settings);
+
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return AdaptiveConnectivityScreen.KEY;
+ }
}
diff --git a/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt b/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt
new file mode 100644
index 0000000..4ce8546
--- /dev/null
+++ b/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED
+import com.android.settings.R
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.KeyedObservableDelegate
+import com.android.settingslib.datastore.SettingsSecureStore
+import com.android.settingslib.datastore.SettingsStore
+import com.android.settingslib.metadata.MainSwitchPreference
+
+// LINT.IfChange
+class AdaptiveConnectivityTogglePreference :
+ MainSwitchPreference(KEY, R.string.adaptive_connectivity_main_switch_title) {
+
+ override fun storage(context: Context): KeyValueStore =
+ AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))
+
+ @Suppress("UNCHECKED_CAST")
+ private class AdaptiveConnectivityToggleStorage(
+ private val context: Context,
+ private val settingsStore: SettingsStore,
+ ) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
+
+ override fun contains(key: String) = settingsStore.contains(KEY)
+
+ override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
+ DEFAULT_VALUE as T
+
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ (settingsStore.getBoolean(key) ?: DEFAULT_VALUE) as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ settingsStore.setBoolean(key, value as Boolean)
+ context.getSystemService(WifiManager::class.java)?.setWifiScoringEnabled(value)
+ }
+ }
+
+ companion object {
+ const val KEY = ADAPTIVE_CONNECTIVITY_ENABLED
+ const val DEFAULT_VALUE = true
+ }
+}
+// LINT.ThenChange(AdaptiveConnectivityTogglePreferenceController.java)
diff --git a/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java b/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java
index ea849f6..e1a3fb4 100644
--- a/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java
+++ b/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java
@@ -29,6 +29,7 @@
* {@link SettingsMainSwitchPreferenceController}
* that controls whether Adaptive connectivity option is enabled.
*/
+// LINT.IfChange
public class AdaptiveConnectivityTogglePreferenceController extends
SettingsMainSwitchPreferenceController {
@@ -69,3 +70,4 @@
return R.string.menu_key_network;
}
}
+// LINT.ThenChange(AdaptiveConnectivityTogglePreference.kt)
diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt
new file mode 100644
index 0000000..5b7903c
--- /dev/null
+++ b/src/com/android/settings/network/AirplaneModePreference.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.Context
+import android.content.pm.PackageManager
+import android.provider.Settings.Global.AIRPLANE_MODE_ON
+import androidx.annotation.DrawableRes
+import com.android.settings.R
+import com.android.settingslib.datastore.SettingsGlobalStore
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.SwitchPreference
+
+// LINT.IfChange
+class AirplaneModePreference :
+ SwitchPreference(AIRPLANE_MODE_ON, R.string.airplane_mode),
+ PreferenceAvailabilityProvider {
+
+ override val icon: Int
+ @DrawableRes get() = R.drawable.ic_airplanemode_active
+
+ override fun storage(context: Context) = SettingsGlobalStore.get(context)
+
+ override fun isAvailable(context: Context) =
+ (context.resources.getBoolean(R.bool.config_show_toggle_airplane)
+ && !context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK))
+}
+// LINT.ThenChange(AirplaneModePreferenceController.java)
diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java
index d4bd4a3..430feb1 100644
--- a/src/com/android/settings/network/AirplaneModePreferenceController.java
+++ b/src/com/android/settings/network/AirplaneModePreferenceController.java
@@ -52,6 +52,7 @@
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
+// LINT.IfChange
public class AirplaneModePreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnStart, OnResume, OnStop, OnDestroy,
AirplaneModeEnabler.OnAirplaneModeChangedListener {
@@ -217,3 +218,4 @@
}
}
}
+// LINT.ThenChange(AirplaneModePreference.kt)
diff --git a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
index b8e18b3..ad02ddb 100644
--- a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
+++ b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
@@ -16,7 +16,6 @@
package com.android.settings.network;
-import android.app.AlertDialog;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -27,13 +26,14 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.system.ResetDashboardFragment;
import com.android.settings.network.telephony.MobileNetworkUtils;
+import com.android.settings.system.ResetDashboardFragment;
public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {
diff --git a/src/com/android/settings/network/MobileNetworkListScreen.kt b/src/com/android/settings/network/MobileNetworkListScreen.kt
index 93d8ee6..2e05e3a 100644
--- a/src/com/android/settings/network/MobileNetworkListScreen.kt
+++ b/src/com/android/settings/network/MobileNetworkListScreen.kt
@@ -16,6 +16,8 @@
package com.android.settings.network
import android.content.Context
+import android.os.UserManager
+import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settings.flags.Flags
import com.android.settingslib.metadata.ProvidePreferenceScreen
@@ -23,7 +25,7 @@
import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen
-class MobileNetworkListScreen : PreferenceScreenCreator {
+class MobileNetworkListScreen : PreferenceScreenCreator, PreferenceRestrictionMixin {
override val key: String
get() = KEY
@@ -36,6 +38,11 @@
override val keywords: Int
get() = R.string.keywords_more_mobile_networks
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
+
override fun isFlagEnabled(context: Context) = Flags.catalystMobileNetworkList()
override fun hasCompleteHierarchy() = false
diff --git a/src/com/android/settings/network/NetworkDashboardScreen.kt b/src/com/android/settings/network/NetworkDashboardScreen.kt
index ad4ca41..3fb2cbe 100644
--- a/src/com/android/settings/network/NetworkDashboardScreen.kt
+++ b/src/com/android/settings/network/NetworkDashboardScreen.kt
@@ -17,6 +17,7 @@
import android.content.Context
import com.android.settings.R
+import com.android.settings.datausage.DataSaverScreen
import com.android.settings.flags.Flags
import com.android.settingslib.metadata.PreferenceIconProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
@@ -43,7 +44,10 @@
override fun fragmentClass() = NetworkDashboardFragment::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) =
+ preferenceHierarchy(this) {
+ +DataSaverScreen.KEY order 10
+ }
companion object {
const val KEY = "network_provider_and_internet_screen"
diff --git a/src/com/android/settings/network/NetworkProviderScreen.kt b/src/com/android/settings/network/NetworkProviderScreen.kt
new file mode 100644
index 0000000..7478761
--- /dev/null
+++ b/src/com/android/settings/network/NetworkProviderScreen.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.Context
+import android.os.UserManager
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class NetworkProviderScreen :
+ PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceRestrictionMixin {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.provider_internet_settings
+
+ override val icon: Int
+ get() = R.drawable.ic_settings_wireless
+
+ override val keywords: Int
+ get() = R.string.keywords_internet
+
+ override fun isAvailable(context: Context) =
+ context.resources.getBoolean(R.bool.config_show_internet_settings)
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_CONFIG_WIFI)
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystInternetSettings()
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun fragmentClass() = NetworkProviderSettings::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ companion object {
+ const val KEY = "internet_settings"
+ }
+}
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 69183ff..455201a 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -64,8 +64,8 @@
import com.android.settings.AirplaneModeEnabler;
import com.android.settings.R;
-import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.location.WifiScanningFragment;
@@ -104,7 +104,7 @@
* UI for Mobile network and Wi-Fi network settings.
*/
@SearchIndexable
-public class NetworkProviderSettings extends RestrictedSettingsFragment
+public class NetworkProviderSettings extends RestrictedDashboardFragment
implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener,
AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener {
@@ -356,9 +356,17 @@
mIsGuest = userManager.isGuestUser();
}
- private void addPreferences() {
- addPreferencesFromResource(R.xml.network_provider_settings);
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.network_provider_settings;
+ }
+
+ private void addPreferences() {
mAirplaneModeMsgPreference = findPreference(PREF_KEY_AIRPLANE_MODE_MSG);
updateAirplaneModeMsgPreference(mAirplaneModeEnabler.isAirplaneModeOn() /* visible */);
mConnectedWifiEntryPreferenceCategory = findPreference(PREF_KEY_CONNECTED_ACCESS_POINTS);
@@ -1500,4 +1508,9 @@
return android.R.attr.colorControlNormal;
}
}
+
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return NetworkProviderScreen.KEY;
+ }
}
diff --git a/src/com/android/settings/network/SimOnboardingActivity.kt b/src/com/android/settings/network/SimOnboardingActivity.kt
index 7fab9c9..8f9cc8f 100644
--- a/src/com/android/settings/network/SimOnboardingActivity.kt
+++ b/src/com/android/settings/network/SimOnboardingActivity.kt
@@ -19,6 +19,7 @@
import android.content.Context
import android.content.Intent
import android.os.Bundle
+import android.os.UserHandle;
import android.provider.Settings
import android.telephony.SubscriptionManager
import android.util.Log
@@ -588,7 +589,7 @@
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
}
- context.startActivity(intent)
+ context.startActivityAsUser(intent, UserHandle.CURRENT)
}
var onboardingService:SimOnboardingService = SimOnboardingService()
diff --git a/src/com/android/settings/network/SimOnboardingService.kt b/src/com/android/settings/network/SimOnboardingService.kt
index e4f17e2..0882b81 100644
--- a/src/com/android/settings/network/SimOnboardingService.kt
+++ b/src/com/android/settings/network/SimOnboardingService.kt
@@ -74,8 +74,11 @@
}
var isEsimProfileEnabled: Boolean = false
get() {
- activeSubInfoList.stream().anyMatch { it.isEmbedded }
- return false
+ return activeSubInfoList.stream().anyMatch { it.isEmbedded }
+ }
+ var isRemovableSimProfileEnabled: Boolean = false
+ get() {
+ return activeSubInfoList.stream().anyMatch { !it.isEmbedded }
}
var doesTargetSimActive = false
get() {
@@ -288,8 +291,8 @@
Log.d(TAG, "Hardware does not support DSDS.")
return false
}
- val isActiveSim = activeSubInfoList.isNotEmpty()
- if (isMultipleEnabledProfilesSupported && isActiveSim) {
+ val anyActiveSim = activeSubInfoList.isNotEmpty()
+ if (isMultipleEnabledProfilesSupported && anyActiveSim) {
Log.d(TAG,
"Device supports MEP and eSIM operation and eSIM profile is enabled."
+ " DSDS condition satisfied."
@@ -297,15 +300,13 @@
return true
}
- if (doesTargetSimHaveEsimOperation) {
- if (UiccSlotRepository(telephonyManager).anyRemovablePhysicalSimEnabled()) {
- Log.d(
- TAG,
- "eSIM operation and removable PSIM is enabled. DSDS condition satisfied."
- )
- return true
- }
- } else if (isEsimProfileEnabled) {
+ if (doesTargetSimHaveEsimOperation && isRemovableSimProfileEnabled) {
+ Log.d(TAG,
+ "eSIM operation and removable PSIM is enabled. DSDS condition satisfied."
+ )
+ return true
+ }
+ if (!doesTargetSimHaveEsimOperation && isEsimProfileEnabled) {
Log.d(TAG,
"Removable SIM operation and eSIM profile is enabled. DSDS condition"
+ " satisfied."
diff --git a/src/com/android/settings/network/VpnPreferenceController.java b/src/com/android/settings/network/VpnPreferenceController.java
index be07809..660fd14 100644
--- a/src/com/android/settings/network/VpnPreferenceController.java
+++ b/src/com/android/settings/network/VpnPreferenceController.java
@@ -26,7 +26,6 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
-import android.provider.SettingsSlicesContract;
import android.security.Credentials;
import android.security.LegacyVpnProfileStore;
import android.util.Log;
@@ -39,7 +38,6 @@
import com.android.internal.net.VpnConfig;
import com.android.internal.net.VpnProfile;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.vpn2.VpnInfoPreference;
import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -50,7 +48,6 @@
import com.android.settingslib.utils.ThreadUtils;
import java.util.Arrays;
-import java.util.List;
import java.util.function.Function;
public class VpnPreferenceController extends AbstractPreferenceController
@@ -87,7 +84,7 @@
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
// Manually set dependencies for Wifi when not toggleable.
if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIFI)) {
- preference.setDependency(SettingsSlicesContract.KEY_AIRPLANE_MODE);
+ preference.setDependency(Settings.Global.AIRPLANE_MODE_ON);
}
return preference;
}
diff --git a/src/com/android/settings/network/apn/ApnEditor.java b/src/com/android/settings/network/apn/ApnEditor.java
index dc9741d..5ae280c 100644
--- a/src/com/android/settings/network/apn/ApnEditor.java
+++ b/src/com/android/settings/network/apn/ApnEditor.java
@@ -16,572 +16,64 @@
package com.android.settings.network.apn;
-import android.app.Dialog;
+import static com.android.settings.network.apn.ApnEditPageProviderKt.EDIT_URL;
+import static com.android.settings.network.apn.ApnEditPageProviderKt.INSERT_URL;
+
import android.app.settings.SettingsEnums;
-import android.content.ContentValues;
-import android.content.Context;
import android.content.Intent;
-import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
-import android.os.PersistableBundle;
import android.os.UserManager;
import android.provider.Telephony;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
import android.util.Log;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnKeyListener;
-import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.app.AlertDialog;
-import androidx.preference.EditTextPreference;
-import androidx.preference.ListPreference;
-import androidx.preference.MultiSelectListPreference;
-import androidx.preference.Preference;
-import androidx.preference.Preference.OnPreferenceChangeListener;
-import androidx.preference.TwoStatePreference;
-import com.android.internal.util.ArrayUtils;
-import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.network.ProxySubscriptionManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import com.android.settings.spa.SpaActivity;
/** Use to edit apn settings. */
-public class ApnEditor extends SettingsPreferenceFragment
- implements OnPreferenceChangeListener, OnKeyListener {
+public class ApnEditor extends SettingsPreferenceFragment {
private static final String TAG = ApnEditor.class.getSimpleName();
- private static final boolean VDBG = false; // STOPSHIP if true
-
- private static final String KEY_AUTH_TYPE = "auth_type";
- private static final String KEY_APN_TYPE = "apn_type";
- private static final String KEY_PROTOCOL = "apn_protocol";
- private static final String KEY_ROAMING_PROTOCOL = "apn_roaming_protocol";
- private static final String KEY_CARRIER_ENABLED = "carrier_enabled";
- private static final String KEY_BEARER_MULTI = "bearer_multi";
- private static final String KEY_MVNO_TYPE = "mvno_type";
- private static final String KEY_PASSWORD = "apn_password";
-
- @VisibleForTesting
- static final int MENU_DELETE = Menu.FIRST;
- private static final int MENU_SAVE = Menu.FIRST + 1;
- private static final int MENU_CANCEL = Menu.FIRST + 2;
-
- @VisibleForTesting
- static String sNotSet;
- @VisibleForTesting
- EditTextPreference mName;
- @VisibleForTesting
- EditTextPreference mApn;
- @VisibleForTesting
- EditTextPreference mProxy;
- @VisibleForTesting
- EditTextPreference mPort;
- @VisibleForTesting
- EditTextPreference mUser;
- @VisibleForTesting
- EditTextPreference mServer;
- @VisibleForTesting
- EditTextPreference mPassword;
- @VisibleForTesting
- EditTextPreference mMmsc;
- @VisibleForTesting
- EditTextPreference mMcc;
- @VisibleForTesting
- EditTextPreference mMnc;
- @VisibleForTesting
- EditTextPreference mMmsProxy;
- @VisibleForTesting
- EditTextPreference mMmsPort;
- @VisibleForTesting
- ListPreference mAuthType;
- @VisibleForTesting
- EditTextPreference mApnType;
- @VisibleForTesting
- ListPreference mProtocol;
- @VisibleForTesting
- ListPreference mRoamingProtocol;
- @VisibleForTesting
- TwoStatePreference mCarrierEnabled;
- @VisibleForTesting
- MultiSelectListPreference mBearerMulti;
- @VisibleForTesting
- ListPreference mMvnoType;
- @VisibleForTesting
- EditTextPreference mMvnoMatchData;
-
- @VisibleForTesting
- ApnData mApnData;
-
- private String mCurMnc;
- private String mCurMcc;
-
- private boolean mNewApn;
- private int mSubId;
- @VisibleForTesting
- ProxySubscriptionManager mProxySubscriptionMgr;
- private int mBearerInitialVal = 0;
- private String mMvnoTypeStr;
- private String mMvnoMatchDataStr;
- @VisibleForTesting
- String[] mReadOnlyApnTypes;
- @VisibleForTesting
- String[] mDefaultApnTypes;
- @VisibleForTesting
- String mDefaultApnProtocol;
- @VisibleForTesting
- String mDefaultApnRoamingProtocol;
- private String[] mReadOnlyApnFields;
- private boolean mReadOnlyApn;
- /**
- * The APN deletion feature within menu is aligned with the APN adding feature.
- * Having only one of them could lead to a UX which not that make sense from user's
- * perspective.
- *
- * mIsAddApnAllowed stores the configuration value reading from
- * CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL to support the presentation
- * control of the menu options. When false, delete option would be invisible to
- * the end user.
- */
- private boolean mIsAddApnAllowed;
- private Uri mCarrierUri;
- private boolean mIsCarrierIdApn;
-
- /**
- * APN types for data connections. These are usage categories for an APN
- * entry. One APN entry may support multiple APN types, eg, a single APN
- * may service regular internet traffic ("default") as well as MMS-specific
- * connections.<br/>
- * APN_TYPE_ALL is a special type to indicate that this APN entry can
- * service all data connections.
- */
- public static final String APN_TYPE_ALL = "*";
- /** APN type for default data traffic */
- public static final String APN_TYPE_DEFAULT = "default";
- /** APN type for MMS traffic */
- public static final String APN_TYPE_MMS = "mms";
- /** APN type for SUPL assisted GPS */
- public static final String APN_TYPE_SUPL = "supl";
- /** APN type for DUN traffic */
- public static final String APN_TYPE_DUN = "dun";
- /** APN type for HiPri traffic */
- public static final String APN_TYPE_HIPRI = "hipri";
- /** APN type for FOTA */
- public static final String APN_TYPE_FOTA = "fota";
- /** APN type for IMS */
- public static final String APN_TYPE_IMS = "ims";
- /** APN type for CBS */
- public static final String APN_TYPE_CBS = "cbs";
- /** APN type for IA Initial Attach APN */
- public static final String APN_TYPE_IA = "ia";
- /** APN type for Emergency PDN. This is not an IA apn, but is used
- * for access to carrier services in an emergency call situation. */
- public static final String APN_TYPE_EMERGENCY = "emergency";
- /** APN type for Mission Critical Services */
- public static final String APN_TYPE_MCX = "mcx";
- /** APN type for XCAP */
- public static final String APN_TYPE_XCAP = "xcap";
- /** APN type for OEM_PAID networks (Automotive PANS) */
- public static final String APN_TYPE_OEM_PAID = "oem_paid";
- /** APN type for OEM_PRIVATE networks (Automotive PANS) */
- public static final String APN_TYPE_OEM_PRIVATE = "oem_private";
- /** Array of all APN types */
- public static final String[] APN_TYPES = {APN_TYPE_DEFAULT,
- APN_TYPE_MMS,
- APN_TYPE_SUPL,
- APN_TYPE_DUN,
- APN_TYPE_HIPRI,
- APN_TYPE_FOTA,
- APN_TYPE_IMS,
- APN_TYPE_CBS,
- APN_TYPE_IA,
- APN_TYPE_EMERGENCY,
- APN_TYPE_MCX,
- APN_TYPE_XCAP,
- APN_TYPE_OEM_PAID,
- APN_TYPE_OEM_PRIVATE,
- };
-
- /** Array of APN types that are never user-editable */
- private static final String[] ALWAYS_READ_ONLY_APN_TYPES = new String[] {
- APN_TYPE_OEM_PAID,
- APN_TYPE_OEM_PRIVATE,
- };
-
- /**
- * Standard projection for the interesting columns of a normal note.
- */
- private static final String[] sProjection = new String[] {
- Telephony.Carriers._ID, // 0
- Telephony.Carriers.NAME, // 1
- Telephony.Carriers.APN, // 2
- Telephony.Carriers.PROXY, // 3
- Telephony.Carriers.PORT, // 4
- Telephony.Carriers.USER, // 5
- Telephony.Carriers.SERVER, // 6
- Telephony.Carriers.PASSWORD, // 7
- Telephony.Carriers.MMSC, // 8
- Telephony.Carriers.MCC, // 9
- Telephony.Carriers.MNC, // 10
- Telephony.Carriers.NUMERIC, // 11
- Telephony.Carriers.MMSPROXY, // 12
- Telephony.Carriers.MMSPORT, // 13
- Telephony.Carriers.AUTH_TYPE, // 14
- Telephony.Carriers.TYPE, // 15
- Telephony.Carriers.PROTOCOL, // 16
- Telephony.Carriers.CARRIER_ENABLED, // 17
- Telephony.Carriers.BEARER, // 18
- Telephony.Carriers.BEARER_BITMASK, // 19
- Telephony.Carriers.ROAMING_PROTOCOL, // 20
- Telephony.Carriers.MVNO_TYPE, // 21
- Telephony.Carriers.MVNO_MATCH_DATA, // 22
- Telephony.Carriers.EDITED_STATUS, // 23
- Telephony.Carriers.USER_EDITABLE, // 24
- Telephony.Carriers.CARRIER_ID // 25
- };
-
- private static final int ID_INDEX = 0;
- @VisibleForTesting
- static final int NAME_INDEX = 1;
- @VisibleForTesting
- static final int APN_INDEX = 2;
- private static final int PROXY_INDEX = 3;
- private static final int PORT_INDEX = 4;
- private static final int USER_INDEX = 5;
- private static final int SERVER_INDEX = 6;
- private static final int PASSWORD_INDEX = 7;
- private static final int MMSC_INDEX = 8;
- @VisibleForTesting
- static final int MCC_INDEX = 9;
- @VisibleForTesting
- static final int MNC_INDEX = 10;
- private static final int MMSPROXY_INDEX = 12;
- private static final int MMSPORT_INDEX = 13;
- private static final int AUTH_TYPE_INDEX = 14;
- @VisibleForTesting
- static final int TYPE_INDEX = 15;
- @VisibleForTesting
- static final int PROTOCOL_INDEX = 16;
- @VisibleForTesting
- static final int CARRIER_ENABLED_INDEX = 17;
- private static final int BEARER_INDEX = 18;
- private static final int BEARER_BITMASK_INDEX = 19;
- @VisibleForTesting
- static final int ROAMING_PROTOCOL_INDEX = 20;
- private static final int MVNO_TYPE_INDEX = 21;
- private static final int MVNO_MATCH_DATA_INDEX = 22;
- private static final int EDITED_INDEX = 23;
- private static final int USER_EDITABLE_INDEX = 24;
- private static final int CARRIER_ID_INDEX = 25;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ maybeRedirectToNewPage();
+ finish();
+ }
+
+ private void maybeRedirectToNewPage() {
if (isUserRestricted()) {
Log.e(TAG, "This setting isn't available due to user restriction.");
- finish();
return;
}
- setLifecycleForAllControllers();
-
final Intent intent = getIntent();
final String action = intent.getAction();
- if (TextUtils.isEmpty(action)) {
- finish();
- return;
- }
- mSubId = intent.getIntExtra(ApnSettings.SUB_ID,
- SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- initApnEditorUi();
- getCarrierCustomizedConfig(getContext());
+ int subId =
+ intent.getIntExtra(ApnSettings.SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- Uri uri = null;
- if (action.equals(Intent.ACTION_EDIT)) {
- uri = intent.getData();
+ Uri uri = intent.getData();
+ if (Intent.ACTION_EDIT.equals(action)) {
if (!uri.isPathPrefixMatch(Telephony.Carriers.CONTENT_URI)) {
Log.e(TAG, "Edit request not for carrier table. Uri: " + uri);
- finish();
- return;
+ } else {
+ String route = ApnEditPageProvider.INSTANCE.getRoute(EDIT_URL, uri, subId);
+ SpaActivity.startSpaActivity(requireContext(), route);
}
- } else if (action.equals(Intent.ACTION_INSERT)) {
- mCarrierUri = intent.getData();
- if (!mCarrierUri.isPathPrefixMatch(Telephony.Carriers.CONTENT_URI)) {
- Log.e(TAG, "Insert request not for carrier table. Uri: " + mCarrierUri);
- finish();
- return;
- }
- mNewApn = true;
- mMvnoTypeStr = intent.getStringExtra(ApnSettings.MVNO_TYPE);
- mMvnoMatchDataStr = intent.getStringExtra(ApnSettings.MVNO_MATCH_DATA);
- } else {
- finish();
- return;
- }
-
- // Creates an ApnData to store the apn data temporary, so that we don't need the cursor to
- // get the apn data. The uri is null if the action is ACTION_INSERT, that mean there is no
- // record in the database, so create a empty ApnData to represent a empty row of database.
- if (uri != null) {
- mApnData = getApnDataFromUri(uri);
- } else {
- mApnData = new ApnData(sProjection.length);
- }
- final int carrierId = mApnData.getInteger(CARRIER_ID_INDEX,
- TelephonyManager.UNKNOWN_CARRIER_ID);
- mIsCarrierIdApn = (carrierId > TelephonyManager.UNKNOWN_CARRIER_ID);
-
- final boolean isUserEdited = mApnData.getInteger(EDITED_INDEX,
- Telephony.Carriers.USER_EDITED) == Telephony.Carriers.USER_EDITED;
-
- Log.d(TAG, "onCreate: EDITED " + isUserEdited);
- // if it's not a USER_EDITED apn, check if it's read-only
- if (!isUserEdited && (mApnData.getInteger(USER_EDITABLE_INDEX, 1) == 0
- || apnTypesMatch(mReadOnlyApnTypes, mApnData.getString(TYPE_INDEX)))) {
- Log.d(TAG, "onCreate: apnTypesMatch; read-only APN");
- mReadOnlyApn = true;
- disableAllFields();
- } else if (!ArrayUtils.isEmpty(mReadOnlyApnFields)) {
- disableFields(mReadOnlyApnFields);
- }
- // Make sure that a user cannot break carrier id APN matching
- if (mIsCarrierIdApn) {
- disableFieldsForCarrieridApn();
- }
-
- for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
- getPreferenceScreen().getPreference(i).setOnPreferenceChangeListener(this);
- }
- }
-
- /**
- * Fetch complete list of read only APN types.
- *
- * The list primarily comes from carrier config, but is also supplied by APN types which are
- * always read only.
- */
- static String[] getReadOnlyApnTypes(PersistableBundle b) {
- String[] carrierReadOnlyApnTypes = b.getStringArray(
- CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY);
- return ArrayUtils.concat(String.class, carrierReadOnlyApnTypes, ALWAYS_READ_ONLY_APN_TYPES);
- }
-
- /**
- * Enable ProxySubscriptionMgr with Lifecycle support for all controllers
- * live within this fragment
- */
- private void setLifecycleForAllControllers() {
- if (mProxySubscriptionMgr == null) {
- mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(getContext());
- }
- mProxySubscriptionMgr.setLifecycle(getLifecycle());
- }
-
- @Override
- public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
- super.onViewStateRestored(savedInstanceState);
- fillUI(savedInstanceState == null);
- setCarrierCustomizedConfigToUi();
- }
-
- @VisibleForTesting
- static String formatInteger(String value) {
- try {
- final int intValue = Integer.parseInt(value);
- return String.format(getCorrectDigitsFormat(value), intValue);
- } catch (NumberFormatException e) {
- return value;
- }
- }
-
- /**
- * Get the digits format so we preserve leading 0's.
- * MCCs are 3 digits and MNCs are either 2 or 3.
- */
- static String getCorrectDigitsFormat(String value) {
- if (value.length() == 2) return "%02d";
- else return "%03d";
- }
-
-
- /**
- * Check if passed in array of APN types indicates all APN types
- * @param apnTypes array of APN types. "*" indicates all types.
- * @return true if all apn types are included in the array, false otherwise
- */
- static boolean hasAllApns(String[] apnTypes) {
- if (ArrayUtils.isEmpty(apnTypes)) {
- return false;
- }
-
- final List apnList = Arrays.asList(apnTypes);
- if (apnList.contains(APN_TYPE_ALL)) {
- Log.d(TAG, "hasAllApns: true because apnList.contains(APN_TYPE_ALL)");
- return true;
- }
- for (String apn : APN_TYPES) {
- if (!apnList.contains(apn)) {
- return false;
+ } else if (Intent.ACTION_INSERT.equals(action)) {
+ if (!uri.isPathPrefixMatch(Telephony.Carriers.CONTENT_URI)) {
+ Log.e(TAG, "Insert request not for carrier table. Uri: " + uri);
+ } else {
+ String route = ApnEditPageProvider.INSTANCE.getRoute(
+ INSERT_URL, Telephony.Carriers.CONTENT_URI, subId);
+ SpaActivity.startSpaActivity(getContext(), route);
}
}
-
- Log.d(TAG, "hasAllApns: true");
- return true;
- }
-
- /**
- * Check if APN types overlap.
- * @param apnTypesArray1 array of APNs. Empty array indicates no APN type; "*" indicates all
- * types
- * @param apnTypes2 comma separated string of APN types. Empty string represents all types.
- * @return if any apn type matches return true, otherwise return false
- */
- private boolean apnTypesMatch(String[] apnTypesArray1, String apnTypes2) {
- if (ArrayUtils.isEmpty(apnTypesArray1)) {
- return false;
- }
-
- final String[] apnTypesArray1LowerCase = new String[apnTypesArray1.length];
- for (int i = 0; i < apnTypesArray1.length; i++) {
- apnTypesArray1LowerCase[i] = apnTypesArray1[i].toLowerCase();
- }
-
- if (hasAllApns(apnTypesArray1LowerCase) || TextUtils.isEmpty(apnTypes2)) {
- return true;
- }
-
- final List apnTypesList1 = Arrays.asList(apnTypesArray1LowerCase);
- final String[] apnTypesArray2 = apnTypes2.split(",");
-
- for (String apn : apnTypesArray2) {
- if (apnTypesList1.contains(apn.trim().toLowerCase())) {
- Log.d(TAG, "apnTypesMatch: true because match found for " + apn.trim());
- return true;
- }
- }
-
- Log.d(TAG, "apnTypesMatch: false");
- return false;
- }
-
- /**
- * Function to get Preference obj corresponding to an apnField
- * @param apnField apn field name for which pref is needed
- * @return Preference obj corresponding to passed in apnField
- */
- private Preference getPreferenceFromFieldName(String apnField) {
- switch (apnField) {
- case Telephony.Carriers.NAME:
- return mName;
- case Telephony.Carriers.APN:
- return mApn;
- case Telephony.Carriers.PROXY:
- return mProxy;
- case Telephony.Carriers.PORT:
- return mPort;
- case Telephony.Carriers.USER:
- return mUser;
- case Telephony.Carriers.SERVER:
- return mServer;
- case Telephony.Carriers.PASSWORD:
- return mPassword;
- case Telephony.Carriers.MMSPROXY:
- return mMmsProxy;
- case Telephony.Carriers.MMSPORT:
- return mMmsPort;
- case Telephony.Carriers.MMSC:
- return mMmsc;
- case Telephony.Carriers.MCC:
- return mMcc;
- case Telephony.Carriers.MNC:
- return mMnc;
- case Telephony.Carriers.TYPE:
- return mApnType;
- case Telephony.Carriers.AUTH_TYPE:
- return mAuthType;
- case Telephony.Carriers.PROTOCOL:
- return mProtocol;
- case Telephony.Carriers.ROAMING_PROTOCOL:
- return mRoamingProtocol;
- case Telephony.Carriers.CARRIER_ENABLED:
- return mCarrierEnabled;
- case Telephony.Carriers.BEARER:
- case Telephony.Carriers.BEARER_BITMASK:
- return mBearerMulti;
- case Telephony.Carriers.MVNO_TYPE:
- return mMvnoType;
- case Telephony.Carriers.MVNO_MATCH_DATA:
- return mMvnoMatchData;
- }
- return null;
- }
-
- /**
- * Disables given fields so that user cannot modify them
- *
- * @param apnFields fields to be disabled
- */
- private void disableFields(String[] apnFields) {
- for (String apnField : apnFields) {
- final Preference preference = getPreferenceFromFieldName(apnField);
- if (preference != null) {
- preference.setEnabled(false);
- }
- }
- }
-
- /**
- * Disables all fields so that user cannot modify the APN
- */
- private void disableAllFields() {
- mName.setEnabled(false);
- mApn.setEnabled(false);
- mProxy.setEnabled(false);
- mPort.setEnabled(false);
- mUser.setEnabled(false);
- mServer.setEnabled(false);
- mPassword.setEnabled(false);
- mMmsProxy.setEnabled(false);
- mMmsPort.setEnabled(false);
- mMmsc.setEnabled(false);
- mMcc.setEnabled(false);
- mMnc.setEnabled(false);
- mApnType.setEnabled(false);
- mAuthType.setEnabled(false);
- mProtocol.setEnabled(false);
- mRoamingProtocol.setEnabled(false);
- mCarrierEnabled.setEnabled(false);
- mBearerMulti.setEnabled(false);
- mMvnoType.setEnabled(false);
- mMvnoMatchData.setEnabled(false);
- }
-
- /**
- * Disables fields for a carrier id APN to avoid breaking the match criteria
- */
- private void disableFieldsForCarrieridApn() {
- mMcc.setEnabled(false);
- mMnc.setEnabled(false);
- mMvnoType.setEnabled(false);
- mMvnoMatchData.setEnabled(false);
}
@Override
@@ -590,903 +82,6 @@
}
@VisibleForTesting
- void fillUI(boolean firstTime) {
- if (firstTime) {
- // Fill in all the values from the db in both text editor and summary
- mName.setText(mApnData.getString(NAME_INDEX));
- mApn.setText(mApnData.getString(APN_INDEX));
- mProxy.setText(mApnData.getString(PROXY_INDEX));
- mPort.setText(mApnData.getString(PORT_INDEX));
- mUser.setText(mApnData.getString(USER_INDEX));
- mServer.setText(mApnData.getString(SERVER_INDEX));
- mPassword.setText(mApnData.getString(PASSWORD_INDEX));
- mMmsProxy.setText(mApnData.getString(MMSPROXY_INDEX));
- mMmsPort.setText(mApnData.getString(MMSPORT_INDEX));
- mMmsc.setText(mApnData.getString(MMSC_INDEX));
- mMcc.setText(mApnData.getString(MCC_INDEX));
- mMnc.setText(mApnData.getString(MNC_INDEX));
- mApnType.setText(mApnData.getString(TYPE_INDEX));
- if (mNewApn) {
- final SubscriptionInfo subInfo =
- mProxySubscriptionMgr.getAccessibleSubscriptionInfo(mSubId);
-
- // Country code
- final String mcc = (subInfo == null) ? null : subInfo.getMccString();
- // Network code
- final String mnc = (subInfo == null) ? null : subInfo.getMncString();
-
- if (!TextUtils.isEmpty(mcc)) {
- // Auto populate MNC and MCC for new entries, based on what SIM reports
- mMcc.setText(mcc);
- mMnc.setText(mnc);
- mCurMnc = mnc;
- mCurMcc = mcc;
- }
- }
- final int authVal = mApnData.getInteger(AUTH_TYPE_INDEX, -1);
- if (authVal != -1) {
- mAuthType.setValueIndex(authVal);
- } else {
- mAuthType.setValue(null);
- }
-
- mProtocol.setValue(mApnData.getString(PROTOCOL_INDEX));
- mRoamingProtocol.setValue(mApnData.getString(ROAMING_PROTOCOL_INDEX));
- mCarrierEnabled.setChecked(mApnData.getInteger(CARRIER_ENABLED_INDEX, 1) == 1);
- mBearerInitialVal = mApnData.getInteger(BEARER_INDEX, 0);
-
- final HashSet<String> bearers = new HashSet<String>();
- int bearerBitmask = mApnData.getInteger(BEARER_BITMASK_INDEX, 0);
- if (bearerBitmask == 0) {
- if (mBearerInitialVal == 0) {
- bearers.add("" + 0);
- }
- } else {
- int i = 1;
- while (bearerBitmask != 0) {
- if ((bearerBitmask & 1) == 1) {
- bearers.add("" + i);
- }
- bearerBitmask >>= 1;
- i++;
- }
- }
-
- if (mBearerInitialVal != 0 && !bearers.contains("" + mBearerInitialVal)) {
- // add mBearerInitialVal to bearers
- bearers.add("" + mBearerInitialVal);
- }
- mBearerMulti.setValues(bearers);
-
- mMvnoType.setValue(mApnData.getString(MVNO_TYPE_INDEX));
- mMvnoMatchData.setEnabled(false);
- mMvnoMatchData.setText(mApnData.getString(MVNO_MATCH_DATA_INDEX));
- if (mNewApn && mMvnoTypeStr != null && mMvnoMatchDataStr != null) {
- mMvnoType.setValue(mMvnoTypeStr);
- mMvnoMatchData.setText(mMvnoMatchDataStr);
- }
- }
-
- mName.setSummary(checkNull(mName.getText()));
- mApn.setSummary(checkNull(mApn.getText()));
- mProxy.setSummary(checkNull(mProxy.getText()));
- mPort.setSummary(checkNull(mPort.getText()));
- mUser.setSummary(checkNull(mUser.getText()));
- mServer.setSummary(checkNull(mServer.getText()));
- mPassword.setSummary(starify(mPassword.getText()));
- mMmsProxy.setSummary(checkNull(mMmsProxy.getText()));
- mMmsPort.setSummary(checkNull(mMmsPort.getText()));
- mMmsc.setSummary(checkNull(mMmsc.getText()));
- mMcc.setSummary(formatInteger(checkNull(mMcc.getText())));
- mMnc.setSummary(formatInteger(checkNull(mMnc.getText())));
- mApnType.setSummary(checkNull(mApnType.getText()));
-
- final String authVal = mAuthType.getValue();
- if (authVal != null) {
- final int authValIndex = Integer.parseInt(authVal);
- mAuthType.setValueIndex(authValIndex);
-
- final String[] values = getResources().getStringArray(R.array.apn_auth_entries);
- mAuthType.setSummary(values[authValIndex]);
- } else {
- mAuthType.setSummary(sNotSet);
- }
-
- mProtocol.setSummary(checkNull(protocolDescription(mProtocol.getValue(), mProtocol)));
- mRoamingProtocol.setSummary(
- checkNull(protocolDescription(mRoamingProtocol.getValue(), mRoamingProtocol)));
- mBearerMulti.setSummary(
- checkNull(bearerMultiDescription(mBearerMulti.getValues())));
- mMvnoType.setSummary(
- checkNull(mvnoDescription(mMvnoType.getValue())));
- mMvnoMatchData.setSummary(checkNullforMvnoValue(mMvnoMatchData.getText()));
- // allow user to edit carrier_enabled for some APN
- final boolean ceEditable = getResources().getBoolean(
- R.bool.config_allow_edit_carrier_enabled);
- if (ceEditable) {
- mCarrierEnabled.setEnabled(true);
- } else {
- mCarrierEnabled.setEnabled(false);
- }
- }
-
- /**
- * Returns the UI choice (e.g., "IPv4/IPv6") corresponding to the given
- * raw value of the protocol preference (e.g., "IPV4V6"). If unknown,
- * return null.
- */
- private String protocolDescription(String raw, ListPreference protocol) {
- String uRaw = checkNull(raw).toUpperCase();
- uRaw = uRaw.equals("IPV4") ? "IP" : uRaw;
- final int protocolIndex = protocol.findIndexOfValue(uRaw);
- if (protocolIndex == -1) {
- return null;
- } else {
- final String[] values = getResources().getStringArray(R.array.apn_protocol_entries);
- try {
- return values[protocolIndex];
- } catch (ArrayIndexOutOfBoundsException e) {
- return null;
- }
- }
- }
-
- private String bearerMultiDescription(Set<String> raw) {
- final String[] values = getResources().getStringArray(R.array.bearer_entries);
- final StringBuilder retVal = new StringBuilder();
- boolean first = true;
- for (String bearer : raw) {
- int bearerIndex = mBearerMulti.findIndexOfValue(bearer);
- try {
- if (first) {
- retVal.append(values[bearerIndex]);
- first = false;
- } else {
- retVal.append(", " + values[bearerIndex]);
- }
- } catch (ArrayIndexOutOfBoundsException e) {
- // ignore
- }
- }
- final String val = retVal.toString();
- if (!TextUtils.isEmpty(val)) {
- return val;
- }
- return null;
- }
-
- private String mvnoDescription(String newValue) {
- final int mvnoIndex = mMvnoType.findIndexOfValue(newValue);
- final String oldValue = mMvnoType.getValue();
-
- if (mvnoIndex == -1) {
- return null;
- } else {
- final String[] values = getResources().getStringArray(R.array.mvno_type_entries);
- final boolean mvnoMatchDataUneditable =
- mReadOnlyApn || (mReadOnlyApnFields != null
- && Arrays.asList(mReadOnlyApnFields)
- .contains(Telephony.Carriers.MVNO_MATCH_DATA));
- mMvnoMatchData.setEnabled(!mvnoMatchDataUneditable && mvnoIndex != 0);
- if (newValue != null && !newValue.equals(oldValue)) {
- if (values[mvnoIndex].equals("SPN")) {
- TelephonyManager telephonyManager = (TelephonyManager)
- getContext().getSystemService(TelephonyManager.class);
- final TelephonyManager telephonyManagerForSubId =
- telephonyManager.createForSubscriptionId(mSubId);
- if (telephonyManagerForSubId != null) {
- telephonyManager = telephonyManagerForSubId;
- }
- mMvnoMatchData.setText(telephonyManager.getSimOperatorName());
- } else if (values[mvnoIndex].equals("IMSI")) {
- final SubscriptionInfo subInfo =
- mProxySubscriptionMgr.getAccessibleSubscriptionInfo(mSubId);
- final String mcc = (subInfo == null) ? "" :
- Objects.toString(subInfo.getMccString(), "");
- final String mnc = (subInfo == null) ? "" :
- Objects.toString(subInfo.getMncString(), "");
- mMvnoMatchData.setText(mcc + mnc + "x");
- } else if (values[mvnoIndex].equals("GID")) {
- TelephonyManager telephonyManager = (TelephonyManager)
- getContext().getSystemService(TelephonyManager.class);
- final TelephonyManager telephonyManagerForSubId =
- telephonyManager.createForSubscriptionId(mSubId);
- if (telephonyManagerForSubId != null) {
- telephonyManager = telephonyManagerForSubId;
- }
- mMvnoMatchData.setText(telephonyManager.getGroupIdLevel1());
- } else {
- // mvno type 'none' case. At this time, mvnoIndex should be 0.
- mMvnoMatchData.setText("");
- }
- }
-
- try {
- return values[mvnoIndex];
- } catch (ArrayIndexOutOfBoundsException e) {
- return null;
- }
- }
- }
- /**
- * Callback when preference status changed.
- */
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- String key = preference.getKey();
- if (KEY_AUTH_TYPE.equals(key)) {
- try {
- final int index = Integer.parseInt((String) newValue);
- mAuthType.setValueIndex(index);
-
- final String[] values = getResources().getStringArray(R.array.apn_auth_entries);
- mAuthType.setSummary(values[index]);
- } catch (NumberFormatException e) {
- return false;
- }
- } else if (KEY_APN_TYPE.equals(key)) {
- String data = (TextUtils.isEmpty((String) newValue)
- && !ArrayUtils.isEmpty(mDefaultApnTypes))
- ? getEditableApnType(mDefaultApnTypes) : (String) newValue;
- if (!TextUtils.isEmpty(data)) {
- mApnType.setSummary(data);
- }
- } else if (KEY_PROTOCOL.equals(key)) {
- final String protocol = protocolDescription((String) newValue, mProtocol);
- if (protocol == null) {
- return false;
- }
- mProtocol.setSummary(protocol);
- mProtocol.setValue((String) newValue);
- } else if (KEY_ROAMING_PROTOCOL.equals(key)) {
- final String protocol = protocolDescription((String) newValue, mRoamingProtocol);
- if (protocol == null) {
- return false;
- }
- mRoamingProtocol.setSummary(protocol);
- mRoamingProtocol.setValue((String) newValue);
- } else if (KEY_BEARER_MULTI.equals(key)) {
- final String bearer = bearerMultiDescription((Set<String>) newValue);
- if (bearer == null) {
- return false;
- }
- mBearerMulti.setValues((Set<String>) newValue);
- mBearerMulti.setSummary(bearer);
- } else if (KEY_MVNO_TYPE.equals(key)) {
- final String mvno = mvnoDescription((String) newValue);
- if (mvno == null) {
- return false;
- }
- mMvnoType.setValue((String) newValue);
- mMvnoType.setSummary(mvno);
- mMvnoMatchData.setSummary(checkNullforMvnoValue(mMvnoMatchData.getText()));
- } else if (KEY_PASSWORD.equals(key)) {
- mPassword.setSummary(starify(newValue != null ? String.valueOf(newValue) : ""));
- } else if (KEY_CARRIER_ENABLED.equals(key)) {
- // do nothing
- } else {
- preference.setSummary(checkNull(newValue != null ? String.valueOf(newValue) : null));
- }
- return true;
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- // If it's a new APN, then cancel will delete the new entry in onPause
- // If APN add is not allowed, delete might lead to issue regarding recovery
- if (!mNewApn && !mReadOnlyApn && mIsAddApnAllowed) {
- menu.add(0, MENU_DELETE, 0, R.string.menu_delete)
- .setIcon(R.drawable.ic_delete);
- }
- if (!mReadOnlyApn) {
- menu.add(0, MENU_SAVE, 0, R.string.menu_save)
- .setIcon(android.R.drawable.ic_menu_save);
- }
- menu.add(0, MENU_CANCEL, 0, R.string.menu_cancel)
- .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case MENU_DELETE:
- deleteApn();
- finish();
- return true;
- case MENU_SAVE:
- if (validateAndSaveApnData()) {
- finish();
- }
- return true;
- case MENU_CANCEL:
- finish();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- view.setOnKeyListener(this);
- view.setFocusableInTouchMode(true);
- view.requestFocus();
- }
-
- /**
- * Try to save the apn data when pressed the back button. An error message will be displayed if
- * the apn data is invalid.
- *
- * TODO(b/77339593): Try to keep the same behavior between back button and up navigate button.
- * We will save the valid apn data to the database when pressed the back button, but discard all
- * user changed when pressed the up navigate button.
- */
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (event.getAction() != KeyEvent.ACTION_DOWN) return false;
- switch (keyCode) {
- case KeyEvent.KEYCODE_BACK: {
- if (validateAndSaveApnData()) {
- finish();
- }
- return true;
- }
- }
- return false;
- }
-
- /**
- * Add key, value to {@code cv} and compare the value against the value at index in
- * {@link #mApnData}.
- *
- * <p>
- * The key, value will not add to {@code cv} if value is null.
- *
- * @return true if values are different. {@code assumeDiff} indicates if values can be assumed
- * different in which case no comparison is needed.
- */
- boolean setStringValueAndCheckIfDiff(
- ContentValues cv, String key, String value, boolean assumeDiff, int index) {
- final String valueFromLocalCache = mApnData.getString(index);
- if (VDBG) {
- Log.d(TAG, "setStringValueAndCheckIfDiff: assumeDiff: " + assumeDiff
- + " key: " + key
- + " value: '" + value
- + "' valueFromDb: '" + valueFromLocalCache + "'");
- }
- final boolean isDiff = assumeDiff
- || !((TextUtils.isEmpty(value) && TextUtils.isEmpty(valueFromLocalCache))
- || (value != null && value.equals(valueFromLocalCache)));
-
- if (isDiff && value != null) {
- cv.put(key, value);
- }
- return isDiff;
- }
-
- /**
- * Add key, value to {@code cv} and compare the value against the value at index in
- * {@link #mApnData}.
- *
- * @return true if values are different. {@code assumeDiff} indicates if values can be assumed
- * different in which case no comparison is needed.
- */
- boolean setIntValueAndCheckIfDiff(
- ContentValues cv, String key, int value, boolean assumeDiff, int index) {
- final Integer valueFromLocalCache = mApnData.getInteger(index);
- if (VDBG) {
- Log.d(TAG, "setIntValueAndCheckIfDiff: assumeDiff: " + assumeDiff
- + " key: " + key
- + " value: '" + value
- + "' valueFromDb: '" + valueFromLocalCache + "'");
- }
-
- final boolean isDiff = assumeDiff || value != valueFromLocalCache;
- if (isDiff) {
- cv.put(key, value);
- }
- return isDiff;
- }
-
- /**
- * Validates the apn data and save it to the database if it's valid.
- *
- * <p>
- * A dialog with error message will be displayed if the APN data is invalid.
- *
- * @return true if there is no error
- */
- @VisibleForTesting
- boolean validateAndSaveApnData() {
- // Nothing to do if it's a read only APN
- if (mReadOnlyApn) {
- return true;
- }
-
- final String name = checkNotSet(mName.getText());
- final String apn = checkNotSet(mApn.getText());
- final String mcc = checkNotSet(mMcc.getText());
- final String mnc = checkNotSet(mMnc.getText());
-
- final String errorMsg = validateApnData();
- if (errorMsg != null) {
- showError();
- return false;
- }
-
- final ContentValues values = new ContentValues();
- // call update() if it's a new APN. If not, check if any field differs from the db value;
- // if any diff is found update() should be called
- boolean callUpdate = mNewApn;
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.NAME,
- name,
- callUpdate,
- NAME_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.APN,
- apn,
- callUpdate,
- APN_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.PROXY,
- checkNotSet(mProxy.getText()),
- callUpdate,
- PROXY_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.PORT,
- checkNotSet(mPort.getText()),
- callUpdate,
- PORT_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MMSPROXY,
- checkNotSet(mMmsProxy.getText()),
- callUpdate,
- MMSPROXY_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MMSPORT,
- checkNotSet(mMmsPort.getText()),
- callUpdate,
- MMSPORT_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.USER,
- checkNotSet(mUser.getText()),
- callUpdate,
- USER_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.SERVER,
- checkNotSet(mServer.getText()),
- callUpdate,
- SERVER_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.PASSWORD,
- checkNotSet(mPassword.getText()),
- callUpdate,
- PASSWORD_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MMSC,
- checkNotSet(mMmsc.getText()),
- callUpdate,
- MMSC_INDEX);
-
- final String authVal = mAuthType.getValue();
- if (authVal != null) {
- callUpdate = setIntValueAndCheckIfDiff(values,
- Telephony.Carriers.AUTH_TYPE,
- Integer.parseInt(authVal),
- callUpdate,
- AUTH_TYPE_INDEX);
- }
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.PROTOCOL,
- checkNotSet(mProtocol.getValue()),
- callUpdate,
- PROTOCOL_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.ROAMING_PROTOCOL,
- checkNotSet(mRoamingProtocol.getValue()),
- callUpdate,
- ROAMING_PROTOCOL_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.TYPE,
- checkNotSet(getUserEnteredApnType()),
- callUpdate,
- TYPE_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MCC,
- mcc,
- callUpdate,
- MCC_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MNC,
- mnc,
- callUpdate,
- MNC_INDEX);
-
- values.put(Telephony.Carriers.NUMERIC, mcc + mnc);
-
- if (mCurMnc != null && mCurMcc != null) {
- if (mCurMnc.equals(mnc) && mCurMcc.equals(mcc)) {
- values.put(Telephony.Carriers.CURRENT, 1);
- }
- }
-
- final Set<String> bearerSet = mBearerMulti.getValues();
- int bearerBitmask = 0;
- for (String bearer : bearerSet) {
- if (Integer.parseInt(bearer) == 0) {
- bearerBitmask = 0;
- break;
- } else {
- bearerBitmask |= getBitmaskForTech(Integer.parseInt(bearer));
- }
- }
- callUpdate = setIntValueAndCheckIfDiff(values,
- Telephony.Carriers.BEARER_BITMASK,
- bearerBitmask,
- callUpdate,
- BEARER_BITMASK_INDEX);
-
- int bearerVal;
- if (bearerBitmask == 0 || mBearerInitialVal == 0) {
- bearerVal = 0;
- } else if (bitmaskHasTech(bearerBitmask, mBearerInitialVal)) {
- bearerVal = mBearerInitialVal;
- } else {
- // bearer field was being used but bitmask has changed now and does not include the
- // initial bearer value -- setting bearer to 0 but maybe better behavior is to choose a
- // random tech from the new bitmask??
- bearerVal = 0;
- }
- callUpdate = setIntValueAndCheckIfDiff(values,
- Telephony.Carriers.BEARER,
- bearerVal,
- callUpdate,
- BEARER_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MVNO_TYPE,
- checkNotSet(mMvnoType.getValue()),
- callUpdate,
- MVNO_TYPE_INDEX);
-
- callUpdate = setStringValueAndCheckIfDiff(values,
- Telephony.Carriers.MVNO_MATCH_DATA,
- checkNotSet(mMvnoMatchData.getText()),
- callUpdate,
- MVNO_MATCH_DATA_INDEX);
-
- callUpdate = setIntValueAndCheckIfDiff(values,
- Telephony.Carriers.CARRIER_ENABLED,
- mCarrierEnabled.isChecked() ? 1 : 0,
- callUpdate,
- CARRIER_ENABLED_INDEX);
-
- values.put(Telephony.Carriers.EDITED_STATUS, Telephony.Carriers.USER_EDITED);
-
- if (callUpdate) {
- final Uri uri = mApnData.getUri() == null ? mCarrierUri : mApnData.getUri();
- updateApnDataToDatabase(uri, values);
- } else {
- if (VDBG) Log.d(TAG, "validateAndSaveApnData: not calling update()");
- }
-
- return true;
- }
-
- private void updateApnDataToDatabase(Uri uri, ContentValues values) {
- ThreadUtils.postOnBackgroundThread(() -> {
- if (uri.equals(mCarrierUri)) {
- // Add a new apn to the database
- final Uri newUri = getContentResolver().insert(mCarrierUri, values);
- if (newUri == null) {
- Log.e(TAG, "Can't add a new apn to database " + mCarrierUri);
- }
- } else {
- // Update the existing apn
- getContentResolver().update(
- uri, values, null /* where */, null /* selection Args */);
- }
- });
- }
-
- /**
- * Validates whether the apn data is valid.
- *
- * @return An error message if the apn data is invalid, otherwise return null.
- */
- @VisibleForTesting
- String validateApnData() {
- String errorMsg = null;
-
- final String name = checkNotSet(mName.getText());
- final String apn = checkNotSet(mApn.getText());
- final String mcc = checkNotSet(mMcc.getText());
- final String mnc = checkNotSet(mMnc.getText());
- boolean doNotCheckMccMnc = mIsCarrierIdApn && TextUtils.isEmpty(mcc)
- && TextUtils.isEmpty(mnc);
- if (TextUtils.isEmpty(name)) {
- errorMsg = getResources().getString(R.string.error_name_empty);
- } else if (TextUtils.isEmpty(apn)) {
- errorMsg = getResources().getString(R.string.error_apn_empty);
- } else if (doNotCheckMccMnc) {
- Log.d(TAG, "validateApnData: carrier id APN does not have mcc/mnc defined");
- // no op, skip mcc mnc null check
- } else if (mcc == null || mcc.length() != 3) {
- errorMsg = getResources().getString(R.string.error_mcc_not3);
- } else if ((mnc == null || (mnc.length() & 0xFFFE) != 2)) {
- errorMsg = getResources().getString(R.string.error_mnc_not23);
- }
-
- if (errorMsg == null) {
- // if carrier does not allow editing certain apn types, make sure type does not include
- // those
- if (!ArrayUtils.isEmpty(mReadOnlyApnTypes)
- && apnTypesMatch(mReadOnlyApnTypes, getUserEnteredApnType())) {
- final StringBuilder stringBuilder = new StringBuilder();
- for (String type : mReadOnlyApnTypes) {
- stringBuilder.append(type).append(", ");
- Log.d(TAG, "validateApnData: appending type: " + type);
- }
- // remove last ", "
- if (stringBuilder.length() >= 2) {
- stringBuilder.delete(stringBuilder.length() - 2, stringBuilder.length());
- }
- errorMsg = String.format(getResources().getString(R.string.error_adding_apn_type),
- stringBuilder);
- }
- }
-
- return errorMsg;
- }
-
- @VisibleForTesting
- void showError() {
- ErrorDialog.showError(this);
- }
-
- private void deleteApn() {
- if (mApnData.getUri() != null) {
- getContentResolver().delete(mApnData.getUri(), null, null);
- mApnData = new ApnData(sProjection.length);
- }
- }
-
- private String starify(String value) {
- if (value == null || value.length() == 0) {
- return sNotSet;
- } else {
- final char[] password = new char[value.length()];
- for (int i = 0; i < password.length; i++) {
- password[i] = '*';
- }
- return new String(password);
- }
- }
-
- /**
- * Returns {@link #sNotSet} if the given string {@code value} is null or empty. The string
- * {@link #sNotSet} typically used as the default display when an entry in the preference is
- * null or empty.
- */
- private String checkNull(String value) {
- return TextUtils.isEmpty(value) ? sNotSet : value;
- }
-
- /**
- * To make traslation be diversity, use another string id for MVNO value.
- */
- private String checkNullforMvnoValue(String value) {
- String notSetForMvnoValue = getResources().getString(R.string.apn_not_set_for_mvno);
- return TextUtils.isEmpty(value) ? notSetForMvnoValue : value;
- }
-
- /**
- * Returns null if the given string {@code value} equals to {@link #sNotSet}. This method
- * should be used when convert a string value from preference to database.
- */
- private String checkNotSet(String value) {
- return sNotSet.equals(value) ? null : value;
- }
-
- @VisibleForTesting
- String getUserEnteredApnType() {
- // if user has not specified a type, map it to "ALL APN TYPES THAT ARE NOT READ-ONLY"
- // but if user enter empty type, map it just for default
- String userEnteredApnType = mApnType.getText();
- if (userEnteredApnType != null) userEnteredApnType = userEnteredApnType.trim();
- if ((TextUtils.isEmpty(userEnteredApnType)
- || APN_TYPE_ALL.equals(userEnteredApnType))) {
- userEnteredApnType = getEditableApnType(APN_TYPES);
- }
- Log.d(TAG, "getUserEnteredApnType: changed apn type to editable apn types: "
- + userEnteredApnType);
- return userEnteredApnType;
- }
-
- private String getEditableApnType(String[] apnTypeList) {
- final StringBuilder editableApnTypes = new StringBuilder();
- final List<String> readOnlyApnTypes = Arrays.asList(mReadOnlyApnTypes);
- boolean first = true;
- for (String apnType : apnTypeList) {
- // add APN type if it is not read-only and is not wild-cardable
- if (!readOnlyApnTypes.contains(apnType)
- && !apnType.equals(APN_TYPE_IA)
- && !apnType.equals(APN_TYPE_EMERGENCY)
- && !apnType.equals(APN_TYPE_MCX)
- && !apnType.equals(APN_TYPE_IMS)) {
- if (first) {
- first = false;
- } else {
- editableApnTypes.append(",");
- }
- editableApnTypes.append(apnType);
- }
- }
- return editableApnTypes.toString();
- }
-
- private void initApnEditorUi() {
- addPreferencesFromResource(R.xml.apn_editor);
-
- sNotSet = getResources().getString(R.string.apn_not_set);
- mName = (EditTextPreference) findPreference("apn_name");
- mApn = (EditTextPreference) findPreference("apn_apn");
- mProxy = (EditTextPreference) findPreference("apn_http_proxy");
- mPort = (EditTextPreference) findPreference("apn_http_port");
- mUser = (EditTextPreference) findPreference("apn_user");
- mServer = (EditTextPreference) findPreference("apn_server");
- mPassword = (EditTextPreference) findPreference(KEY_PASSWORD);
- mMmsProxy = (EditTextPreference) findPreference("apn_mms_proxy");
- mMmsPort = (EditTextPreference) findPreference("apn_mms_port");
- mMmsc = (EditTextPreference) findPreference("apn_mmsc");
- mMcc = (EditTextPreference) findPreference("apn_mcc");
- mMnc = (EditTextPreference) findPreference("apn_mnc");
- mApnType = (EditTextPreference) findPreference("apn_type");
- mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE);
- mProtocol = (ListPreference) findPreference(KEY_PROTOCOL);
- mRoamingProtocol = (ListPreference) findPreference(KEY_ROAMING_PROTOCOL);
- mCarrierEnabled = (TwoStatePreference) findPreference(KEY_CARRIER_ENABLED);
- mBearerMulti = (MultiSelectListPreference) findPreference(KEY_BEARER_MULTI);
- mMvnoType = (ListPreference) findPreference(KEY_MVNO_TYPE);
- mMvnoMatchData = (EditTextPreference) findPreference("mvno_match_data");
- }
-
- @VisibleForTesting
- protected void getCarrierCustomizedConfig(Context context) {
- mReadOnlyApn = false;
- mReadOnlyApnTypes = null;
- mReadOnlyApnFields = null;
- mIsAddApnAllowed = true;
-
- final CarrierConfigManager configManager = (CarrierConfigManager)
- context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
- if (configManager != null) {
- final PersistableBundle b = configManager.getConfigForSubId(mSubId);
- if (b != null) {
- mReadOnlyApnTypes = getReadOnlyApnTypes(b);
- if (!ArrayUtils.isEmpty(mReadOnlyApnTypes)) {
- Log.d(TAG,
- "onCreate: read only APN type: " + Arrays.toString(mReadOnlyApnTypes));
- }
- mReadOnlyApnFields = b.getStringArray(
- CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY);
-
- mDefaultApnTypes = b.getStringArray(
- CarrierConfigManager.KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY);
-
- if (!ArrayUtils.isEmpty(mDefaultApnTypes)) {
- Log.d(TAG, "onCreate: default apn types: " + Arrays.toString(mDefaultApnTypes));
- }
-
- mDefaultApnProtocol = b.getString(
- CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_PROTOCOL_STRING);
- if (!TextUtils.isEmpty(mDefaultApnProtocol)) {
- Log.d(TAG, "onCreate: default apn protocol: " + mDefaultApnProtocol);
- }
-
- mDefaultApnRoamingProtocol = b.getString(
- CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING);
- if (!TextUtils.isEmpty(mDefaultApnRoamingProtocol)) {
- Log.d(TAG, "onCreate: default apn roaming protocol: "
- + mDefaultApnRoamingProtocol);
- }
-
- mIsAddApnAllowed = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL);
- if (!mIsAddApnAllowed) {
- Log.d(TAG, "onCreate: not allow to add new APN");
- }
- }
- }
- }
-
- private void setCarrierCustomizedConfigToUi() {
- if (TextUtils.isEmpty(mApnType.getText()) && !ArrayUtils.isEmpty(mDefaultApnTypes)) {
- String value = getEditableApnType(mDefaultApnTypes);
- mApnType.setText(value);
- mApnType.setSummary(value);
- }
-
- String protocol = protocolDescription(mDefaultApnProtocol, mProtocol);
- if (TextUtils.isEmpty(mProtocol.getValue()) && !TextUtils.isEmpty(protocol)) {
- mProtocol.setValue(mDefaultApnProtocol);
- mProtocol.setSummary(protocol);
- }
-
- String roamingProtocol = protocolDescription(mDefaultApnRoamingProtocol, mRoamingProtocol);
- if (TextUtils.isEmpty(mRoamingProtocol.getValue()) && !TextUtils.isEmpty(roamingProtocol)) {
- mRoamingProtocol.setValue(mDefaultApnRoamingProtocol);
- mRoamingProtocol.setSummary(roamingProtocol);
- }
- }
-
- /**
- * Dialog of error message.
- */
- public static class ErrorDialog extends InstrumentedDialogFragment {
- /**
- * Show error dialog.
- */
- public static void showError(ApnEditor editor) {
- final ErrorDialog dialog = new ErrorDialog();
- dialog.setTargetFragment(editor, 0);
- dialog.show(editor.getFragmentManager(), "error");
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final String msg = ((ApnEditor) getTargetFragment()).validateApnData();
-
- return new AlertDialog.Builder(getContext())
- .setTitle(R.string.error_title)
- .setPositiveButton(android.R.string.ok, null)
- .setMessage(msg)
- .create();
- }
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.DIALOG_APN_EDITOR_ERROR;
- }
- }
-
- @VisibleForTesting
- ApnData getApnDataFromUri(Uri uri) {
- ApnData apnData = null;
- try (Cursor cursor = getContentResolver().query(
- uri,
- sProjection,
- null /* selection */,
- null /* selectionArgs */,
- null /* sortOrder */)) {
- if (cursor != null && cursor.moveToFirst()) {
- apnData = new ApnData(uri, cursor);
- }
- }
-
- if (apnData == null) {
- Log.d(TAG, "Can't get apnData from Uri " + uri);
- }
-
- return apnData;
- }
-
- @VisibleForTesting
boolean isUserRestricted() {
UserManager userManager = getContext().getSystemService(UserManager.class);
if (userManager == null) {
@@ -1502,80 +97,4 @@
}
return false;
}
-
- @VisibleForTesting
- static class ApnData {
- /**
- * The uri correspond to a database row of the apn data. This should be null if the apn
- * is not in the database.
- */
- Uri mUri;
-
- /** Each element correspond to a column of the database row. */
- Object[] mData;
-
- ApnData(int numberOfField) {
- mData = new Object[numberOfField];
- }
-
- ApnData(Uri uri, Cursor cursor) {
- mUri = uri;
- mData = new Object[cursor.getColumnCount()];
- for (int i = 0; i < mData.length; i++) {
- switch (cursor.getType(i)) {
- case Cursor.FIELD_TYPE_FLOAT:
- mData[i] = cursor.getFloat(i);
- break;
- case Cursor.FIELD_TYPE_INTEGER:
- mData[i] = cursor.getInt(i);
- break;
- case Cursor.FIELD_TYPE_STRING:
- mData[i] = cursor.getString(i);
- break;
- case Cursor.FIELD_TYPE_BLOB:
- mData[i] = cursor.getBlob(i);
- break;
- default:
- mData[i] = null;
- }
- }
- }
-
- Uri getUri() {
- return mUri;
- }
-
- void setUri(Uri uri) {
- mUri = uri;
- }
-
- Integer getInteger(int index) {
- return (Integer) mData[index];
- }
-
- Integer getInteger(int index, Integer defaultValue) {
- final Integer val = getInteger(index);
- return val == null ? defaultValue : val;
- }
-
- String getString(int index) {
- return (String) mData[index];
- }
- }
-
- private static int getBitmaskForTech(int radioTech) {
- if (radioTech >= 1) {
- return (1 << (radioTech - 1));
- }
- return 0;
- }
-
- private static boolean bitmaskHasTech(int bearerBitmask, int radioTech) {
- if (bearerBitmask == 0) {
- return true;
- } else if (radioTech >= 1) {
- return ((bearerBitmask & (1 << (radioTech - 1))) != 0);
- }
- return false;
- }
}
diff --git a/src/com/android/settings/network/apn/ApnSettings.java b/src/com/android/settings/network/apn/ApnSettings.java
index 0e3c3a4..24f25ec 100644
--- a/src/com/android/settings/network/apn/ApnSettings.java
+++ b/src/com/android/settings/network/apn/ApnSettings.java
@@ -23,7 +23,6 @@
import android.app.ProgressDialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
-import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
@@ -34,7 +33,6 @@
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.data.ApnSetting;
-import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
@@ -51,7 +49,6 @@
import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment;
-import com.android.settings.flags.Flags;
import com.android.settings.network.telephony.SubscriptionRepository;
import com.android.settings.spa.SpaActivity;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -59,6 +56,7 @@
import kotlin.Unit;
import java.util.ArrayList;
+import java.util.List;
/** Handle each different apn setting. */
public class ApnSettings extends RestrictedSettingsFragment
@@ -68,16 +66,12 @@
public static final String APN_ID = "apn_id";
public static final String APN_LIST = "apn_list";
public static final String SUB_ID = "sub_id";
- public static final String MVNO_TYPE = "mvno_type";
- public static final String MVNO_MATCH_DATA = "mvno_match_data";
private static final String[] CARRIERS_PROJECTION = new String[] {
Telephony.Carriers._ID,
Telephony.Carriers.NAME,
Telephony.Carriers.APN,
Telephony.Carriers.TYPE,
- Telephony.Carriers.MVNO_TYPE,
- Telephony.Carriers.MVNO_MATCH_DATA,
Telephony.Carriers.EDITED_STATUS,
};
@@ -85,9 +79,7 @@
private static final int NAME_INDEX = 1;
private static final int APN_INDEX = 2;
private static final int TYPES_INDEX = 3;
- private static final int MVNO_TYPE_INDEX = 4;
- private static final int MVNO_MATCH_DATA_INDEX = 5;
- private static final int EDITED_INDEX = 6;
+ private static final int EDITED_INDEX = 4;
private static final int MENU_NEW = Menu.FIRST;
private static final int MENU_RESTORE = Menu.FIRST + 1;
@@ -101,8 +93,6 @@
private PreferredApnRepository mPreferredApnRepository;
@Nullable
private String mPreferredApnKey;
- private String mMvnoType;
- private String mMvnoMatchData;
private boolean mUnavailable;
@@ -135,9 +125,9 @@
mHideImsApn = b.getBoolean(CarrierConfigManager.KEY_HIDE_IMS_APN_BOOL);
mAllowAddingApns = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL);
if (mAllowAddingApns) {
- final String[] readOnlyApnTypes = ApnEditor.getReadOnlyApnTypes(b);
+ final List<String> readOnlyApnTypes = ApnTypes.getReadOnlyApnTypes(b);
// if no apn type can be edited, do not allow adding APNs
- if (ApnEditor.hasAllApns(readOnlyApnTypes)) {
+ if (ApnTypes.hasAllApnTypes(readOnlyApnTypes)) {
Log.d(TAG, "not allowing adding APN because all APN types are read only");
mAllowAddingApns = false;
}
@@ -241,8 +231,6 @@
final String key = cursor.getString(ID_INDEX);
final String type = cursor.getString(TYPES_INDEX);
final int edited = cursor.getInt(EDITED_INDEX);
- mMvnoType = cursor.getString(MVNO_TYPE_INDEX);
- mMvnoMatchData = cursor.getString(MVNO_MATCH_DATA_INDEX);
final ApnPreference pref = new ApnPreference(getPrefContext());
@@ -310,20 +298,9 @@
}
private void addNewApn() {
- if (Flags.newApnPageEnabled()) {
- String route = ApnEditPageProvider.INSTANCE.getRoute(
- INSERT_URL, Telephony.Carriers.CONTENT_URI, mSubId);
- SpaActivity.startSpaActivity(getContext(), route);
- } else {
- final Intent intent = new Intent(Intent.ACTION_INSERT, Telephony.Carriers.CONTENT_URI);
- intent.putExtra(SUB_ID, mSubId);
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- if (!TextUtils.isEmpty(mMvnoType) && !TextUtils.isEmpty(mMvnoMatchData)) {
- intent.putExtra(MVNO_TYPE, mMvnoType);
- intent.putExtra(MVNO_MATCH_DATA, mMvnoMatchData);
- }
- startActivity(intent);
- }
+ String route = ApnEditPageProvider.INSTANCE.getRoute(
+ INSERT_URL, Telephony.Carriers.CONTENT_URI, mSubId);
+ SpaActivity.startSpaActivity(getContext(), route);
}
@Override
diff --git a/src/com/android/settings/network/apn/ApnStatus.kt b/src/com/android/settings/network/apn/ApnStatus.kt
index 68588bb..d33c8b3 100644
--- a/src/com/android/settings/network/apn/ApnStatus.kt
+++ b/src/com/android/settings/network/apn/ApnStatus.kt
@@ -25,6 +25,7 @@
import android.util.Log
import com.android.settings.R
import com.android.settings.network.apn.ApnTypes.getPreSelectedApnType
+import com.android.settings.network.apn.ApnTypes.getReadOnlyApnTypes
private const val TAG = "ApnStatus"
@@ -204,7 +205,7 @@
CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL
)
val customizedConfig = CustomizedConfig(
- readOnlyApnTypes = ApnEditor.getReadOnlyApnTypes(b)?.toList() ?: emptyList(),
+ readOnlyApnTypes = b.getReadOnlyApnTypes(),
readOnlyApnFields = b.getStringArray(
CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY
)?.toList() ?: emptyList(),
diff --git a/src/com/android/settings/network/apn/ApnTypes.kt b/src/com/android/settings/network/apn/ApnTypes.kt
index 4f84ac7..ee192b2 100644
--- a/src/com/android/settings/network/apn/ApnTypes.kt
+++ b/src/com/android/settings/network/apn/ApnTypes.kt
@@ -17,6 +17,8 @@
package com.android.settings.network.apn
import android.content.Context
+import android.os.PersistableBundle
+import android.telephony.CarrierConfigManager
import android.telephony.data.ApnSetting
import android.util.Log
import android.widget.Toast
@@ -51,9 +53,7 @@
private fun splitToList(apnType: String): List<String> {
val types = apnType.split(',').map { it.trim().toLowerCase(Locale.current) }
- if (ApnSetting.TYPE_ALL_STRING in types || APN_TYPES.all { it in types }) {
- return listOf(ApnSetting.TYPE_ALL_STRING)
- }
+ if (hasAllApnTypes(types)) return listOf(ApnSetting.TYPE_ALL_STRING)
return APN_TYPES.filter { it in types }
}
@@ -132,4 +132,32 @@
private fun defaultPreSelectedApnTypes(readOnlyApnTypes: List<String>) =
if (ApnSetting.TYPE_ALL_STRING in readOnlyApnTypes) emptyList()
else PreSelectedTypes.filterNot { it in readOnlyApnTypes }
+
+ /** Array of APN types that are never user-editable */
+ private val ALWAYS_READ_ONLY_APN_TYPES =
+ arrayOf(ApnSetting.TYPE_OEM_PAID_STRING, ApnSetting.TYPE_OEM_PRIVATE_STRING)
+
+ /**
+ * Fetch complete list of read only APN types.
+ *
+ * The list primarily comes from carrier config, but is also supplied by APN types which are
+ * always read only.
+ */
+ @JvmStatic
+ fun PersistableBundle.getReadOnlyApnTypes(): List<String> {
+ val carrierReadOnlyApnTypes =
+ getStringArray(CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY)?.toList()
+ ?: emptyList()
+ return carrierReadOnlyApnTypes + ALWAYS_READ_ONLY_APN_TYPES
+ }
+
+ /**
+ * Check if passed in array of APN types indicates all APN types
+ *
+ * @param apnTypes array of APN types. "*" indicates all types.
+ * @return true if all apn types are included in the array, false otherwise
+ */
+ @JvmStatic
+ fun hasAllApnTypes(apnTypes: List<String>): Boolean =
+ ApnSetting.TYPE_ALL_STRING in apnTypes || APN_TYPES.all { it in apnTypes }
}
diff --git a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
index 99683a8..77f4e1c 100644
--- a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
+++ b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
@@ -224,7 +224,10 @@
}
private val BooleanKeysWhichNotFollowingsNamingConventions =
- listOf(CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
+ listOf(
+ CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS,
+ CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ )
private fun checkBooleanKey(key: String) {
check(key.endsWith("_bool") || key in BooleanKeysWhichNotFollowingsNamingConventions) {
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index c428f98..1b1eb9e 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -21,6 +21,8 @@
import static com.android.settings.network.telephony.EnabledNetworkModePreferenceControllerHelperKt.getNetworkModePreferenceType;
import static com.android.settings.network.telephony.EnabledNetworkModePreferenceControllerHelperKt.setAllowedNetworkTypes;
+import static com.android.settings.network.telephony.mode.NetworkModes.addNrToLteNetworkMode;
+import static com.android.settings.network.telephony.mode.NetworkModes.reduceNrToLteNetworkMode;
import android.content.Context;
import android.content.res.Resources;
@@ -53,7 +55,6 @@
import com.android.settings.network.SubscriptionsChangeListener;
import com.android.settings.network.telephony.NetworkModeChoicesProto.EnabledNetworks;
import com.android.settings.network.telephony.NetworkModeChoicesProto.UiOptions;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
import java.util.ArrayList;
import java.util.Arrays;
@@ -429,14 +430,14 @@
addLteEntry(entryValuesInt[entryIndex]);
break;
case add5gEntry:
- add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
+ add5gEntry(addNrToLteNetworkMode(entryValuesInt[entryIndex]));
break;
case add5gAnd4gEntry:
- add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
+ add5gEntry(addNrToLteNetworkMode(entryValuesInt[entryIndex]));
add4gEntry(entryValuesInt[entryIndex]);
break;
case add5gAndLteEntry:
- add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
+ add5gEntry(addNrToLteNetworkMode(entryValuesInt[entryIndex]));
addLteEntry(entryValuesInt[entryIndex]);
break;
default:
@@ -451,7 +452,7 @@
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
if (!showNrList()) {
Log.d(LOG_TAG, "Network mode :" + networkMode + " reduce NR");
- networkMode = reduceNrToLteNetworkType(networkMode);
+ networkMode = reduceNrToLteNetworkMode(networkMode);
}
Log.d(LOG_TAG, "getPreferredNetworkMode: " + networkMode);
return networkMode;
@@ -472,16 +473,16 @@
enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_CDMA_CHOICES;
} else {
switch (settingsNetworkMode) {
- case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
- case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
- case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
+ case TelephonyManager.NETWORK_MODE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO:
+ case TelephonyManager.NETWORK_MODE_EVDO_NO_CDMA:
enabledNetworkType =
EnabledNetworks.ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES;
break;
- case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
+ case TelephonyManager.NETWORK_MODE_GLOBAL:
+ case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_ONLY:
enabledNetworkType =
EnabledNetworks.ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES;
break;
@@ -539,46 +540,42 @@
void setPreferenceValueAndSummary(int networkMode) {
setSelectedEntry(networkMode);
switch (networkMode) {
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM:
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_WCDMA:
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
setSummary(R.string.network_3G);
break;
- case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY:
- case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS:
- case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF:
+ case TelephonyManager.NETWORK_MODE_WCDMA_ONLY:
+ case TelephonyManager.NETWORK_MODE_GSM_UMTS:
+ case TelephonyManager.NETWORK_MODE_WCDMA_PREF:
if (!mIsGlobalCdma) {
- setSelectedEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_WCDMA_PREF);
setSummary(R.string.network_3G);
} else {
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
setSummary(R.string.network_global);
}
break;
- case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY:
+ case TelephonyManager.NETWORK_MODE_GSM_ONLY:
if (!mIsGlobalCdma) {
- setSelectedEntry(TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_GSM_ONLY);
setSummary(R.string.network_2G);
} else {
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
setSummary(R.string.network_global);
}
break;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA:
if (MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
setSummary(
R.string.preferred_network_mode_lte_gsm_umts_summary);
break;
}
- case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_ONLY:
+ case TelephonyManager.NETWORK_MODE_LTE_WCDMA:
if (!mIsGlobalCdma) {
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
if (is5gEntryDisplayed()) {
setSummary(mShow4gForLTE
? R.string.network_4G_pure : R.string.network_lte_pure);
@@ -587,55 +584,52 @@
? R.string.network_4G : R.string.network_lte);
}
} else {
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
setSummary(R.string.network_global);
}
break;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO:
if (MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
setSummary(
R.string.preferred_network_mode_lte_cdma_summary);
} else {
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO);
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO);
setSummary(is5gEntryDisplayed()
? R.string.network_lte_pure : R.string.network_lte);
}
break;
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
setSummary(R.string.network_3G);
break;
- case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
- case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
- case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
- setSelectedEntry(TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO);
+ case TelephonyManager.NETWORK_MODE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_EVDO_NO_CDMA:
+ case TelephonyManager.NETWORK_MODE_GLOBAL:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_CDMA_EVDO);
setSummary(R.string.network_3G);
break;
- case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
- setSelectedEntry(TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO);
+ case TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO);
setSummary(R.string.network_1x);
break;
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY:
- setSelectedEntry(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY);
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_ONLY:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_TDSCDMA_ONLY);
setSummary(R.string.network_3G);
break;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
if (MobileNetworkUtils.isTdscdmaSupported(mContext, mSubId)) {
- setSelectedEntry(TelephonyManagerConstants
- .NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
+ setSelectedEntry(
+ TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
setSummary(is5gEntryDisplayed()
? R.string.network_lte_pure : R.string.network_lte);
} else {
setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
+ TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA
|| mIsGlobalCdma
|| MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
@@ -652,30 +646,28 @@
}
break;
- case TelephonyManagerConstants.NETWORK_MODE_NR_ONLY:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_ONLY:
+ case TelephonyManager.NETWORK_MODE_NR_LTE:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_WCDMA:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA);
+ setSummary(getResourcesForSubId().getString(R.string.network_5G_recommended));
+ break;
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);
+ TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
setSummary(getResourcesForSubId().getString(R.string.network_5G_recommended));
break;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
- setSelectedEntry(TelephonyManagerConstants
- .NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
+ case TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO);
setSummary(getResourcesForSubId().getString(R.string.network_5G_recommended));
break;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
- setSelectedEntry(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO);
- setSummary(getResourcesForSubId().getString(R.string.network_5G_recommended));
- break;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
- setSelectedEntry(
- TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
+ case TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
+ setSelectedEntry(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA
|| mIsGlobalCdma
|| MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
@@ -692,74 +684,6 @@
}
}
- /**
- * Transform LTE network mode to 5G network mode.
- *
- * @param networkType an LTE network mode without 5G.
- * @return the corresponding network mode with 5G.
- */
- private int addNrToLteNetworkType(int networkType) {
- switch (networkType) {
- case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
- return TelephonyManagerConstants
- .NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
- default:
- return networkType; // not LTE
- }
- }
-
- /**
- * Transform NR5G network mode to LTE network mode.
- *
- * @param networkType an 5G network mode.
- * @return the corresponding network mode without 5G.
- */
- private int reduceNrToLteNetworkType(int networkType) {
- switch (networkType) {
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
- return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
- return TelephonyManagerConstants
- .NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
- default:
- return networkType; // do nothing
- }
- }
-
private void setPreferenceValueAndSummary() {
setPreferenceValueAndSummary(getPreferredNetworkMode());
}
@@ -772,7 +696,7 @@
* Add 5G option. Only show the UI when device supported 5G and allowed 5G.
*/
private void add5gEntry(int value) {
- boolean isNRValue = value >= TelephonyManagerConstants.NETWORK_MODE_NR_ONLY;
+ boolean isNRValue = value >= TelephonyManager.NETWORK_MODE_NR_ONLY;
if (showNrList() && isNRValue) {
mEntries.add(getResourcesForSubId().getString(R.string.network_5G_recommended));
mEntriesValue.add(value);
@@ -792,7 +716,7 @@
+ " allowed5GNetworkType: " + mAllowed5gNetworkType);
mEntries.add(getResourcesForSubId().getString(R.string.network_global));
if (showNrList()) {
- value = addNrToLteNetworkType(value);
+ value = addNrToLteNetworkMode(value);
}
mEntriesValue.add(value);
}
diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
index 220218c..a37a12b 100644
--- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
+++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
@@ -17,6 +17,7 @@
package com.android.settings.network.telephony
import android.content.Context
+import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
import android.telephony.data.ApnSetting
@@ -45,7 +46,7 @@
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
private var telephonyManager: TelephonyManager =
context.getSystemService(TelephonyManager::class.java)!!
-
+ private val carrierConfigRepository = CarrierConfigRepository(context)
private var preferenceScreen: PreferenceScreen? = null
fun init(subId: Int) {
@@ -54,7 +55,13 @@
}
override fun getAvailabilityStatus() =
- if (getAvailabilityStatus(telephonyManager, subId, getDefaultDataSubId)) AVAILABLE
+ if (getAvailabilityStatus(
+ telephonyManager,
+ subId,
+ getDefaultDataSubId,
+ carrierConfigRepository
+ )
+ ) AVAILABLE
else CONDITIONALLY_UNAVAILABLE
override fun displayPreference(screen: PreferenceScreen) {
@@ -92,11 +99,14 @@
telephonyManager: TelephonyManager,
subId: Int,
getDefaultDataSubId: () -> Int,
+ carrierConfigRepository: CarrierConfigRepository,
): Boolean {
return SubscriptionManager.isValidSubscriptionId(subId) &&
!telephonyManager.isDataEnabled &&
telephonyManager.isApnMetered(ApnSetting.TYPE_MMS) &&
- !isFallbackDataEnabled(telephonyManager, subId, getDefaultDataSubId())
+ !isFallbackDataEnabled(telephonyManager, subId, getDefaultDataSubId()) &&
+ carrierConfigRepository.getBoolean(
+ subId, CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL)
}
private fun isFallbackDataEnabled(
@@ -118,11 +128,16 @@
) : MobileNetworkSettingsSearchItem {
private var telephonyManager: TelephonyManager =
context.getSystemService(TelephonyManager::class.java)!!
+ private val carrierConfigRepository = CarrierConfigRepository(context)
@VisibleForTesting
fun isAvailable(subId: Int): Boolean =
getAvailabilityStatus(
- telephonyManager.createForSubscriptionId(subId), subId, getDefaultDataSubId)
+ telephonyManager.createForSubscriptionId(subId),
+ subId,
+ getDefaultDataSubId,
+ carrierConfigRepository
+ )
override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
if (!isAvailable(subId)) return null
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 341f7a1b..2e812b4 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -18,11 +18,6 @@
import static android.provider.Telephony.Carriers.ENFORCE_MANAGED_URI;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
-
import android.app.KeyguardManager;
import android.content.Context;
import android.content.Intent;
@@ -75,7 +70,6 @@
import com.android.settings.network.CarrierConfigCache;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.ims.WifiCallingQueryImsState;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
import com.android.settings.network.telephony.wificalling.WifiCallingRepository;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.graph.SignalDrawable;
@@ -328,10 +322,10 @@
(int) telephonyManager.getAllowedNetworkTypesForReason(
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
- if (settingsNetworkMode == NETWORK_MODE_LTE_GSM_WCDMA
- || settingsNetworkMode == NETWORK_MODE_LTE_CDMA_EVDO
- || settingsNetworkMode == NETWORK_MODE_NR_LTE_GSM_WCDMA
- || settingsNetworkMode == NETWORK_MODE_NR_LTE_CDMA_EVDO) {
+ if (settingsNetworkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA
+ || settingsNetworkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO
+ || settingsNetworkMode == TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA
+ || settingsNetworkMode == TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO) {
return true;
}
@@ -359,10 +353,10 @@
(int) telephonyManager.getAllowedNetworkTypesForReason(
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
if (isWorldMode(context, subId)) {
- if (networkMode == NETWORK_MODE_LTE_CDMA_EVDO
- || networkMode == NETWORK_MODE_LTE_GSM_WCDMA
- || networkMode == NETWORK_MODE_NR_LTE_CDMA_EVDO
- || networkMode == NETWORK_MODE_NR_LTE_GSM_WCDMA) {
+ if (networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO
+ || networkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA
+ || networkMode == TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO
+ || networkMode == TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA) {
return true;
} else if (shouldSpeciallyUpdateGsmCdma(context, subId)) {
return true;
@@ -426,14 +420,14 @@
final int networkMode = RadioAccessFamily.getNetworkTypeFromRaf(
(int) telephonyManager.getAllowedNetworkTypesForReason(
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
- if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO) {
+ if (networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO) {
return false;
}
if (shouldSpeciallyUpdateGsmCdma(context, subId)) {
return false;
}
- if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA) {
+ if (networkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA) {
return true;
}
}
@@ -541,13 +535,13 @@
final int networkMode = RadioAccessFamily.getNetworkTypeFromRaf(
(int) telephonyManager.getAllowedNetworkTypesForReason(
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
- if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM
- || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA
- || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA
- || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA
+ if (networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM
+ || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA
+ || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA
+ || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA
|| networkMode
- == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA
- || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) {
+ == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA
+ || networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) {
if (!isTdscdmaSupported(context, subId)) {
return true;
}
diff --git a/src/com/android/settings/network/telephony/NetworkSelectRepository.kt b/src/com/android/settings/network/telephony/NetworkSelectRepository.kt
index d95c90e..219f9db 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectRepository.kt
+++ b/src/com/android/settings/network/telephony/NetworkSelectRepository.kt
@@ -22,6 +22,7 @@
import android.telephony.NetworkRegistrationInfo
import android.telephony.TelephonyManager
import android.telephony.satellite.SatelliteManager
+import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
@@ -92,6 +93,11 @@
* Update satellite PLMNs from the satellite framework.
*/
private fun getSatellitePlmns(): List<String> {
+ if (satelliteManager == null) {
+ Log.d(TAG, "SatelliteManager is null")
+ return emptyList()
+ }
+
val config = carrierConfigManager.getConfigForSubId(
subId,
CarrierConfigManager.KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL
@@ -104,7 +110,11 @@
return if (shouldFilter) {
satelliteManager.getSatellitePlmnsForCarrier(subId)
} else {
- emptyList();
+ emptyList()
}
}
+
+ private companion object {
+ private const val TAG = "NetworkSelectRepository"
+ }
}
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index a16f4b5..4ae51ab 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -219,7 +219,7 @@
setProgressBarVisible(true);
mNetworkScanJob = mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(),
(networkScanResult) -> {
- if (isPreferenceScreenEnabled()) {
+ if (isPreferenceScreenEnabled() && !isFinishingOrDestroyed()) {
scanResultHandler(networkScanResult);
}
diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
index 2d567af..d855069 100644
--- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
@@ -32,7 +32,7 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.CarrierConfigCache;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
+import com.android.settings.network.telephony.mode.NetworkModes;
/**
* Preference controller for "Preferred network mode"
@@ -93,54 +93,54 @@
private int getPreferredNetworkMode() {
if (mTelephonyManager == null) {
Log.w(TAG, "TelephonyManager is null");
- return TelephonyManagerConstants.NETWORK_MODE_UNKNOWN;
+ return NetworkModes.NETWORK_MODE_UNKNOWN;
}
return RadioAccessFamily.getNetworkTypeFromRaf(
(int) mTelephonyManager.getAllowedNetworkTypesForReason(
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
}
- private int getPreferredNetworkModeSummaryResId(int NetworkMode) {
- switch (NetworkMode) {
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
+ private int getPreferredNetworkModeSummaryResId(int networkMode) {
+ switch (networkMode) {
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
return R.string.preferred_network_mode_tdscdma_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM:
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM:
return R.string.preferred_network_mode_tdscdma_gsm_summary;
- case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF:
+ case TelephonyManager.NETWORK_MODE_WCDMA_PREF:
return R.string.preferred_network_mode_wcdma_perf_summary;
- case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY:
+ case TelephonyManager.NETWORK_MODE_GSM_ONLY:
return R.string.preferred_network_mode_gsm_only_summary;
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA:
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_WCDMA:
return R.string.preferred_network_mode_tdscdma_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY:
+ case TelephonyManager.NETWORK_MODE_WCDMA_ONLY:
return R.string.preferred_network_mode_wcdma_only_summary;
- case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS:
+ case TelephonyManager.NETWORK_MODE_GSM_UMTS:
return R.string.preferred_network_mode_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_CDMA_EVDO:
return mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled()
? R.string.preferred_network_mode_cdma_summary
: R.string.preferred_network_mode_cdma_evdo_summary;
- case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
+ case TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO:
return R.string.preferred_network_mode_cdma_only_summary;
- case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
+ case TelephonyManager.NETWORK_MODE_EVDO_NO_CDMA:
return R.string.preferred_network_mode_evdo_only_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA:
return R.string.preferred_network_mode_lte_tdscdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
+ case TelephonyManager.NETWORK_MODE_LTE_ONLY:
return R.string.preferred_network_mode_lte_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM:
return R.string.preferred_network_mode_lte_tdscdma_gsm_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
return R.string.preferred_network_mode_lte_tdscdma_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA:
return R.string.preferred_network_mode_lte_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO:
return R.string.preferred_network_mode_lte_cdma_evdo_summary;
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY:
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_ONLY:
return R.string.preferred_network_mode_tdscdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
return R.string.preferred_network_mode_lte_tdscdma_cdma_evdo_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA
|| mIsGlobalCdma
|| MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
@@ -148,35 +148,35 @@
} else {
return R.string.preferred_network_mode_lte_summary;
}
- case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
return R.string.preferred_network_mode_tdscdma_cdma_evdo_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
+ case TelephonyManager.NETWORK_MODE_GLOBAL:
return R.string.preferred_network_mode_cdma_evdo_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
return R.string.preferred_network_mode_lte_tdscdma_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
+ case TelephonyManager.NETWORK_MODE_LTE_WCDMA:
return R.string.preferred_network_mode_lte_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_ONLY:
+ case TelephonyManager.NETWORK_MODE_NR_ONLY:
return R.string.preferred_network_mode_nr_only_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE:
+ case TelephonyManager.NETWORK_MODE_NR_LTE:
return R.string.preferred_network_mode_nr_lte_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO:
return R.string.preferred_network_mode_nr_lte_cdma_evdo_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA:
return R.string.preferred_network_mode_nr_lte_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
return R.string.preferred_network_mode_global_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_WCDMA:
return R.string.preferred_network_mode_nr_lte_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA:
return R.string.preferred_network_mode_nr_lte_tdscdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
return R.string.preferred_network_mode_nr_lte_tdscdma_gsm_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
return R.string.preferred_network_mode_nr_lte_tdscdma_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
return R.string.preferred_network_mode_nr_lte_tdscdma_gsm_wcdma_summary;
- case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+ case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
return R.string.preferred_network_mode_nr_lte_tdscdma_cdma_evdo_gsm_wcdma_summary;
default:
return R.string.preferred_network_mode_global_summary;
diff --git a/src/com/android/settings/network/telephony/TelephonyConstants.java b/src/com/android/settings/network/telephony/TelephonyConstants.java
index 78a177e..4331a46 100644
--- a/src/com/android/settings/network/telephony/TelephonyConstants.java
+++ b/src/com/android/settings/network/telephony/TelephonyConstants.java
@@ -24,188 +24,6 @@
public class TelephonyConstants {
/**
- * Copied from {@link android.telephony.TelephonyManager}
- */
- public static class TelephonyManagerConstants {
-
- // Network modes are in turn copied from RILConstants
- // with one difference: NETWORK_MODE_CDMA is named NETWORK_MODE_CDMA_EVDO
-
- public static final int NETWORK_MODE_UNKNOWN = -1;
-
- /**
- * GSM, WCDMA (WCDMA preferred)
- */
- public static final int NETWORK_MODE_WCDMA_PREF = 0;
-
- /**
- * GSM only
- */
- public static final int NETWORK_MODE_GSM_ONLY = 1;
-
- /**
- * WCDMA only
- */
- public static final int NETWORK_MODE_WCDMA_ONLY = 2;
-
- /**
- * GSM, WCDMA (auto mode, according to PRL)
- */
- public static final int NETWORK_MODE_GSM_UMTS = 3;
-
- /**
- * CDMA and EvDo (auto mode, according to PRL)
- * this is NETWORK_MODE_CDMA in RILConstants.java
- */
- public static final int NETWORK_MODE_CDMA_EVDO = 4;
-
- /**
- * CDMA only
- */
- public static final int NETWORK_MODE_CDMA_NO_EVDO = 5;
-
- /**
- * EvDo only
- */
- public static final int NETWORK_MODE_EVDO_NO_CDMA = 6;
-
- /**
- * GSM, WCDMA, CDMA, and EvDo (auto mode, according to PRL)
- */
- public static final int NETWORK_MODE_GLOBAL = 7;
-
- /**
- * LTE, CDMA and EvDo
- */
- public static final int NETWORK_MODE_LTE_CDMA_EVDO = 8;
-
- /**
- * LTE, GSM and WCDMA
- */
- public static final int NETWORK_MODE_LTE_GSM_WCDMA = 9;
-
- /**
- * LTE, CDMA, EvDo, GSM, and WCDMA
- */
- public static final int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10;
-
- /**
- * LTE only mode.
- */
- public static final int NETWORK_MODE_LTE_ONLY = 11;
-
- /**
- * LTE and WCDMA
- */
- public static final int NETWORK_MODE_LTE_WCDMA = 12;
-
- /**
- * TD-SCDMA only
- */
- public static final int NETWORK_MODE_TDSCDMA_ONLY = 13;
-
- /**
- * TD-SCDMA and WCDMA
- */
- public static final int NETWORK_MODE_TDSCDMA_WCDMA = 14;
-
- /**
- * LTE and TD-SCDMA
- */
- public static final int NETWORK_MODE_LTE_TDSCDMA = 15;
-
- /**
- * TD-SCDMA and GSM
- */
- public static final int NETWORK_MODE_TDSCDMA_GSM = 16;
-
- /**
- * TD-SCDMA, GSM and LTE
- */
- public static final int NETWORK_MODE_LTE_TDSCDMA_GSM = 17;
-
- /**
- * TD-SCDMA, GSM and WCDMA
- */
- public static final int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18;
-
- /**
- * LTE, TD-SCDMA and WCDMA
- */
- public static final int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19;
-
- /**
- * LTE, TD-SCDMA, GSM, and WCDMA
- */
- public static final int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20;
-
- /**
- * TD-SCDMA, CDMA, EVDO, GSM and WCDMA
- */
- public static final int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21;
-
- /**
- * LTE, TDCSDMA, CDMA, EVDO, GSM and WCDMA
- */
- public static final int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22;
-
- /**
- * NR 5G only mode
- */
- public static final int NETWORK_MODE_NR_ONLY = 23;
-
- /**
- * NR 5G, LTE
- */
- public static final int NETWORK_MODE_NR_LTE = 24;
-
- /**
- * NR 5G, LTE, CDMA and EvDo
- */
- public static final int NETWORK_MODE_NR_LTE_CDMA_EVDO = 25;
-
- /**
- * NR 5G, LTE, GSM and WCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_GSM_WCDMA = 26;
-
- /**
- * NR 5G, LTE, CDMA, EvDo, GSM and WCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = 27;
-
- /**
- * NR 5G, LTE and WCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_WCDMA = 28;
-
- /**
- * NR 5G, LTE and TDSCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_TDSCDMA = 29;
-
- /**
- * NR 5G, LTE, TD-SCDMA and GSM
- */
- public static final int NETWORK_MODE_NR_LTE_TDSCDMA_GSM = 30;
-
- /**
- * NR 5G, LTE, TD-SCDMA, WCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA = 31;
-
- /**
- * NR 5G, LTE, TD-SCDMA, GSM and WCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = 32;
-
- /**
- * NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA
- */
- public static final int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33;
- }
-
- /**
* Copied from {@link android.telephony.RadioAccessFamily}
*/
public static class RadioAccessFamily {
diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
index f9751f1..f4d2ce2 100644
--- a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
+++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
@@ -557,15 +557,17 @@
Log.d(TAG, "Hardware does not support DSDS.");
return false;
}
- boolean isActiveSim = SubscriptionUtil.getActiveSubscriptions(
+ boolean anyActiveSim = SubscriptionUtil.getActiveSubscriptions(
mSubscriptionManager).size() > 0;
- if (isMultipleEnabledProfilesSupported() && isActiveSim) {
+ if (isMultipleEnabledProfilesSupported() && anyActiveSim) {
Log.d(TAG,
"Device supports MEP and eSIM operation and eSIM profile is enabled."
+ " DSDS condition satisfied.");
return true;
}
- boolean isRemovableSimEnabled = isRemovableSimEnabled();
+ boolean isRemovableSimEnabled =
+ SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager).stream()
+ .anyMatch(subInfo-> !subInfo.isEmbedded());
if (mIsEsimOperation && isRemovableSimEnabled) {
Log.d(TAG, "eSIM operation and removable SIM is enabled. DSDS condition satisfied.");
return true;
@@ -583,7 +585,7 @@
}
private boolean isRemovableSimEnabled() {
- return new UiccSlotRepository(mTelMgr).anyRemovablePhysicalSimEnabled();
+ return new UiccSlotRepository(mTelMgr).anyRemovablePhysicalSimSlotActiveAndInserted();
}
private boolean isMultipleEnabledProfilesSupported() {
diff --git a/src/com/android/settings/network/telephony/UiccSlotRepository.kt b/src/com/android/settings/network/telephony/UiccSlotRepository.kt
index 3a83805..8a20329 100644
--- a/src/com/android/settings/network/telephony/UiccSlotRepository.kt
+++ b/src/com/android/settings/network/telephony/UiccSlotRepository.kt
@@ -22,17 +22,17 @@
class UiccSlotRepository(private val telephonyManager: TelephonyManager?) {
- /** Returns whether any removable physical sim is enabled. */
- fun anyRemovablePhysicalSimEnabled(): Boolean {
+ /** Returns whether any removable physical sim slot is active and the sim is inserted. */
+ fun anyRemovablePhysicalSimSlotActiveAndInserted(): Boolean {
val result =
telephonyManager?.uiccSlotsInfo?.any { uiccSlotInfo: UiccSlotInfo? ->
- uiccSlotInfo.isRemovablePhysicalSimEnabled()
+ uiccSlotInfo.isRemovablePhysicalSimSlotActiveAndInserted()
} ?: false
Log.i(TAG, "anyRemovablePhysicalSimEnabled: $result")
return result
}
- private fun UiccSlotInfo?.isRemovablePhysicalSimEnabled(): Boolean {
+ private fun UiccSlotInfo?.isRemovablePhysicalSimSlotActiveAndInserted(): Boolean {
return this != null &&
isRemovable &&
!isEuicc &&
diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
index fe702e4..011a879 100644
--- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
@@ -16,9 +16,10 @@
package com.android.settings.network.telephony.cdma;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
-import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_UNKNOWN;
+import static android.telephony.TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA;
+import static android.telephony.TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA;
+
+import static com.android.settings.network.telephony.mode.NetworkModes.NETWORK_MODE_UNKNOWN;
import android.content.Context;
import android.provider.Settings;
diff --git a/src/com/android/settings/network/telephony/mode/NetworkModes.kt b/src/com/android/settings/network/telephony/mode/NetworkModes.kt
new file mode 100644
index 0000000..11c4c41
--- /dev/null
+++ b/src/com/android/settings/network/telephony/mode/NetworkModes.kt
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2024 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.settings.network.telephony.mode
+
+import android.telephony.TelephonyManager
+import com.google.common.collect.ImmutableBiMap
+
+/** Network mode related utilities. */
+object NetworkModes {
+ const val NETWORK_MODE_UNKNOWN = -1
+
+ private val LteToNrNetworkModeMap =
+ ImmutableBiMap.builder<Int, Int>()
+ .put(TelephonyManager.NETWORK_MODE_LTE_ONLY, TelephonyManager.NETWORK_MODE_NR_LTE)
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO,
+ TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_WCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_WCDMA,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_TDSCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM,
+ TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA,
+ )
+ .put(
+ TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA,
+ TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA,
+ )
+ .build()
+
+ /**
+ * Transforms LTE network mode to 5G network mode.
+ *
+ * @param networkMode an LTE network mode without 5G.
+ * @return the corresponding network mode with 5G.
+ */
+ @JvmStatic
+ fun addNrToLteNetworkMode(networkMode: Int): Int =
+ LteToNrNetworkModeMap.getOrElse(networkMode) { networkMode }
+
+ /**
+ * Transforms NR5G network mode to LTE network mode.
+ *
+ * @param networkMode an 5G network mode.
+ * @return the corresponding network mode without 5G.
+ */
+ @JvmStatic
+ fun reduceNrToLteNetworkMode(networkMode: Int): Int =
+ LteToNrNetworkModeMap.inverse().getOrElse(networkMode) { networkMode }
+}
diff --git a/src/com/android/settings/network/tether/TetherScreen.kt b/src/com/android/settings/network/tether/TetherScreen.kt
new file mode 100644
index 0000000..fd0d4c8
--- /dev/null
+++ b/src/com/android/settings/network/tether/TetherScreen.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024 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.settings.network.tether
+
+import android.content.Context
+import android.net.TetheringManager
+import android.os.UserManager
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settings.network.TetherPreferenceController
+import com.android.settingslib.TetherUtil
+import com.android.settingslib.Utils
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class TetherScreen :
+ PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceRestrictionMixin {
+
+ override val key: String
+ get() = KEY
+
+ override val icon: Int
+ get() = R.drawable.ic_wifi_tethering
+
+ override val keywords: Int
+ get() = R.string.keywords_hotspot_tethering
+
+ override fun getPreferenceTitle(context: Context): CharSequence? =
+ if (TetherPreferenceController.isTetherConfigDisallowed(context)) {
+ context.getText(R.string.tether_settings_title_all)
+ } else {
+ val tetheringManager = context.getSystemService(TetheringManager::class.java)!!
+ context.getText(Utils.getTetheringLabel(tetheringManager))
+ }
+
+ override fun isAvailable(context: Context) = TetherUtil.isTetherAvailable(context)
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_CONFIG_TETHERING)
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystTetherSettings()
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun fragmentClass() = TetherSettings::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ companion object {
+ const val KEY = "tether_settings"
+ }
+}
diff --git a/src/com/android/settings/network/tether/TetherSettings.java b/src/com/android/settings/network/tether/TetherSettings.java
index 77ef4b6..1db1802 100644
--- a/src/com/android/settings/network/tether/TetherSettings.java
+++ b/src/com/android/settings/network/tether/TetherSettings.java
@@ -48,14 +48,15 @@
import android.util.Log;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;
import com.android.settings.R;
-import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.Utils;
+import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.datausage.DataSaverBackend;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.wifi.tether.WifiTetherPreferenceController;
@@ -75,7 +76,7 @@
* Displays preferences for Tethering.
*/
@SearchIndexable
-public class TetherSettings extends RestrictedSettingsFragment
+public class TetherSettings extends RestrictedDashboardFragment
implements DataSaverBackend.Listener {
@VisibleForTesting
@@ -144,10 +145,18 @@
}
@Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.tether_prefs;
+ }
+
+ @Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- // Even when the UI is restricted, addPreferencesFromResource cannot be omitted.
- addPreferencesFromResource(R.xml.tether_prefs);
setIfOnlyAvailableForAdmins(true);
if (isUiRestricted()) {
return;
@@ -723,4 +732,9 @@
}
updateBluetoothAndEthernetState();
}
+
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return TetherScreen.KEY;
+ }
}
diff --git a/src/com/android/settings/notification/BundleGlobalPreferenceController.java b/src/com/android/settings/notification/BundleGlobalPreferenceController.java
new file mode 100644
index 0000000..e41e7dd
--- /dev/null
+++ b/src/com/android/settings/notification/BundleGlobalPreferenceController.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import android.app.Flags;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.widget.SettingsMainSwitchPreferenceController;
+
+public class BundleGlobalPreferenceController extends
+ SettingsMainSwitchPreferenceController {
+
+ NotificationBackend mBackend;
+
+ public BundleGlobalPreferenceController(@NonNull Context context,
+ @NonNull String preferenceKey) {
+ super(context, preferenceKey);
+ mBackend = new NotificationBackend();
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ if (Flags.notificationClassificationUi() && mBackend.isNotificationBundlingSupported()) {
+ return AVAILABLE;
+ }
+ return CONDITIONALLY_UNAVAILABLE;
+ }
+
+ @Override
+ public boolean isChecked() {
+ return mBackend.isNotificationBundlingEnabled(mContext);
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ mBackend.setNotificationBundlingEnabled(isChecked);
+ return true;
+ }
+
+ @Override
+ public int getSliceHighlightMenuRes() {
+ // not needed since it's not sliceable
+ return NO_RES;
+ }
+}
diff --git a/src/com/android/settings/notification/BundlePreferenceController.java b/src/com/android/settings/notification/BundlePreferenceController.java
new file mode 100644
index 0000000..39d28ce
--- /dev/null
+++ b/src/com/android/settings/notification/BundlePreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import android.app.Flags;
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+/**
+ * Controller for the bundled notifications settings page.
+ */
+public class BundlePreferenceController extends BasePreferenceController {
+
+ NotificationBackend mBackend;
+
+ public BundlePreferenceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ mBackend = new NotificationBackend();
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return Flags.notificationClassificationUi() && mBackend.isNotificationBundlingSupported()
+ ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ }
+
+ @Override
+ public CharSequence getSummary() {
+ return mBackend.isNotificationBundlingEnabled(mContext)
+ ? mContext.getString(R.string.notification_bundle_on)
+ : mContext.getString(R.string.notification_bundle_off);
+ }
+}
diff --git a/src/com/android/settings/notification/BundlePreferenceFragment.java b/src/com/android/settings/notification/BundlePreferenceFragment.java
new file mode 100644
index 0000000..14de2c2
--- /dev/null
+++ b/src/com/android/settings/notification/BundlePreferenceFragment.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.app.Flags;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Fragment for bundled notifications.
+ */
+@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
+public class BundlePreferenceFragment extends DashboardFragment {
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.BUNDLED_NOTIFICATIONS;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.bundle_notifications_settings;
+ }
+ @Override
+ protected String getLogTag() {
+ return "BundlePreferenceFragment";
+ }
+
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(R.xml.bundle_notifications_settings) {
+
+ @Override
+ protected boolean isPageSearchEnabled(Context context) {
+ return Flags.notificationClassificationUi();
+ }
+ };
+}
diff --git a/src/com/android/settings/notification/BundleTypePreferenceController.java b/src/com/android/settings/notification/BundleTypePreferenceController.java
new file mode 100644
index 0000000..b9fb2b2
--- /dev/null
+++ b/src/com/android/settings/notification/BundleTypePreferenceController.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import android.app.Flags;
+import android.content.Context;
+import android.service.notification.Adjustment;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.widget.SettingsMainSwitchPreferenceController;
+
+public class BundleTypePreferenceController extends
+ SettingsMainSwitchPreferenceController {
+
+ static final String PROMO_KEY = "promotions";
+ static final String NEWS_KEY = "news";
+ static final String SOCIAL_KEY = "social";
+ static final String RECS_KEY = "recs";
+
+ NotificationBackend mBackend;
+ int mType;
+
+ public BundleTypePreferenceController(@NonNull Context context,
+ @NonNull String preferenceKey) {
+ super(context, preferenceKey);
+ mBackend = new NotificationBackend();
+ mType = getBundleTypeForKey();
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ if (Flags.notificationClassificationUi() && mBackend.isNotificationBundlingSupported()
+ && mBackend.isNotificationBundlingEnabled(mContext)) {
+ return AVAILABLE;
+ }
+ return CONDITIONALLY_UNAVAILABLE;
+ }
+
+ @Override
+ public boolean isChecked() {
+ return mBackend.isBundleTypeApproved(mType);
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ mBackend.setBundleTypeState(mType, isChecked);
+ return true;
+ }
+
+ @Override
+ public int getSliceHighlightMenuRes() {
+ // not needed since it's not sliceable
+ return NO_RES;
+ }
+
+ private @Adjustment.Types int getBundleTypeForKey() {
+ if (PROMO_KEY.equals(mPreferenceKey)) {
+ return Adjustment.TYPE_PROMOTION;
+ } else if (NEWS_KEY.equals(mPreferenceKey)) {
+ return Adjustment.TYPE_NEWS;
+ } else if (SOCIAL_KEY.equals(mPreferenceKey)) {
+ return Adjustment.TYPE_SOCIAL_MEDIA;
+ } else if (RECS_KEY.equals(mPreferenceKey)) {
+ return Adjustment.TYPE_CONTENT_RECOMMENDATION;
+ }
+ return Adjustment.TYPE_OTHER;
+ }
+}
diff --git a/src/com/android/settings/notification/CallVolumePreference.kt b/src/com/android/settings/notification/CallVolumePreference.kt
new file mode 100644
index 0000000..e09dc9b
--- /dev/null
+++ b/src/com/android/settings/notification/CallVolumePreference.kt
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.content.Context
+import android.media.AudioManager
+import android.media.AudioManager.STREAM_BLUETOOTH_SCO
+import android.media.AudioManager.STREAM_VOICE_CALL
+import android.os.UserManager
+import androidx.preference.Preference
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.metadata.PersistentPreference
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceIconProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.RangeValue
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.preference.PreferenceBinding
+
+// LINT.IfChange
+open class CallVolumePreference :
+ PreferenceMetadata,
+ PreferenceBinding,
+ PersistentPreference<Int>,
+ RangeValue,
+ PreferenceAvailabilityProvider,
+ PreferenceIconProvider,
+ PreferenceRestrictionMixin {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.call_volume_option_title
+
+ override fun getIcon(context: Context) = R.drawable.ic_local_phone_24_lib
+
+ override fun isAvailable(context: Context) =
+ context.resources.getBoolean(R.bool.config_show_call_volume) &&
+ !createAudioHelper(context).isSingleVolume
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME)
+
+ override fun storage(context: Context): KeyValueStore {
+ val helper = createAudioHelper(context)
+ return object : NoOpKeyedObservable<String>(), KeyValueStore {
+ override fun contains(key: String) = key == KEY
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ helper.getStreamVolume(getAudioStream(context)) as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ helper.setStreamVolume(getAudioStream(context), value as Int)
+ }
+ }
+ }
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getMinValue(context: Context) =
+ createAudioHelper(context).getMinVolume(getAudioStream(context))
+
+ override fun getMaxValue(context: Context) =
+ createAudioHelper(context).getMaxVolume(getAudioStream(context))
+
+ override fun createWidget(context: Context) = VolumeSeekBarPreference(context)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ (preference as VolumeSeekBarPreference).setStream(getAudioStream(preference.context))
+ }
+
+ open fun createAudioHelper(context: Context) = AudioHelper(context)
+
+ @Suppress("DEPRECATION")
+ fun getAudioStream(context: Context): Int {
+ val audioManager = context.getSystemService(AudioManager::class.java)
+ return when {
+ audioManager.isBluetoothScoOn() -> STREAM_BLUETOOTH_SCO
+ else -> STREAM_VOICE_CALL
+ }
+ }
+
+ companion object {
+ const val KEY = "call_volume"
+ }
+}
+// LINT.ThenChange(CallVolumePreferenceController.java)
diff --git a/src/com/android/settings/notification/CallVolumePreferenceController.java b/src/com/android/settings/notification/CallVolumePreferenceController.java
index d505227..d7c5ddc 100644
--- a/src/com/android/settings/notification/CallVolumePreferenceController.java
+++ b/src/com/android/settings/notification/CallVolumePreferenceController.java
@@ -22,7 +22,7 @@
import com.android.settings.R;
-
+// LINT.IfChange
public class CallVolumePreferenceController extends VolumeSeekBarPreferenceController {
private AudioManager mAudioManager;
@@ -69,3 +69,4 @@
}
}
+// LINT.ThenChange(CallVolumePreference.kt)
diff --git a/src/com/android/settings/notification/MediaVolumePreference.kt b/src/com/android/settings/notification/MediaVolumePreference.kt
new file mode 100644
index 0000000..2533f0a
--- /dev/null
+++ b/src/com/android/settings/notification/MediaVolumePreference.kt
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.content.Context
+import android.media.AudioManager.STREAM_MUSIC
+import android.os.UserManager
+import androidx.preference.Preference
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.metadata.PersistentPreference
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceIconProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.RangeValue
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.preference.PreferenceBinding
+
+// LINT.IfChange
+open class MediaVolumePreference :
+ PreferenceMetadata,
+ PreferenceBinding,
+ PersistentPreference<Int>,
+ RangeValue,
+ PreferenceAvailabilityProvider,
+ PreferenceIconProvider,
+ PreferenceRestrictionMixin {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.media_volume_option_title
+
+ override fun getIcon(context: Context) =
+ when {
+ VolumeHelper.isMuted(context, STREAM_MUSIC) -> R.drawable.ic_media_stream_off
+ else -> R.drawable.ic_media_stream
+ }
+
+ override fun isAvailable(context: Context) =
+ context.resources.getBoolean(R.bool.config_show_media_volume)
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME)
+
+ override fun storage(context: Context): KeyValueStore {
+ val helper = createAudioHelper(context)
+ return object : NoOpKeyedObservable<String>(), KeyValueStore {
+ override fun contains(key: String) = key == KEY
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ helper.getStreamVolume(STREAM_MUSIC) as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ helper.setStreamVolume(STREAM_MUSIC, value as Int)
+ }
+ }
+ }
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getMinValue(context: Context) =
+ createAudioHelper(context).getMinVolume(STREAM_MUSIC)
+
+ override fun getMaxValue(context: Context) =
+ createAudioHelper(context).getMaxVolume(STREAM_MUSIC)
+
+ override fun createWidget(context: Context) = VolumeSeekBarPreference(context)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ (preference as VolumeSeekBarPreference).apply {
+ setStream(STREAM_MUSIC)
+ setMuteIcon(R.drawable.ic_media_stream_off)
+ setListener { updateContentDescription(this) }
+ }
+ }
+
+ open fun createAudioHelper(context: Context) = AudioHelper(context)
+
+ private fun updateContentDescription(preference: VolumeSeekBarPreference) {
+ when {
+ preference.isMuted ->
+ preference.updateContentDescription(
+ preference.context.getString(
+ R.string.volume_content_description_silent_mode,
+ preference.title,
+ )
+ )
+ else -> preference.updateContentDescription(preference.title)
+ }
+ }
+
+ companion object {
+ const val KEY = "media_volume"
+ }
+}
+// LINT.ThenChange(MediaVolumePreferenceController.java)
diff --git a/src/com/android/settings/notification/MediaVolumePreferenceController.java b/src/com/android/settings/notification/MediaVolumePreferenceController.java
index e70cf95..431806a 100644
--- a/src/com/android/settings/notification/MediaVolumePreferenceController.java
+++ b/src/com/android/settings/notification/MediaVolumePreferenceController.java
@@ -42,6 +42,7 @@
import com.android.settingslib.media.MediaDevice;
import com.android.settingslib.media.MediaOutputConstants;
+// LINT.IfChange
public class MediaVolumePreferenceController extends VolumeSeekBarPreferenceController {
private static final String TAG = "MediaVolumePreCtrl";
private static final String KEY_MEDIA_VOLUME = "media_volume";
@@ -204,3 +205,4 @@
return MediaOutputIndicatorWorker.class;
}
}
+// LINT.ThenChange(MediaVolumePreference.kt)
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index d6f810c..388e0d7 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -46,6 +46,7 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
+import android.service.notification.Adjustment;
import android.service.notification.ConversationChannelWrapper;
import android.service.notification.NotificationListenerFilter;
import android.text.format.DateUtils;
@@ -65,9 +66,11 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
public class NotificationBackend {
private static final String TAG = "NotificationBackend";
@@ -651,6 +654,59 @@
return false;
}
+ public boolean isNotificationBundlingSupported() {
+ try {
+ return !sINM.getUnsupportedAdjustmentTypes().contains(Adjustment.KEY_TYPE);
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ return false;
+ }
+
+ public boolean isNotificationBundlingEnabled(Context context) {
+ try {
+ return sINM.getAllowedAssistantAdjustments(context.getPackageName())
+ .contains(Adjustment.KEY_TYPE);
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ return false;
+ }
+
+ public void setNotificationBundlingEnabled(boolean enabled) {
+ try {
+ if (enabled) {
+ sINM.allowAssistantAdjustment(Adjustment.KEY_TYPE);
+ } else {
+ sINM.disallowAssistantAdjustment(Adjustment.KEY_TYPE);
+ }
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ }
+
+ public boolean isBundleTypeApproved(@Adjustment.Types int type) {
+ try {
+ int[] approved = sINM.getAllowedAdjustmentKeyTypes();
+ for (int approvedType : approved) {
+ if (type == approvedType) {
+ return true;
+ }
+ }
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ return false;
+ }
+
+ public void setBundleTypeState(@Adjustment.Types int type, boolean enabled) {
+ try {
+ sINM.setAssistantAdjustmentKeyTypeState(type, enabled);
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ }
+
@VisibleForTesting
void setNm(INotificationManager inm) {
sINM = inm;
diff --git a/src/com/android/settings/notification/SeparateRingVolumePreference.kt b/src/com/android/settings/notification/SeparateRingVolumePreference.kt
new file mode 100644
index 0000000..a9c167d
--- /dev/null
+++ b/src/com/android/settings/notification/SeparateRingVolumePreference.kt
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.app.INotificationManager
+import android.app.NotificationManager
+import android.content.Context
+import android.media.AudioManager.RINGER_MODE_NORMAL
+import android.media.AudioManager.RINGER_MODE_SILENT
+import android.media.AudioManager.RINGER_MODE_VIBRATE
+import android.media.AudioManager.STREAM_RING
+import android.os.ServiceManager
+import android.os.UserManager
+import android.os.Vibrator
+import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_CALL_EFFECTS
+import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_EFFECTS
+import androidx.preference.Preference
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settings.R
+import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.metadata.PersistentPreference
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceIconProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.RangeValue
+import com.android.settingslib.metadata.ReadWritePermit
+import com.android.settingslib.preference.PreferenceBinding
+
+// LINT.IfChange
+open class SeparateRingVolumePreference :
+ PreferenceMetadata,
+ PreferenceBinding,
+ PersistentPreference<Int>,
+ RangeValue,
+ PreferenceAvailabilityProvider,
+ PreferenceIconProvider,
+ PreferenceRestrictionMixin {
+
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.separate_ring_volume_option_title
+
+ override fun getIcon(context: Context) =
+ when {
+ VolumeHelper.isMuted(context, STREAM_RING) -> getMuteIcon(context)
+ else -> R.drawable.ic_ring_volume
+ }
+
+ override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume
+
+ override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+
+ override val restrictionKeys
+ get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME)
+
+ override fun storage(context: Context): KeyValueStore {
+ val helper = createAudioHelper(context)
+ return object : NoOpKeyedObservable<String>(), KeyValueStore {
+ override fun contains(key: String) = key == KEY
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <T : Any> getValue(key: String, valueType: Class<T>) =
+ helper.getStreamVolume(STREAM_RING) as T
+
+ override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
+ helper.setStreamVolume(STREAM_RING, value as Int)
+ }
+ }
+ }
+
+ override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
+ ReadWritePermit.ALLOW
+
+ override fun getMinValue(context: Context) =
+ createAudioHelper(context).getMinVolume(STREAM_RING)
+
+ override fun getMaxValue(context: Context) =
+ createAudioHelper(context).getMaxVolume(STREAM_RING)
+
+ override fun createWidget(context: Context) = VolumeSeekBarPreference(context)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ (preference as VolumeSeekBarPreference).apply {
+ setStream(STREAM_RING)
+ setMuteIcon(getMuteIcon(preference.context))
+ setListener { updateContentDescription(this) }
+ setSuppressionText(getSuppressionText(preference.context))
+ }
+ }
+
+ open fun createAudioHelper(context: Context) = AudioHelper(context)
+
+ private fun updateContentDescription(preference: VolumeSeekBarPreference) {
+ val context = preference.context
+ val ringerMode = getEffectiveRingerMode(context)
+ when (ringerMode) {
+ RINGER_MODE_VIBRATE ->
+ preference.updateContentDescription(
+ context.getString(R.string.ringer_content_description_vibrate_mode)
+ )
+ RINGER_MODE_SILENT ->
+ preference.updateContentDescription(
+ context.getString(R.string.ringer_content_description_silent_mode)
+ )
+ else -> preference.updateContentDescription(preference.title)
+ }
+ }
+
+ fun getMuteIcon(context: Context): Int {
+ val ringerMode = getEffectiveRingerMode(context)
+ return when (ringerMode) {
+ RINGER_MODE_NORMAL -> R.drawable.ic_ring_volume
+ RINGER_MODE_VIBRATE -> R.drawable.ic_volume_ringer_vibrate
+ else -> R.drawable.ic_ring_volume_off
+ }
+ }
+
+ fun getEffectiveRingerMode(context: Context): Int {
+ val hasVibrator = context.getSystemService(Vibrator::class.java)?.hasVibrator() ?: false
+ val ringerMode = createAudioHelper(context).ringerModeInternal
+ return when {
+ !hasVibrator && ringerMode == RINGER_MODE_VIBRATE -> RINGER_MODE_SILENT
+ else -> ringerMode
+ }
+ }
+
+ private fun getSuppressionText(context: Context): String? {
+ val suppressor = NotificationManager.from(context).getEffectsSuppressor()
+ val notificationManager =
+ INotificationManager.Stub.asInterface(
+ ServiceManager.getService(Context.NOTIFICATION_SERVICE)
+ )
+ val hints = notificationManager.hintsFromListenerNoToken
+ return when {
+ hintsMatch(hints) -> SuppressorHelper.getSuppressionText(context, suppressor)
+ else -> null
+ }
+ }
+
+ private fun hintsMatch(hints: Int) =
+ (hints and HINT_HOST_DISABLE_CALL_EFFECTS) != 0 ||
+ (hints and HINT_HOST_DISABLE_EFFECTS) != 0
+
+ companion object {
+ const val KEY = "separate_ring_volume"
+ }
+}
+// LINT.ThenChange(SeparateRingVolumePreferenceController.java)
diff --git a/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java b/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java
index 91926e3..feb976f 100644
--- a/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java
+++ b/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java
@@ -35,6 +35,7 @@
/**
* This slider is used to represent ring volume when ring is separated from notification
*/
+// LINT.IfChange
public class SeparateRingVolumePreferenceController extends
RingerModeAffectedVolumePreferenceController {
@@ -149,3 +150,4 @@
}
}
+// LINT.ThenChange(SeparateRingVolumePreference.kt)
diff --git a/src/com/android/settings/notification/SoundScreen.kt b/src/com/android/settings/notification/SoundScreen.kt
index 6b60967..c0694b9 100644
--- a/src/com/android/settings/notification/SoundScreen.kt
+++ b/src/com/android/settings/notification/SoundScreen.kt
@@ -18,8 +18,11 @@
import android.content.Context
import androidx.fragment.app.Fragment
import com.android.settings.R
+import com.android.settings.Settings.SoundSettingsActivity
import com.android.settings.flags.Flags
+import com.android.settings.utils.makeLaunchIntent
import com.android.settingslib.metadata.PreferenceIconProvider
+import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
@@ -49,9 +52,15 @@
override fun getPreferenceHierarchy(context: Context) =
preferenceHierarchy(this) {
- +DialPadTonePreference()
+ +MediaVolumePreference() order -180
+ +CallVolumePreference() order -170
+ +SeparateRingVolumePreference() order -155
+ +DialPadTonePreference() order -50
}
+ override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
+ makeLaunchIntent(context, SoundSettingsActivity::class.java, metadata?.key)
+
companion object {
const val KEY = "sound_screen"
}
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index b069c7e..fffb784 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -113,6 +113,14 @@
if (phoneRingTonePreference != null && openPhoneRingtonePicker) {
onPreferenceTreeClick(phoneRingTonePreference);
}
+ if (isCatalystEnabled()) {
+ for (String key : getPreferenceKeysInHierarchy()) {
+ Preference preference = findPreference(key);
+ if (preference instanceof VolumeSeekBarPreference) {
+ ((VolumeSeekBarPreference) preference).setCallback(mVolumeCallback);
+ }
+ }
+ }
}
@Override
diff --git a/src/com/android/settings/notification/VolumeHelper.kt b/src/com/android/settings/notification/VolumeHelper.kt
new file mode 100644
index 0000000..73e490e
--- /dev/null
+++ b/src/com/android/settings/notification/VolumeHelper.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.app.NotificationManager
+import android.app.NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS
+import android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA
+import android.content.Context
+import android.media.AudioManager
+import android.media.AudioManager.*
+import android.provider.Settings.Global.ZEN_MODE_ALARMS
+import android.provider.Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS
+import android.provider.Settings.Global.ZEN_MODE_NO_INTERRUPTIONS
+import android.service.notification.ZenModeConfig
+
+class VolumeHelper {
+ companion object {
+ fun isMuted(context: Context, streamType: Int): Boolean {
+ val audioManager = context.getSystemService(AudioManager::class.java)
+ return audioManager.isStreamMute(streamType) && !isZenMuted(context, streamType)
+ }
+
+ fun isZenMuted(context: Context, streamType: Int): Boolean {
+ val notificationManager = context.getSystemService(NotificationManager::class.java)
+ val zenMode = notificationManager.getZenMode()
+ val notificationPolicy = notificationManager.getConsolidatedNotificationPolicy()
+ val isAllowAlarms =
+ (notificationPolicy.priorityCategories and PRIORITY_CATEGORY_ALARMS) != 0
+ val isAllowMedia =
+ (notificationPolicy.priorityCategories and PRIORITY_CATEGORY_MEDIA) != 0
+ val isAllowRinger =
+ !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(notificationPolicy)
+ return isNotificationOrRingStream(streamType)
+ && zenMode == ZEN_MODE_ALARMS || zenMode == ZEN_MODE_NO_INTERRUPTIONS
+ || (zenMode == ZEN_MODE_IMPORTANT_INTERRUPTIONS
+ && (!isAllowRinger && isNotificationOrRingStream(streamType)
+ || !isAllowMedia && isMediaStream(streamType)
+ || !isAllowAlarms && isAlarmStream(streamType)))
+ }
+
+ private fun isNotificationOrRingStream(streamType: Int) =
+ streamType == STREAM_RING || streamType == STREAM_NOTIFICATION
+
+ private fun isAlarmStream(streamType: Int) = streamType == STREAM_ALARM
+
+ private fun isMediaStream(streamType: Int) = streamType == STREAM_MUSIC
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/notification/app/BubblePreference.java b/src/com/android/settings/notification/app/BubblePreference.java
index 17deef9..73f4582 100644
--- a/src/com/android/settings/notification/app/BubblePreference.java
+++ b/src/com/android/settings/notification/app/BubblePreference.java
@@ -33,11 +33,13 @@
import com.android.settings.R;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
+import com.android.settingslib.RestrictedPreferenceHelperProvider;
/**
* A tri-state preference allowing a user to specify what gets to bubble.
*/
-public class BubblePreference extends Preference implements RadioGroup.OnCheckedChangeListener {
+public class BubblePreference extends Preference implements RadioGroup.OnCheckedChangeListener,
+ RestrictedPreferenceHelperProvider {
RestrictedPreferenceHelper mHelper;
private int mSelectedPreference;
@@ -64,6 +66,11 @@
setLayoutResource(R.layout.bubble_preference);
}
+ @Override
+ public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
+ return mHelper;
+ }
+
public void setSelectedPreference(int preference) {
mSelectedPreference = preference;
notifyChanged();
diff --git a/src/com/android/settings/notification/app/BundleListPreferenceController.java b/src/com/android/settings/notification/app/BundleListPreferenceController.java
index 82e910c..9ada049 100644
--- a/src/com/android/settings/notification/app/BundleListPreferenceController.java
+++ b/src/com/android/settings/notification/app/BundleListPreferenceController.java
@@ -91,14 +91,27 @@
public void updateState(Preference preference) {
PreferenceCategory category = (PreferenceCategory) preference;
- createOrUpdatePrefForChannel(category,
- mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID));
- createOrUpdatePrefForChannel(category,
- mBackend.getChannel(mAppRow.pkg, mAppRow.uid, RECS_ID));
- createOrUpdatePrefForChannel(category,
- mBackend.getChannel(mAppRow.pkg, mAppRow.uid, SOCIAL_MEDIA_ID));
- createOrUpdatePrefForChannel(category,
- mBackend.getChannel(mAppRow.pkg, mAppRow.uid, NEWS_ID));
+ NotificationChannel promos = mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID);
+ if (promos != null) {
+ createOrUpdatePrefForChannel(category, promos);
+ }
+ NotificationChannel recs = mBackend.getChannel(mAppRow.pkg, mAppRow.uid, RECS_ID);
+ if (recs != null) {
+ createOrUpdatePrefForChannel(category, recs);
+ }
+ NotificationChannel social = mBackend.getChannel(mAppRow.pkg, mAppRow.uid, SOCIAL_MEDIA_ID);
+ if (social != null) {
+ createOrUpdatePrefForChannel(category, social);
+ }
+ NotificationChannel news = mBackend.getChannel(mAppRow.pkg, mAppRow.uid, NEWS_ID);
+ if (news != null) {
+ createOrUpdatePrefForChannel(category, news);
+ }
+
+ int preferenceCount = ((PreferenceGroup) preference).getPreferenceCount();
+ if (preferenceCount == 0) {
+ preference.setVisible(false);
+ }
}
@NonNull
@@ -167,5 +180,4 @@
icon.setTintList(Utils.getColorAccent(mContext));
return icon;
}
-
}
diff --git a/src/com/android/settings/notification/app/SoundPreferenceController.java b/src/com/android/settings/notification/app/SoundPreferenceController.java
index b23b4fc..bc1cb24 100644
--- a/src/com/android/settings/notification/app/SoundPreferenceController.java
+++ b/src/com/android/settings/notification/app/SoundPreferenceController.java
@@ -101,6 +101,8 @@
public boolean handlePreferenceTreeClick(Preference preference) {
if (KEY_SOUND.equals(preference.getKey()) && mFragment != null) {
NotificationSoundPreference pref = (NotificationSoundPreference) preference;
+ // default to notification
+ pref.setRingtoneType(RingtoneManager.TYPE_NOTIFICATION);
if (mChannel != null && mChannel.getAudioAttributes() != null) {
if (USAGE_ALARM == mChannel.getAudioAttributes().getUsage()) {
pref.setRingtoneType(RingtoneManager.TYPE_ALARM);
diff --git a/src/com/android/settings/notification/modes/ZenHelperBackend.java b/src/com/android/settings/notification/modes/ZenHelperBackend.java
index 31c1ce4..5761d36 100644
--- a/src/com/android/settings/notification/modes/ZenHelperBackend.java
+++ b/src/com/android/settings/notification/modes/ZenHelperBackend.java
@@ -18,6 +18,7 @@
import android.annotation.Nullable;
import android.app.INotificationManager;
+import android.app.ZenBypassingApp;
import android.content.ContentProvider;
import android.content.Context;
import android.content.pm.ParceledListSlice;
@@ -30,6 +31,7 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.service.notification.ConversationChannelWrapper;
+import android.util.ArrayMap;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -41,8 +43,9 @@
import java.io.IOException;
import java.io.InputStream;
-import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.function.Function;
/**
@@ -76,16 +79,20 @@
}
/**
- * Returns all of a user's packages that have at least one channel that will bypass DND
+ * Returns a mapping between a user's packages that have at least one channel that will
+ * bypass DND, and a Boolean indicating whether all of the package's channels bypass.
*/
- List<String> getPackagesBypassingDnd(int userId,
- boolean includeConversationChannels) {
+ Map<String, Boolean> getPackagesBypassingDnd(int userId) {
+ Map<String, Boolean> bypassingAppsMap = new HashMap<>();
try {
- return mInm.getPackagesBypassingDnd(userId, includeConversationChannels);
+ List<ZenBypassingApp> bypassingApps = mInm.getPackagesBypassingDnd(userId).getList();
+ for (ZenBypassingApp zba : bypassingApps) {
+ bypassingAppsMap.put(zba.getPkg(), zba.doAllChannelsBypass());
+ }
} catch (Exception e) {
Log.w(TAG, "Error calling NoMan", e);
- return new ArrayList<>();
}
+ return bypassingAppsMap;
}
/** Returns all conversation channels for profiles of the current user. */
diff --git a/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceController.java
index 922ac5e..a01406f 100644
--- a/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceController.java
@@ -22,7 +22,9 @@
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
+import android.os.UserManager;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.core.text.BidiFormatter;
@@ -35,7 +37,6 @@
import com.android.settings.applications.AppInfoBase;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.app.AppChannelsBypassingDndSettings;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
@@ -44,7 +45,9 @@
import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Adds a preference to the PreferenceScreen for each notification channel that can bypass DND.
@@ -54,7 +57,8 @@
public static final String KEY_NO_APPS = "all_none";
private static final String KEY = "zen_mode_bypassing_apps_list";
- @Nullable private final NotificationBackend mNotificationBackend;
+ @Nullable private final ZenHelperBackend mHelperBackend;
+ private final UserManager mUserManager;
@Nullable @VisibleForTesting ApplicationsState mApplicationsState;
@VisibleForTesting PreferenceCategory mPreferenceCategory;
@@ -64,18 +68,18 @@
@Nullable private Fragment mHostFragment;
public ZenModeAllBypassingAppsPreferenceController(Context context, @Nullable Application app,
- @Nullable Fragment host, @Nullable NotificationBackend notificationBackend) {
- this(context, app == null ? null : ApplicationsState.getInstance(app), host,
- notificationBackend);
+ @Nullable Fragment host, @Nullable ZenHelperBackend helperBackend) {
+ this(context, app == null ? null : ApplicationsState.getInstance(app), host, helperBackend);
}
private ZenModeAllBypassingAppsPreferenceController(Context context,
@Nullable ApplicationsState appState, @Nullable Fragment host,
- @Nullable NotificationBackend notificationBackend) {
+ @Nullable ZenHelperBackend helperBackend) {
super(context);
- mNotificationBackend = notificationBackend;
mApplicationsState = appState;
mHostFragment = host;
+ mHelperBackend = helperBackend;
+ mUserManager = context.getSystemService(UserManager.class);
if (mApplicationsState != null && host != null) {
mAppSession = mApplicationsState.newSession(mAppSessionCallbacks, host.getLifecycle());
@@ -140,19 +144,25 @@
}
boolean doAnyAppsPassCriteria = false;
+ Map<Integer, Map<String, Boolean>> packagesBypassingDndByUser = new HashMap<>();
+ for (UserHandle userHandle : mUserManager.getUserProfiles()) {
+ packagesBypassingDndByUser.put(userHandle.getIdentifier(),
+ mHelperBackend.getPackagesBypassingDnd(userHandle.getIdentifier()));
+ }
for (ApplicationsState.AppEntry app : apps) {
String pkg = app.info.packageName;
final String key = getKey(pkg, app.info.uid);
- final int appChannels = mNotificationBackend.getChannelCount(pkg, app.info.uid);
- final int appChannelsBypassingDnd = mNotificationBackend
- .getNotificationChannelsBypassingDnd(pkg, app.info.uid).getList().size();
- if (appChannelsBypassingDnd > 0) {
+ boolean doesAppBypassDnd = false;
+ int userId = UserHandle.getUserId(app.info.uid);
+ Map<String, Boolean> packagesBypassingDnd =
+ packagesBypassingDndByUser.getOrDefault(userId, new HashMap<>());
+ if (packagesBypassingDnd.containsKey(pkg)) {
doAnyAppsPassCriteria = true;
+ doesAppBypassDnd = true;
}
-
Preference pref = mPreferenceCategory.findPreference(key);
if (pref == null) {
- if (appChannelsBypassingDnd > 0) {
+ if (doesAppBypassDnd) {
// does not exist but should
pref = new AppPreference(mPrefContext);
pref.setKey(key);
@@ -172,14 +182,14 @@
});
pref.setTitle(BidiFormatter.getInstance().unicodeWrap(app.label));
updateIcon(pref, app);
- if (appChannels > appChannelsBypassingDnd) {
- pref.setSummary(R.string.zen_mode_bypassing_apps_summary_some);
- } else {
+ if (packagesBypassingDnd.get(pkg)) {
pref.setSummary(R.string.zen_mode_bypassing_apps_summary_all);
+ } else {
+ pref.setSummary(R.string.zen_mode_bypassing_apps_summary_some);
}
mPreferenceCategory.addPreference(pref);
}
- } else if (appChannelsBypassingDnd == 0) {
+ } else if (!doesAppBypassDnd) {
// exists but shouldn't anymore
mPreferenceCategory.removePreference(pref);
}
diff --git a/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java
index c133f51..e0e36f6 100644
--- a/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java
@@ -161,8 +161,7 @@
Multimap<Integer, String> packagesBypassingDnd = HashMultimap.create();
for (UserHandle userHandle : mUserManager.getUserProfiles()) {
packagesBypassingDnd.putAll(userHandle.getIdentifier(),
- mHelperBackend.getPackagesBypassingDnd(userHandle.getIdentifier(),
- /* includeConversationChannels= */ false));
+ mHelperBackend.getPackagesBypassingDnd(userHandle.getIdentifier()).keySet());
}
return ImmutableList.copyOf(
diff --git a/src/com/android/settings/notification/modes/ZenModeBlurbPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeBlurbPreferenceController.java
index 097b40d..4275f22 100644
--- a/src/com/android/settings/notification/modes/ZenModeBlurbPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeBlurbPreferenceController.java
@@ -41,6 +41,11 @@
}
@Override
+ public boolean isAvailable(@NonNull ZenMode zenMode) {
+ return !zenMode.isCustomManual();
+ }
+
+ @Override
void updateState(Preference preference, @NonNull ZenMode zenMode) {
preference.setTitle(getModeBlurb(zenMode));
}
diff --git a/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java b/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java
index 2a7ec90..4dfb242 100644
--- a/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java
@@ -299,6 +299,7 @@
List<UserHandle> userProfiles = mUserManager.getEnabledProfiles();
if (userProfiles.size() <= 1) {
mContext.startActivity(intent);
+ return;
}
mProfileSelectDialog = ProfileSelectDialog.createDialog(mContext, userProfiles,
diff --git a/src/com/android/settings/notification/modes/ZenModeSelectBypassingAppsFragment.java b/src/com/android/settings/notification/modes/ZenModeSelectBypassingAppsFragment.java
index 1f5438d..21f34a2 100644
--- a/src/com/android/settings/notification/modes/ZenModeSelectBypassingAppsFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeSelectBypassingAppsFragment.java
@@ -48,15 +48,17 @@
} else {
app = null;
}
- return buildPreferenceControllers(context, app, this, new NotificationBackend());
+ return buildPreferenceControllers(context, app, this, new NotificationBackend(),
+ new ZenHelperBackend(context));
}
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
@Nullable Application app, @Nullable Fragment host,
- @Nullable NotificationBackend notificationBackend) {
+ @Nullable NotificationBackend notificationBackend,
+ @Nullable ZenHelperBackend zenHelperBackend) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new ZenModeAllBypassingAppsPreferenceController(context, app, host,
- notificationBackend));
+ zenHelperBackend));
controllers.add(new ZenModeAddBypassingAppsPreferenceController(context, app, host,
notificationBackend));
return controllers;
@@ -86,7 +88,7 @@
@Override
public List<AbstractPreferenceController> createPreferenceControllers(
Context context) {
- return buildPreferenceControllers(context, null, null, null);
+ return buildPreferenceControllers(context, null, null, null, null);
}
};
}
diff --git a/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java b/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java
index 483b8f0..1ee43fb 100644
--- a/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java
+++ b/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java
@@ -498,29 +498,30 @@
MessageFormat msgFormat = new MessageFormat(
mContext.getString(R.string.zen_modes_summary_some_active),
Locale.getDefault());
-
- Map<String, Object> args = new HashMap<>();
- args.put("count", activeModes.size());
- args.put("mode_1", activeModes.get(0).getName());
- if (activeModes.size() >= 2) {
- args.put("mode_2", activeModes.get(1).getName());
- if (activeModes.size() == 3) {
- args.put("mode_3", activeModes.get(2).getName());
- }
- }
-
- return msgFormat.format(args);
+ return buildModesSummary(msgFormat, activeModes);
} else {
- int automaticModeCount = (int) modes.stream()
- .filter(m -> m.isEnabled() && !m.isManualDnd() && !m.isCustomManual())
- .count();
-
+ List<ZenMode> modesExcludingImplicit = modes.stream()
+ .filter(m -> m.getKind() != ZenMode.Kind.IMPLICIT)
+ .toList();
MessageFormat msgFormat = new MessageFormat(
- mContext.getString(R.string.zen_modes_summary_none_active),
+ mContext.getString(R.string.zen_modes_summary),
Locale.getDefault());
- Map<String, Object> msgArgs = Map.of("count", automaticModeCount);
- return msgFormat.format(msgArgs);
+ return buildModesSummary(msgFormat, modesExcludingImplicit);
}
}
+ private static String buildModesSummary(MessageFormat msgFormat, List<ZenMode> modes) {
+ Map<String, Object> args = new HashMap<>();
+ args.put("count", modes.size());
+ if (modes.size() >= 1) {
+ args.put("mode_1", modes.get(0).getName());
+ if (modes.size() >= 2) {
+ args.put("mode_2", modes.get(1).getName());
+ if (modes.size() >= 3) {
+ args.put("mode_3", modes.get(2).getName());
+ }
+ }
+ }
+ return msgFormat.format(args);
+ }
}
diff --git a/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java b/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java
index 1933635..13d5c6e 100644
--- a/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java
@@ -40,6 +40,7 @@
import androidx.preference.Preference;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;
@@ -108,7 +109,9 @@
tryParseScheduleConditionId(mode.getRule().getConditionId());
if (schedule != null) {
preference.setTitle(SystemZenRules.getTimeSummary(mContext, schedule));
- preference.setSummary(SystemZenRules.getShortDaysSummary(mContext, schedule));
+ preference.setSummary(Utils.createAccessibleSequence(
+ SystemZenRules.getDaysOfWeekShort(mContext, schedule),
+ SystemZenRules.getDaysOfWeekFull(mContext, schedule)));
} else {
// Fallback, but shouldn't happen.
Log.wtf(TAG, "SCHEDULE_TIME mode without schedule: " + mode);
@@ -174,8 +177,8 @@
@DrawableRes int icon;
if (mode.getType() == TYPE_BEDTIME) {
icon = com.android.internal.R.drawable.ic_zen_mode_type_schedule_time; // Clock
- } else if (mode.getType() == TYPE_DRIVING) {
- icon = com.android.internal.R.drawable.ic_zen_mode_type_driving; // Car
+ } else if (mode.getType() == TYPE_DRIVING && configurationIntent != null) {
+ icon = R.drawable.ic_zen_mode_trigger_with_settings; // Gear
} else {
icon = configurationIntent != null ? R.drawable.ic_zen_mode_trigger_with_activity
: R.drawable.ic_zen_mode_trigger_without_activity;
diff --git a/src/com/android/settings/notification/modes/ZenModesListItemPreference.java b/src/com/android/settings/notification/modes/ZenModesListItemPreference.java
index 0909c6f..4b1ffd0 100644
--- a/src/com/android/settings/notification/modes/ZenModesListItemPreference.java
+++ b/src/com/android/settings/notification/modes/ZenModesListItemPreference.java
@@ -15,6 +15,8 @@
*/
package com.android.settings.notification.modes;
+import static com.android.settings.Utils.createAccessibleSequence;
+
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.widget.TextView;
@@ -28,6 +30,7 @@
import com.android.settingslib.Utils;
import com.android.settingslib.notification.modes.ZenIconLoader;
import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModeDescriptions;
import com.google.common.base.Strings;
@@ -42,6 +45,7 @@
private final Context mContext;
private final ZenIconLoader mIconLoader;
private final Executor mUiExecutor;
+ private final ZenModeDescriptions mDescriptions;
private ZenMode mZenMode;
private TextView mTitleView;
@@ -58,6 +62,7 @@
mContext = context;
mIconLoader = iconLoader;
mUiExecutor = uiExecutor;
+ mDescriptions = new ZenModeDescriptions(context);
setZenMode(zenMode);
setKey(zenMode.getId());
}
@@ -89,20 +94,17 @@
}
setTitle(mZenMode.getName());
- String dynamicDescription = zenMode.getDynamicDescription(mContext);
- CharSequence statusText = switch (mZenMode.getStatus()) {
- case ENABLED_AND_ACTIVE ->
- Strings.isNullOrEmpty(dynamicDescription)
- ? mContext.getString(R.string.zen_mode_active_text)
- : mContext.getString(
- R.string.zen_mode_format_status_and_trigger,
- mContext.getString(R.string.zen_mode_active_text),
- dynamicDescription);
- case ENABLED -> dynamicDescription;
- case DISABLED_BY_USER -> mContext.getString(R.string.zen_mode_disabled_by_user);
- case DISABLED_BY_OTHER -> mContext.getString(R.string.zen_mode_disabled_needs_setup);
- };
- setSummary(statusText);
+ ZenMode.Status status = zenMode.getStatus();
+ String statusText = getStatusText(status, mDescriptions.getTriggerDescription(zenMode));
+ String triggerDescriptionForA11y = mDescriptions.getTriggerDescriptionForAccessibility(
+ zenMode);
+
+ if (triggerDescriptionForA11y != null) {
+ setSummary(createAccessibleSequence(statusText,
+ getStatusText(status, triggerDescriptionForA11y)));
+ } else {
+ setSummary(statusText);
+ }
setIconSize(ICON_SIZE_SMALL);
FutureUtil.whenDone(
@@ -116,6 +118,21 @@
updateTextColor(zenMode);
}
+ private String getStatusText(ZenMode.Status status, String triggerDescription) {
+ return switch (status) {
+ case ENABLED_AND_ACTIVE ->
+ Strings.isNullOrEmpty(triggerDescription)
+ ? mContext.getString(R.string.zen_mode_active_text)
+ : mContext.getString(
+ R.string.zen_mode_format_status_and_trigger,
+ mContext.getString(R.string.zen_mode_active_text),
+ triggerDescription);
+ case ENABLED -> Strings.nullToEmpty(triggerDescription);
+ case DISABLED_BY_USER -> mContext.getString(R.string.zen_mode_disabled_by_user);
+ case DISABLED_BY_OTHER -> mContext.getString(R.string.zen_mode_disabled_needs_setup);
+ };
+ }
+
private void updateTextColor(@Nullable ZenMode zenMode) {
boolean isActive = zenMode != null && zenMode.isActive();
if (mTitleView != null) {
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index aba9edd..eb7d667 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -213,8 +213,15 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
- setTheme(SetupWizardUtils.getTheme(this, getIntent()));
- ThemeHelper.trySetDynamicColor(this);
+ if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
+ if (!ThemeHelper.trySetSuwTheme(this)) {
+ setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
+ } else {
+ setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
super.onCreate(savedInstanceState);
findViewById(R.id.content_parent).setFitsSystemWindows(false);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index c331991..8c4c621 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -168,8 +168,16 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
- setTheme(SetupWizardUtils.getTheme(this, getIntent()));
- ThemeHelper.trySetDynamicColor(this);
+ if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
+ if (!ThemeHelper.trySetSuwTheme(this)) {
+ setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
+ } else {
+
+ setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
super.onCreate(savedInstanceState);
findViewById(R.id.content_parent).setFitsSystemWindows(false);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
index d656934..7827b4b 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
@@ -21,6 +21,7 @@
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PASSWORD_HEADER;
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PATTERN_HEADER;
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PIN_HEADER;
+import static android.content.Intent.EXTRA_PACKAGE_NAME;
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
import static com.android.systemui.biometrics.Utils.toBitmap;
@@ -152,8 +153,10 @@
== BiometricPrompt.AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL;
ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, mUserManager,
mDevicePolicyManager, mUserId, isStrongAuth);
- ConfirmDeviceCredentialUtils.checkForPendingIntent(
- ConfirmDeviceCredentialActivity.this);
+ if (isInternalActivity()) {
+ ConfirmDeviceCredentialUtils.checkForPendingIntent(
+ ConfirmDeviceCredentialActivity.this);
+ }
setResult(Activity.RESULT_OK);
finish();
@@ -244,7 +247,14 @@
promptInfo.setDisallowBiometricsIfPolicyExists(mCheckDevicePolicyManager);
promptInfo.setAuthenticators(mBiometricsAuthenticators);
promptInfo.setNegativeButtonText(negativeButtonText);
- promptInfo.setRealCallerForConfirmDeviceCredentialActivity(getCallingActivity());
+
+ final String callerPackageName = intent.getStringExtra(EXTRA_PACKAGE_NAME);
+ if (isInternalActivity() && callerPackageName != null) {
+ promptInfo.setRealCallerForConfirmDeviceCredentialActivity(
+ new ComponentName(callerPackageName, ""));
+ } else {
+ promptInfo.setRealCallerForConfirmDeviceCredentialActivity(getCallingActivity());
+ }
if (android.multiuser.Flags.enablePrivateSpaceFeatures()
&& android.multiuser.Flags.usePrivateSpaceIconInBiometricPrompt()
@@ -377,7 +387,14 @@
setBiometricPromptPropertiesForPrivateProfile(promptInfo);
showBiometricPrompt(promptInfo, effectiveUserId);
launchedBiometric = true;
+ } else if (Flags.privateSpaceBp()) {
+ promptInfo.setAuthenticators(BiometricManager.Authenticators.DEVICE_CREDENTIAL);
+ setBiometricPromptPropertiesForPrivateProfile(promptInfo);
+ showBiometricPrompt(promptInfo, mUserId);
+ launchedBiometric = true;
} else {
+ // TODO(b/376328272): Remove custom private space behavior
+ mDetails = Utils.getConfirmCredentialStringForUser(this, mUserId, credentialType);
showConfirmCredentials();
launchedCDC = true;
}
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
index de3ee51..60ddfdc 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
@@ -78,7 +78,15 @@
setTheme(SetupWizardUtils.getTheme(this, getIntent()));
mConfirmCredentialTheme = ConfirmCredentialTheme.NORMAL;
}
- ThemeHelper.trySetDynamicColor(this);
+
+ if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
+ if (!ThemeHelper.trySetSuwTheme(this)) {
+ setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
+ } else {
+ ThemeHelper.trySetDynamicColor(this);
+ }
super.onCreate(savedState);
if (mConfirmCredentialTheme == ConfirmCredentialTheme.NORMAL) {
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index 2665c37..a09db22 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -66,10 +66,13 @@
import com.android.internal.widget.TextViewInputDisabler;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
+import com.android.settings.SetupWizardUtils;
import com.android.settings.Utils;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
+import com.google.android.setupdesign.util.ThemeHelper;
+
import java.util.ArrayList;
public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
@@ -85,6 +88,18 @@
public static class InternalActivity extends ConfirmLockPassword {
}
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
+ if (!ThemeHelper.trySetSuwTheme(this)) {
+ setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
+ ThemeHelper.trySetDynamicColor(this);
+ }
+ }
+ }
+
@Override
public Intent getIntent() {
Intent modIntent = new Intent(super.getIntent());
diff --git a/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java b/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java
index de0d386..9f0c404 100644
--- a/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java
+++ b/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java
@@ -35,8 +35,8 @@
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import java.util.Locale;
@@ -138,13 +138,13 @@
for (String localeTag : locales) {
Locale supportedLocale = Locale.forLanguageTag(localeTag);
if (isSameBaseLocale(targetLocale, supportedLocale)) {
- TickButtonPreference pref = new TickButtonPreference(mContext);
+ SelectorWithWidgetPreference pref = new SelectorWithWidgetPreference(mContext);
String numberingName = getNumberingSystem(supportedLocale);
pref.setTitle(numberingName);
String key = supportedLocale.getUnicodeLocaleType(
ExtensionTypes.NUMBERING_SYSTEM);
pref.setKey(key == null ? RegionalPreferencesDataUtils.DEFAULT_VALUE : key);
- pref.setSelected(isSameNumberingSystem(targetLocale, supportedLocale));
+ pref.setChecked(isSameNumberingSystem(targetLocale, supportedLocale));
screen.addPreference(pref);
}
}
@@ -168,11 +168,12 @@
private void handleNumberSystemSelect(Preference preference) {
for (int i = 0; i < mPreferenceScreen.getPreferenceCount(); i++) {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(i);
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceScreen.getPreference(i);
Log.i(TAG, "[onPreferenceClick] key is " + pref.getKey());
if (pref.getKey().equals(preference.getKey())) {
String numberingSystem = pref.getKey();
- pref.setSelected(true);
+ pref.setChecked(true);
Locale updatedLocale =
saveNumberingSystemToLocale(Locale.forLanguageTag(mSelectedLanguage),
numberingSystem);
@@ -188,7 +189,7 @@
mParentFragment.setArguments(bundle);
continue;
}
- pref.setSelected(false);
+ pref.setChecked(false);
}
}
diff --git a/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java b/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java
index 8be0043..dda0579 100644
--- a/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java
+++ b/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java
@@ -24,8 +24,8 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
/** A base controller for handling all regional preferences controllers. */
public abstract class RegionalPreferenceListBasePreferenceController extends
@@ -54,15 +54,14 @@
String[] unitValues = getUnitValues();
for (int i = 0; i < unitValues.length; i++) {
- TickButtonPreference pref = new TickButtonPreference(mContext);
+ SelectorWithWidgetPreference pref = new SelectorWithWidgetPreference(mContext);
mPreferenceCategory.addPreference(pref);
final String item = unitValues[i];
final String value = RegionalPreferencesDataUtils.getDefaultUnicodeExtensionData(
mContext, getExtensionTypes());
pref.setTitle(getPreferenceTitle(item));
pref.setKey(item);
- pref.setOnPreferenceClickListener(clickedPref -> {
- setSelected(pref);
+ pref.setOnClickListener(v -> {
RegionalPreferencesDataUtils.savePreference(mContext, getExtensionTypes(),
item.equals(RegionalPreferencesDataUtils.DEFAULT_VALUE)
? null : item);
@@ -70,20 +69,8 @@
getMetricsActionKey() == SettingsEnums.ACTION_SET_FIRST_DAY_OF_WEEK ? ""
: getPreferenceTitle(value) + " > " + getPreferenceTitle(item);
mMetricsFeatureProvider.action(mContext, getMetricsActionKey(), metrics);
- return true;
});
- pref.setSelected(!value.isEmpty() && item.equals(value));
- }
- }
-
- private void setSelected(TickButtonPreference preference) {
- for (int i = 0; i < mPreferenceCategory.getPreferenceCount(); i++) {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(i);
- if (pref.getKey().equals(preference.getKey())) {
- pref.setSelected(true);
- continue;
- }
- pref.setSelected(false);
+ pref.setChecked(!value.isEmpty() && item.equals(value));
}
}
diff --git a/src/com/android/settings/restriction/UserRestrictionBindingHelper.kt b/src/com/android/settings/restriction/UserRestrictionBindingHelper.kt
new file mode 100644
index 0000000..16104de
--- /dev/null
+++ b/src/com/android/settings/restriction/UserRestrictionBindingHelper.kt
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2024 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.settings.restriction
+
+import android.content.Context
+import com.android.settings.PreferenceRestrictionMixin
+import com.android.settingslib.datastore.HandlerExecutor
+import com.android.settingslib.datastore.KeyedObserver
+import com.android.settingslib.preference.PreferenceScreenBindingHelper
+import com.android.settingslib.preference.PreferenceScreenBindingHelper.Companion.CHANGE_REASON_STATE
+
+/** Helper to rebind preference immediately when user restriction is changed. */
+class UserRestrictionBindingHelper(
+ context: Context,
+ private val screenBindingHelper: PreferenceScreenBindingHelper,
+) : AutoCloseable {
+ private val restrictionKeysToPreferenceKeys: Map<String, MutableSet<String>> =
+ mutableMapOf<String, MutableSet<String>>()
+ .apply {
+ screenBindingHelper.forEachRecursively {
+ val metadata = it.metadata
+ if (metadata is PreferenceRestrictionMixin) {
+ for (restrictionKey in metadata.restrictionKeys) {
+ getOrPut(restrictionKey) { mutableSetOf() }.add(metadata.key)
+ }
+ }
+ }
+ }
+ .toMap()
+
+ private val userRestrictionObserver: KeyedObserver<String?>?
+
+ init {
+ if (restrictionKeysToPreferenceKeys.isEmpty()) {
+ userRestrictionObserver = null
+ } else {
+ val observer =
+ KeyedObserver<String?> { restrictionKey, _ ->
+ restrictionKey?.let { notifyRestrictionChanged(it) }
+ }
+ UserRestrictions.addObserver(context, observer, HandlerExecutor.main)
+ userRestrictionObserver = observer
+ }
+ }
+
+ private fun notifyRestrictionChanged(restrictionKey: String) {
+ val keys = restrictionKeysToPreferenceKeys[restrictionKey] ?: return
+ for (key in keys) screenBindingHelper.notifyChange(key, CHANGE_REASON_STATE)
+ }
+
+ override fun close() {
+ userRestrictionObserver?.let { UserRestrictions.removeObserver(it) }
+ }
+}
diff --git a/src/com/android/settings/restriction/UserRestrictions.kt b/src/com/android/settings/restriction/UserRestrictions.kt
new file mode 100644
index 0000000..1fa6830
--- /dev/null
+++ b/src/com/android/settings/restriction/UserRestrictions.kt
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2024 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.settings.restriction
+
+import android.content.Context
+import android.os.Bundle
+import android.os.IUserRestrictionsListener
+import android.os.UserManager
+import com.android.settingslib.datastore.KeyedDataObservable
+import com.android.settingslib.datastore.KeyedObserver
+import java.util.concurrent.Executor
+import java.util.concurrent.atomic.AtomicBoolean
+
+/** Helper class to monitor user restriction changes. */
+object UserRestrictions {
+ private val observable = KeyedDataObservable<String>()
+
+ private val userRestrictionsListener =
+ object : IUserRestrictionsListener.Stub() {
+ override fun onUserRestrictionsChanged(
+ userId: Int,
+ newRestrictions: Bundle,
+ prevRestrictions: Bundle,
+ ) {
+ // there is no API to remove listener, do a quick check to avoid unnecessary work
+ if (!observable.hasAnyObserver()) return
+
+ val changedKeys = mutableSetOf<String>()
+ val keys = newRestrictions.keySet() + prevRestrictions.keySet()
+ for (key in keys) {
+ if (newRestrictions.getBoolean(key) != prevRestrictions.getBoolean(key)) {
+ changedKeys.add(key)
+ }
+ }
+
+ for (key in changedKeys) observable.notifyChange(key, 0)
+ }
+ }
+
+ private val listenerAdded = AtomicBoolean()
+
+ fun addObserver(context: Context, observer: KeyedObserver<String?>, executor: Executor) {
+ context.addUserRestrictionsListener()
+ observable.addObserver(observer, executor)
+ }
+
+ fun addObserver(
+ context: Context,
+ key: String,
+ observer: KeyedObserver<String>,
+ executor: Executor,
+ ) {
+ context.addUserRestrictionsListener()
+ observable.addObserver(key, observer, executor)
+ }
+
+ private fun Context.addUserRestrictionsListener() {
+ if (listenerAdded.getAndSet(true)) return
+ // surprisingly, there is no way to remove the listener
+ applicationContext
+ .getSystemService(UserManager::class.java)
+ .addUserRestrictionsListener(userRestrictionsListener)
+ }
+
+ fun removeObserver(observer: KeyedObserver<String?>) = observable.removeObserver(observer)
+
+ fun removeObserver(key: String, observer: KeyedObserver<String>) =
+ observable.removeObserver(key, observer)
+}
diff --git a/src/com/android/settings/security/CredentialStorage.java b/src/com/android/settings/security/CredentialStorage.java
index b62aeae..b1c65a7 100644
--- a/src/com/android/settings/security/CredentialStorage.java
+++ b/src/com/android/settings/security/CredentialStorage.java
@@ -128,22 +128,12 @@
final int uid = bundle.getInt(Credentials.EXTRA_INSTALL_AS_UID, KeyProperties.UID_SELF);
- if (uid != KeyProperties.UID_SELF && !UserHandle.isSameUser(uid, Process.myUid())) {
- final int dstUserId = UserHandle.getUserId(uid);
-
- // Restrict install target to the wifi uid.
- if (uid != Process.WIFI_UID) {
+ if (uid != KeyProperties.UID_SELF && uid != Process.WIFI_UID) {
+ if (!UserHandle.isSameUser(uid, Process.myUid())) {
Log.e(TAG, "Failed to install credentials as uid " + uid + ": cross-user installs"
+ " may only target wifi uids");
return true;
}
-
- final Intent installIntent = new Intent(ACTION_INSTALL)
- .setPackage(getPackageName())
- .setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
- .putExtras(bundle);
- startActivityAsUser(installIntent, new UserHandle(dstUserId));
- return true;
}
String alias = bundle.getString(Credentials.EXTRA_USER_KEY_ALIAS, null);
diff --git a/src/com/android/settings/security/LockScreenPreferenceScreen.kt b/src/com/android/settings/security/LockScreenPreferenceScreen.kt
new file mode 100644
index 0000000..0c7877f
--- /dev/null
+++ b/src/com/android/settings/security/LockScreenPreferenceScreen.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2024 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.settings.security
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+open class LockScreenPreferenceScreen : PreferenceScreenCreator {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.lockscreen_settings_title
+
+ override val keywords: Int
+ get() = R.string.keywords_ambient_display_screen
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystLockscreenFromDisplaySettings()
+
+ override fun hasCompleteHierarchy() = false
+
+ override fun fragmentClass() = LockscreenDashboardFragment::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ // add hierarchy here
+ }
+
+ companion object {
+ const val KEY = "lockscreen_from_display_settings"
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/security/LockscreenDashboardFragment.java b/src/com/android/settings/security/LockscreenDashboardFragment.java
index 2e4a1f2..1e299a3 100644
--- a/src/com/android/settings/security/LockscreenDashboardFragment.java
+++ b/src/com/android/settings/security/LockscreenDashboardFragment.java
@@ -29,6 +29,8 @@
import android.os.Looper;
import android.provider.Settings;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
@@ -160,6 +162,11 @@
}
}
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return LockScreenPreferenceScreen.KEY;
+ }
+
private AmbientDisplayConfiguration getConfig(Context context) {
if (mConfig == null) {
mConfig = new AmbientDisplayConfiguration(context);
diff --git a/src/com/android/settings/spa/SettingsSpaEnvironment.kt b/src/com/android/settings/spa/SettingsSpaEnvironment.kt
index 8b48179..7702db6 100644
--- a/src/com/android/settings/spa/SettingsSpaEnvironment.kt
+++ b/src/com/android/settings/spa/SettingsSpaEnvironment.kt
@@ -42,6 +42,7 @@
import com.android.settings.spa.app.specialaccess.TurnScreenOnAppsAppListProvider
import com.android.settings.spa.app.specialaccess.UseFullScreenIntentAppListProvider
import com.android.settings.spa.app.specialaccess.WifiControlAppListProvider
+import com.android.settings.spa.app.specialaccess.WriteSystemPreferencesAppListProvider
import com.android.settings.spa.app.storage.StorageAppListPageProvider
import com.android.settings.spa.core.instrumentation.SpaLogMetricsProvider
import com.android.settings.spa.core.instrumentation.SpaLogProvider
@@ -80,6 +81,7 @@
NfcTagAppsSettingsProvider,
LongBackgroundTasksAppListProvider,
TurnScreenOnAppsAppListProvider,
+ WriteSystemPreferencesAppListProvider,
)
}
diff --git a/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt b/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt
index f7e53ec..ddddd8c 100644
--- a/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt
@@ -42,6 +42,7 @@
import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider
import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider
import com.android.settings.spa.app.specialaccess.PictureInPictureListProvider
+import com.android.settings.spa.app.specialaccess.WriteSystemPreferencesAppListProvider
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
@@ -167,6 +168,7 @@
InstallUnknownAppsListProvider.InfoPageEntryItem(app)
InteractAcrossProfilesDetailsPreference(app)
AlarmsAndRemindersAppListProvider.InfoPageEntryItem(app)
+ WriteSystemPreferencesAppListProvider.InfoPageEntryItem(app)
}
Category(title = stringResource(R.string.app_install_details_group_title)) {
diff --git a/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt b/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt
index 41e5c84..c9ff8a0 100644
--- a/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt
+++ b/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt
@@ -70,6 +70,7 @@
WifiControlAppListProvider,
LongBackgroundTasksAppListProvider,
TurnScreenOnAppsAppListProvider,
+ WriteSystemPreferencesAppListProvider,
)
.map { it.buildAppListInjectEntry().setLink(fromPage = owner).build() }
}
diff --git a/src/com/android/settings/spa/app/specialaccess/WriteSystemPreferences.kt b/src/com/android/settings/spa/app/specialaccess/WriteSystemPreferences.kt
new file mode 100644
index 0000000..e4b9ef1
--- /dev/null
+++ b/src/com/android/settings/spa/app/specialaccess/WriteSystemPreferences.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2024 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.settings.spa.app.specialaccess
+
+import android.Manifest
+import android.app.AppOpsManager
+import android.content.Context
+import com.android.settings.R
+import com.android.settingslib.spaprivileged.model.app.AppOps
+import com.android.settingslib.spaprivileged.model.app.PackageManagers
+import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
+import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
+import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
+
+object WriteSystemPreferencesAppListProvider : TogglePermissionAppListProvider {
+ override val permissionType = "WriteSystemPreferences"
+ override fun createModel(context: Context) = WriteSystemPreferencesAppListModel(context)
+}
+
+class WriteSystemPreferencesAppListModel(context: Context) : AppOpPermissionListModel(context) {
+ override val pageTitleResId = R.string.write_system_preferences_page_title
+ override val switchTitleResId = R.string.write_system_preferences_switch_title
+ override val footerResId = R.string.write_system_preferences_footer_description
+ override val appOps = AppOps(
+ op = AppOpsManager.OP_WRITE_SYSTEM_PREFERENCES,
+ setModeByUid = true,
+ )
+ override val permission = Manifest.permission.WRITE_SYSTEM_PREFERENCES
+
+ override fun filter(userIdFlow: Flow<Int>, recordListFlow: Flow<List<AppOpPermissionRecord>>):
+ Flow<List<AppOpPermissionRecord>> {
+ return super.filter(userIdFlow, recordListFlow).map { recordList ->
+ recordList.filter { app ->
+ // Only apps that have READ_SYSTEM_PREFERENCES can utilize WRITE_SYSTEM_PREFERENCES.
+ // This write permission is (currently) non-functionality without the corresponding
+ // read permission, and the read permission can only be granted via pre-grant or
+ // role. As such, we don't show apps that are "requesting" this permission without
+ // holding the read permission, as it would create confusion and not provide them
+ // any functionality.
+ with (PackageManagers) {
+ app.app.hasGrantPermission(Manifest.permission.READ_SYSTEM_PREFERENCES)
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/spa/app/specialaccess/WriteSystemPreferencesPreferenceController.kt b/src/com/android/settings/spa/app/specialaccess/WriteSystemPreferencesPreferenceController.kt
new file mode 100644
index 0000000..fb808fa
--- /dev/null
+++ b/src/com/android/settings/spa/app/specialaccess/WriteSystemPreferencesPreferenceController.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 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.settings.spa.app.specialaccess
+
+import android.content.Context
+import androidx.preference.Preference
+import com.android.settings.core.BasePreferenceController
+import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
+import com.android.settingslib.flags.Flags
+
+class WriteSystemPreferencesPreferenceController(
+ context: Context, key: String
+) : BasePreferenceController(context, key) {
+ override fun getAvailabilityStatus(): Int {
+ return if (Flags.settingsCatalyst() && Flags.writeSystemPreferencePermissionEnabled()) {
+ AVAILABLE
+ } else {
+ UNSUPPORTED_ON_DEVICE
+ }
+ }
+
+ override fun handlePreferenceTreeClick(preference: Preference?): Boolean {
+ return if (preference?.key == mPreferenceKey) {
+ mContext.startSpaActivity(WriteSystemPreferencesAppListProvider.getAppListRoute())
+ true
+ } else {
+ false
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
index fe90a2a..2dc5b2d 100644
--- a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
+++ b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
@@ -46,8 +46,6 @@
restrictedSwitchPreference.setVisible(true);
if (mUserCaps.mDisallowAddUserSetByAdmin) {
restrictedSwitchPreference.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
- } else if (mUserCaps.mDisallowAddUser) {
- restrictedSwitchPreference.setVisible(false);
}
} else {
restrictedSwitchPreference.setDisabledByAdmin(
@@ -62,7 +60,11 @@
if (!mUserCaps.isAdmin()) {
return DISABLED_FOR_USER;
} else if (android.multiuser.Flags.newMultiuserSettingsUx()) {
- return AVAILABLE;
+ if (mUserCaps.mDisallowAddUser && !mUserCaps.mDisallowAddUserSetByAdmin) {
+ return DISABLED_FOR_USER;
+ } else {
+ return AVAILABLE;
+ }
} else if (mUserCaps.disallowAddUser() || mUserCaps.disallowAddUserSetByAdmin()) {
return DISABLED_FOR_USER;
} else {
diff --git a/src/com/android/settings/utils/IntentUtils.kt b/src/com/android/settings/utils/IntentUtils.kt
new file mode 100644
index 0000000..dbdfa23
--- /dev/null
+++ b/src/com/android/settings/utils/IntentUtils.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 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.settings.utils
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import com.android.settings.SettingsActivity
+
+/**
+ * Returns the [Intent] to start given settings activity and locate the preference.
+ *
+ * @param context context
+ * @param activityClass activity to start
+ * @param key preference key to locate
+ */
+fun makeLaunchIntent(context: Context, activityClass: Class<out Activity>, key: String?) =
+ Intent(context, activityClass).apply {
+ if (key != null) putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key)
+ }
diff --git a/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java b/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java
index 82ef58b..68b4469 100644
--- a/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java
+++ b/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java
@@ -29,10 +29,12 @@
import android.util.TypedValue;
import android.view.View;
+import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
-import androidx.preference.PreferenceGroupAdapter;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;
import androidx.recyclerview.widget.RecyclerView;
@@ -41,40 +43,35 @@
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.accessibility.AccessibilityUtil;
+import com.android.settingslib.widget.SettingsPreferenceGroupAdapter;
+import com.android.settingslib.widget.SettingsThemeHelper;
import com.google.android.material.appbar.AppBarLayout;
-public class HighlightablePreferenceGroupAdapter extends PreferenceGroupAdapter {
+public class HighlightablePreferenceGroupAdapter extends SettingsPreferenceGroupAdapter {
private static final String TAG = "HighlightableAdapter";
- @VisibleForTesting
- static final long DELAY_COLLAPSE_DURATION_MILLIS = 300L;
- @VisibleForTesting
- static final long DELAY_HIGHLIGHT_DURATION_MILLIS = 600L;
- @VisibleForTesting
- static final long DELAY_HIGHLIGHT_DURATION_MILLIS_A11Y = 300L;
+ @VisibleForTesting static final long DELAY_COLLAPSE_DURATION_MILLIS = 300L;
+ @VisibleForTesting static final long DELAY_HIGHLIGHT_DURATION_MILLIS = 600L;
+ @VisibleForTesting static final long DELAY_HIGHLIGHT_DURATION_MILLIS_A11Y = 300L;
private static final long HIGHLIGHT_DURATION = 15000L;
private static final long HIGHLIGHT_FADE_OUT_DURATION = 500L;
private static final long HIGHLIGHT_FADE_IN_DURATION = 200L;
- @VisibleForTesting
- final int mHighlightColor;
- @VisibleForTesting
- boolean mFadeInAnimated;
+ @VisibleForTesting @DrawableRes final int mHighlightBackgroundRes;
+ @VisibleForTesting boolean mFadeInAnimated;
private final Context mContext;
- private final int mNormalBackgroundRes;
- private final String mHighlightKey;
+ private final @DrawableRes int mNormalBackgroundRes;
+ private final @Nullable String mHighlightKey;
private boolean mHighlightRequested;
private int mHighlightPosition = RecyclerView.NO_POSITION;
-
/**
* Tries to override initial expanded child count.
- * <p/>
- * Initial expanded child count will be ignored if:
- * 1. fragment contains request to highlight a particular row.
- * 2. count value is invalid.
+ *
+ * <p>Initial expanded child count will be ignored if: 1. fragment contains request to highlight
+ * a particular row. 2. count value is invalid.
*/
public static void adjustInitialExpandedChildCount(SettingsPreferenceFragment host) {
if (host == null) {
@@ -101,21 +98,21 @@
screen.setInitialExpandedChildrenCount(initialCount);
}
- public HighlightablePreferenceGroupAdapter(PreferenceGroup preferenceGroup, String key,
+ public HighlightablePreferenceGroupAdapter(
+ @NonNull PreferenceGroup preferenceGroup,
+ @Nullable String key,
boolean highlightRequested) {
super(preferenceGroup);
mHighlightKey = key;
mHighlightRequested = highlightRequested;
mContext = preferenceGroup.getContext();
final TypedValue outValue = new TypedValue();
- mContext.getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
- outValue, true /* resolveRefs */);
- mNormalBackgroundRes = outValue.resourceId;
- mHighlightColor = mContext.getColor(R.color.preference_highlight_color);
+ mNormalBackgroundRes = R.drawable.preference_background;
+ mHighlightBackgroundRes = R.drawable.preference_background_highlighted;
}
@Override
- public void onBindViewHolder(PreferenceViewHolder holder, int position) {
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
updateBackground(holder, position);
}
@@ -123,22 +120,23 @@
@VisibleForTesting
void updateBackground(PreferenceViewHolder holder, int position) {
View v = holder.itemView;
- if (position == mHighlightPosition
- && (mHighlightKey != null
- && TextUtils.equals(mHighlightKey, getItem(position).getKey()))
+ Preference preference = getItem(position);
+ if (preference != null
+ && position == mHighlightPosition
+ && (mHighlightKey != null && TextUtils.equals(mHighlightKey, preference.getKey()))
&& v.isShown()) {
// This position should be highlighted. If it's highlighted before - skip animation.
v.requestAccessibilityFocus();
- addHighlightBackground(holder, !mFadeInAnimated);
+ addHighlightBackground(holder, !mFadeInAnimated, position);
} else if (Boolean.TRUE.equals(v.getTag(R.id.preference_highlighted))) {
// View with highlight is reused for a view that should not have highlight
- removeHighlightBackground(holder, false /* animate */);
+ removeHighlightBackground(holder, false /* animate */, position);
}
}
/**
- * A function can highlight a specific setting in recycler view.
- * note: Before highlighting a setting, screen collapses tool bar with an animation.
+ * A function can highlight a specific setting in recycler view. note: Before highlighting a
+ * setting, screen collapses tool bar with an animation.
*/
public void requestHighlight(View root, RecyclerView recyclerView, AppBarLayout appBarLayout) {
if (mHighlightRequested || recyclerView == null || TextUtils.isEmpty(mHighlightKey)) {
@@ -153,21 +151,24 @@
mHighlightRequested = true;
// Collapse app bar after 300 milliseconds.
if (appBarLayout != null) {
- root.postDelayed(() -> {
- appBarLayout.setExpanded(false, true);
- }, DELAY_COLLAPSE_DURATION_MILLIS);
+ root.postDelayed(
+ () -> appBarLayout.setExpanded(false, true),
+ DELAY_COLLAPSE_DURATION_MILLIS);
}
// Remove the animator as early as possible to avoid a RecyclerView crash.
recyclerView.setItemAnimator(null);
// Scroll to correct position after a short delay.
- root.postDelayed(() -> {
- if (ensureHighlightPosition()) {
- recyclerView.smoothScrollToPosition(mHighlightPosition);
- highlightAndFocusTargetItem(recyclerView, mHighlightPosition);
- }
- }, AccessibilityUtil.isTouchExploreEnabled(mContext)
- ? DELAY_HIGHLIGHT_DURATION_MILLIS_A11Y : DELAY_HIGHLIGHT_DURATION_MILLIS);
+ root.postDelayed(
+ () -> {
+ if (ensureHighlightPosition()) {
+ recyclerView.smoothScrollToPosition(mHighlightPosition);
+ highlightAndFocusTargetItem(recyclerView, mHighlightPosition);
+ }
+ },
+ AccessibilityUtil.isTouchExploreEnabled(mContext)
+ ? DELAY_HIGHLIGHT_DURATION_MILLIS_A11Y
+ : DELAY_HIGHLIGHT_DURATION_MILLIS);
}
private void highlightAndFocusTargetItem(RecyclerView recyclerView, int highlightPosition) {
@@ -176,20 +177,23 @@
notifyItemChanged(mHighlightPosition);
target.itemView.requestFocus();
} else { // otherwise we're about to scroll to that view (but we might not be scrolling yet)
- recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
- if (newState == RecyclerView.SCROLL_STATE_IDLE) {
- notifyItemChanged(mHighlightPosition);
- ViewHolder target = recyclerView
- .findViewHolderForAdapterPosition(highlightPosition);
- if (target != null) {
- target.itemView.requestFocus();
+ recyclerView.addOnScrollListener(
+ new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(
+ @NonNull RecyclerView recyclerView, int newState) {
+ if (newState == RecyclerView.SCROLL_STATE_IDLE) {
+ notifyItemChanged(mHighlightPosition);
+ ViewHolder target =
+ recyclerView.findViewHolderForAdapterPosition(
+ highlightPosition);
+ if (target != null) {
+ target.itemView.requestFocus();
+ }
+ recyclerView.removeOnScrollListener(this);
+ }
}
- recyclerView.removeOnScrollListener(this);
- }
- }
- });
+ });
}
}
@@ -216,44 +220,54 @@
}
@VisibleForTesting
- void requestRemoveHighlightDelayed(PreferenceViewHolder holder) {
+ void requestRemoveHighlightDelayed(PreferenceViewHolder holder, int position) {
final View v = holder.itemView;
- v.postDelayed(() -> {
- mHighlightPosition = RecyclerView.NO_POSITION;
- removeHighlightBackground(holder, true /* animate */);
- }, HIGHLIGHT_DURATION);
+ v.postDelayed(
+ () -> {
+ mHighlightPosition = RecyclerView.NO_POSITION;
+ removeHighlightBackground(holder, true /* animate */, position);
+ },
+ HIGHLIGHT_DURATION);
}
- private void addHighlightBackground(PreferenceViewHolder holder, boolean animate) {
+ private void addHighlightBackground(
+ PreferenceViewHolder holder, boolean animate, int position) {
final View v = holder.itemView;
v.setTag(R.id.preference_highlighted, true);
+ final int backgroundFrom = getBackgroundRes(position, false);
+ final int backgroundTo = getBackgroundRes(position, true);
+
if (!animate) {
- v.setBackgroundColor(mHighlightColor);
+ v.setBackgroundResource(backgroundTo);
Log.d(TAG, "AddHighlight: Not animation requested - setting highlight background");
- requestRemoveHighlightDelayed(holder);
+ requestRemoveHighlightDelayed(holder, position);
return;
}
mFadeInAnimated = true;
- final int colorFrom = mNormalBackgroundRes;
- final int colorTo = mHighlightColor;
- final ValueAnimator fadeInLoop = ValueAnimator.ofObject(
- new ArgbEvaluator(), colorFrom, colorTo);
+
+ // TODO(b/377561018): Fix fade-in animation
+ final ValueAnimator fadeInLoop =
+ ValueAnimator.ofObject(new ArgbEvaluator(), backgroundFrom, backgroundTo);
fadeInLoop.setDuration(HIGHLIGHT_FADE_IN_DURATION);
fadeInLoop.addUpdateListener(
- animator -> v.setBackgroundColor((int) animator.getAnimatedValue()));
+ animator -> v.setBackgroundResource((int) animator.getAnimatedValue()));
fadeInLoop.setRepeatMode(ValueAnimator.REVERSE);
fadeInLoop.setRepeatCount(4);
fadeInLoop.start();
Log.d(TAG, "AddHighlight: starting fade in animation");
holder.setIsRecyclable(false);
- requestRemoveHighlightDelayed(holder);
+ requestRemoveHighlightDelayed(holder, position);
}
- private void removeHighlightBackground(PreferenceViewHolder holder, boolean animate) {
+ private void removeHighlightBackground(
+ PreferenceViewHolder holder, boolean animate, int position) {
final View v = holder.itemView;
+ int backgroundFrom = getBackgroundRes(position, true);
+ int backgroundTo = getBackgroundRes(position, false);
+
if (!animate) {
v.setTag(R.id.preference_highlighted, false);
- v.setBackgroundResource(mNormalBackgroundRes);
+ v.setBackgroundResource(backgroundTo);
Log.d(TAG, "RemoveHighlight: No animation requested - setting normal background");
return;
}
@@ -263,25 +277,33 @@
Log.d(TAG, "RemoveHighlight: Not highlighted - skipping");
return;
}
- int colorFrom = mHighlightColor;
- int colorTo = mNormalBackgroundRes;
v.setTag(R.id.preference_highlighted, false);
- final ValueAnimator colorAnimation = ValueAnimator.ofObject(
- new ArgbEvaluator(), colorFrom, colorTo);
+ // TODO(b/377561018): Fix fade-out animation
+ final ValueAnimator colorAnimation =
+ ValueAnimator.ofObject(new ArgbEvaluator(), backgroundFrom, backgroundTo);
colorAnimation.setDuration(HIGHLIGHT_FADE_OUT_DURATION);
colorAnimation.addUpdateListener(
- animator -> v.setBackgroundColor((int) animator.getAnimatedValue()));
- colorAnimation.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- // Animation complete - the background is now white. Change to mNormalBackgroundRes
- // so it is white and has ripple on touch.
- v.setBackgroundResource(mNormalBackgroundRes);
- holder.setIsRecyclable(true);
- }
- });
+ animator -> v.setBackgroundResource((int) animator.getAnimatedValue()));
+ colorAnimation.addListener(
+ new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(@NonNull Animator animation) {
+ // Animation complete - the background needs to be the target background.
+ v.setBackgroundResource(backgroundTo);
+ holder.setIsRecyclable(true);
+ }
+ });
colorAnimation.start();
Log.d(TAG, "Starting fade out animation");
}
+
+ private @DrawableRes int getBackgroundRes(int position, boolean isHighlighted) {
+ if (SettingsThemeHelper.isExpressiveTheme(mContext)) {
+ Log.d(TAG, "[Expressive Theme] get rounded background, highlight = " + isHighlighted);
+ return getRoundCornerDrawableRes(position, false, isHighlighted);
+ } else {
+ return (isHighlighted) ? mHighlightBackgroundRes : mNormalBackgroundRes;
+ }
+ }
}
diff --git a/src/com/android/settings/widget/MainSwitchBarMetadata.kt b/src/com/android/settings/widget/MainSwitchBarMetadata.kt
new file mode 100644
index 0000000..f55cfd0
--- /dev/null
+++ b/src/com/android/settings/widget/MainSwitchBarMetadata.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2024 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.settings.widget
+
+import android.content.Context
+import androidx.preference.Preference
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.TwoStatePreference
+import com.android.settingslib.preference.PreferenceBindingPlaceholder
+import com.android.settingslib.preference.TwoStatePreferenceBinding
+
+/** Base metadata of `MainSwitchBar`. */
+interface MainSwitchBarMetadata :
+ TwoStatePreference, TwoStatePreferenceBinding, PreferenceBindingPlaceholder {
+
+ override fun createWidget(context: Context) = MainSwitchBarPreference(context, this)
+
+ override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+ super.bind(preference, metadata)
+ (preference as MainSwitchBarPreference).updateVisibility()
+ }
+}
diff --git a/src/com/android/settings/widget/MainSwitchBarPreference.kt b/src/com/android/settings/widget/MainSwitchBarPreference.kt
new file mode 100644
index 0000000..6ed8877
--- /dev/null
+++ b/src/com/android/settings/widget/MainSwitchBarPreference.kt
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2024 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.settings.widget
+
+import android.content.Context
+import android.widget.CompoundButton
+import android.widget.CompoundButton.OnCheckedChangeListener
+import androidx.preference.TwoStatePreference
+import com.android.settings.SettingsActivity
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.widget.MainSwitchBar
+
+/** Preference abstraction of the [MainSwitchBar] in settings activity. */
+class MainSwitchBarPreference(context: Context, private val metadata: MainSwitchBarMetadata) :
+ TwoStatePreference(context), OnCheckedChangeListener {
+
+ private val mainSwitchBar: MainSwitchBar = (context as SettingsActivity).switchBar
+
+ override fun setTitle(title: CharSequence?) {
+ mainSwitchBar.setTitle(title)
+ }
+
+ override fun setSummary(summary: CharSequence?) {
+ mainSwitchBar.setSummary(summary)
+ }
+
+ override fun setEnabled(enabled: Boolean) {
+ mainSwitchBar.isEnabled = enabled
+ }
+
+ // Preference.setVisible is final, we cannot override it
+ fun updateVisibility() {
+ // always make preference invisible, the UI visibility is reflected on MainSwitchBar
+ isVisible = false
+ if ((metadata as? PreferenceAvailabilityProvider)?.isAvailable(context) != false) {
+ mainSwitchBar.show()
+ } else {
+ mainSwitchBar.hide()
+ }
+ }
+
+ override fun setChecked(checked: Boolean) {
+ // remove listener to update UI only
+ mainSwitchBar.removeOnSwitchChangeListener(this)
+ mainSwitchBar.isChecked = checked
+ mainSwitchBar.addOnSwitchChangeListener(this)
+ }
+
+ override fun onAttached() {
+ super.onAttached()
+ mainSwitchBar.addOnSwitchChangeListener(this)
+ }
+
+ override fun onCheckedChanged(buttonView: CompoundButton, isChecked: Boolean) {
+ // prevent user from toggling the switch before data store operation is done
+ isEnabled = false
+ // once data store is updated, isEnabled will be reset due to rebind
+ persistBoolean(isChecked)
+ }
+
+ override fun onDetached() {
+ mainSwitchBar.removeOnSwitchChangeListener(this)
+ super.onDetached()
+ }
+}
diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java
index d68a91a..121458c 100644
--- a/src/com/android/settings/widget/RadioButtonPickerFragment.java
+++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java
@@ -86,7 +86,13 @@
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- super.onCreatePreferences(savedInstanceState, rootKey);
+ if (isCatalystEnabled()) {
+ PreferenceScreen preferenceScreen = createPreferenceScreen();
+ setPreferenceScreen(preferenceScreen);
+ updateActivityTitleWithScreenTitle(preferenceScreen);
+ } else {
+ super.onCreatePreferences(savedInstanceState, rootKey);
+ }
try {
// Check if the xml specifies if static preferences should go on the top or bottom
final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(getContext(),
diff --git a/src/com/android/settings/widget/RestrictedAppPreference.java b/src/com/android/settings/widget/RestrictedAppPreference.java
index c76a5de..8655242 100644
--- a/src/com/android/settings/widget/RestrictedAppPreference.java
+++ b/src/com/android/settings/widget/RestrictedAppPreference.java
@@ -27,6 +27,7 @@
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
+import com.android.settingslib.RestrictedPreferenceHelperProvider;
import com.android.settingslib.widget.AppPreference;
/**
@@ -34,7 +35,8 @@
* {@link com.android.settingslib.RestrictedPreferenceHelper}.
* Used to show policy transparency on {@link AppPreference}.
*/
-public class RestrictedAppPreference extends AppPreference {
+public class RestrictedAppPreference extends AppPreference implements
+ RestrictedPreferenceHelperProvider {
private RestrictedPreferenceHelper mHelper;
private String userRestriction;
@@ -59,6 +61,11 @@
}
@Override
+ public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
+ return mHelper;
+ }
+
+ @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mHelper.onBindViewHolder(holder);
diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
index 9f6d787..17d5fc8 100644
--- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java
+++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
@@ -23,12 +23,14 @@
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
+import androidx.annotation.NonNull;
import androidx.preference.PreferenceViewHolder;
import androidx.preference.TwoStatePreference;
import com.android.settings.R;
import com.android.settings.widget.SettingsMainSwitchBar.OnBeforeCheckedChangeListener;
import com.android.settingslib.RestrictedPreferenceHelper;
+import com.android.settingslib.RestrictedPreferenceHelperProvider;
import com.android.settingslib.core.instrumentation.SettingsJankMonitor;
import java.util.ArrayList;
@@ -40,7 +42,7 @@
* to enable or disable the preferences on the page.
*/
public class SettingsMainSwitchPreference extends TwoStatePreference implements
- OnCheckedChangeListener {
+ OnCheckedChangeListener, RestrictedPreferenceHelperProvider {
private final List<OnBeforeCheckedChangeListener> mBeforeCheckedChangeListeners =
new ArrayList<>();
@@ -72,6 +74,11 @@
}
@Override
+ public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
+ return mRestrictedHelper;
+ }
+
+ @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
index f4873cf..c58bcd7 100644
--- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
+++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
@@ -207,7 +207,9 @@
@Override
public void onDestroy() {
mWorkerThread.quit();
-
+ if (mHandler.hasMessagesOrCallbacks()) {
+ mHandler.removeCallbacksAndMessages(null);
+ }
super.onDestroy();
}
diff --git a/src/com/android/settings/wifi/calling/WifiCallingScreen.kt b/src/com/android/settings/wifi/calling/WifiCallingScreen.kt
new file mode 100644
index 0000000..b50b828
--- /dev/null
+++ b/src/com/android/settings/wifi/calling/WifiCallingScreen.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2024 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.settings.wifi.calling
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class WifiCallingScreen : PreferenceScreenCreator {
+ override val key: String
+ get() = KEY
+
+ override val title: Int
+ get() = R.string.wifi_calling_settings_title
+
+ override val summary: Int
+ get() = R.string.wifi_calling_summary
+
+ override fun isFlagEnabled(context: Context) = Flags.catalystWifiCalling()
+
+ override fun fragmentClass() = WifiCallingSettingsForSub::class.java
+
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+ companion object {
+ const val KEY = "wifi_calling"
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index e5581d3..1de3f5c 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -54,9 +54,9 @@
import com.android.internal.telephony.flags.Flags;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
-import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.network.ims.WifiCallingQueryImsState;
import com.android.settings.network.telephony.wificalling.IWifiCallingRepository;
import com.android.settings.network.telephony.wificalling.WifiCallingRepository;
@@ -70,7 +70,7 @@
* This is the inner class of {@link WifiCallingSettings} fragment.
* The preference screen lets you enable/disable Wi-Fi Calling and change Wi-Fi Calling mode.
*/
-public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
+public class WifiCallingSettingsForSub extends DashboardFragment
implements OnCheckedChangeListener,
Preference.OnPreferenceChangeListener {
private static final String TAG = "WifiCallingForSub";
@@ -266,8 +266,6 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.wifi_calling_settings);
-
// SubId should always be specified when creating this fragment. Either through
// fragment.setArguments() or through savedInstanceState.
if (getArguments() != null && getArguments().containsKey(FRAGMENT_BUNDLE_SUBID)) {
@@ -447,6 +445,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.wifi_calling_settings;
+ }
+
+ @Override
public void onPause() {
super.onPause();
Context context = getActivity();
@@ -571,6 +574,11 @@
}
}
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
private void updateButtonWfcMode(boolean wfcEnabled,
int wfcMode, int wfcRoamingMode) {
mButtonWfcMode.setSummary(getWfcModeSummary(wfcMode));
@@ -716,4 +724,9 @@
return mOverrideWfcRoamingModeWhileUsingNtn;
}
+
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return WifiCallingScreen.KEY;
+ }
}
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java
index 9febba3..5ea9b3c 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java
@@ -58,6 +58,9 @@
private final WifiManager mWifiManager;
@VisibleForTesting
+ boolean mIsSwitchBusy;
+
+ @VisibleForTesting
DataSaverBackend mDataSaverBackend;
@VisibleForTesting
final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
@@ -102,8 +105,8 @@
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- // Filter out unnecessary callbacks when switch is disabled.
- if (!buttonView.isEnabled()) return;
+ // Filter out inappropriate callbacks when switch is busy.
+ if (mIsSwitchBusy) return;
if (isChecked) {
startTether();
@@ -115,14 +118,14 @@
void stopTether() {
if (!isWifiApActivated()) return;
- mSwitchBar.setEnabled(false);
+ mIsSwitchBusy = true;
mConnectivityManager.stopTethering(TETHERING_WIFI);
}
void startTether() {
if (isWifiApActivated()) return;
- mSwitchBar.setEnabled(false);
+ mIsSwitchBusy = true;
mConnectivityManager.startTethering(TETHERING_WIFI, true /* showProvisioningUi */,
mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
}
@@ -159,6 +162,7 @@
private void updateWifiSwitch() {
mSwitchBar.setEnabled(!mDataSaverBackend.isDataSaverEnabled());
+ mIsSwitchBusy = false;
}
@Override
diff --git a/tests/Enable16KbTests/Android.bp b/tests/Enable16KbTests/Android.bp
index 7e1d32c..72826bb 100644
--- a/tests/Enable16KbTests/Android.bp
+++ b/tests/Enable16KbTests/Android.bp
@@ -53,7 +53,7 @@
"compatibility-host-util",
"compatibility-tradefed",
],
- data: [
+ device_common_data: [
":test_16kb_app",
],
test_suites: ["general-tests"],
diff --git a/res/drawable/audio_sharing_rounded_bg.xml b/tests/robotests/res/layout/test_udfps_enroll_enrolling.xml
similarity index 64%
rename from res/drawable/audio_sharing_rounded_bg.xml
rename to tests/robotests/res/layout/test_udfps_enroll_enrolling.xml
index 35517ea..c69d2ba 100644
--- a/res/drawable/audio_sharing_rounded_bg.xml
+++ b/tests/robotests/res/layout/test_udfps_enroll_enrolling.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2023 The Android Open Source Project
+ ~ Copyright (C) 2024 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.
@@ -15,10 +15,10 @@
~ limitations under the License.
-->
-<shape
+<com.android.settings.biometrics.fingerprint.TestUdfpsEnrollEnrollingView
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
- android:shape="rectangle">
- <solid android:color="?androidprv:attr/colorAccentPrimary" />
- <corners android:radius="12dp" />
-</shape>
\ No newline at end of file
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/test_setup_wizard_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/MainClearTest.java b/tests/robotests/src/com/android/settings/MainClearTest.java
index 0f823d6..c938e5f 100644
--- a/tests/robotests/src/com/android/settings/MainClearTest.java
+++ b/tests/robotests/src/com/android/settings/MainClearTest.java
@@ -66,7 +66,6 @@
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -149,8 +148,8 @@
doReturn(mMockActivity).when(mMainClear).getActivity();
when(mMockActivity.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
- .thenReturn(BiometricManager.BIOMETRIC_ERROR_MANDATORY_NOT_ACTIVE);
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
+ .thenReturn(BiometricManager.BIOMETRIC_ERROR_IDENTITY_CHECK_NOT_ACTIVE);
}
@After
@@ -263,7 +262,6 @@
assertThat(mMainClear.showWipeEuicc()).isTrue();
}
- @Ignore("b/313566998")
@Test
public void testShowWipeEuicc_developerMode_unprovisioned() {
prepareEuiccState(
@@ -379,7 +377,7 @@
when(mMockActivity.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
when(mResources.getString(anyInt())).thenReturn(TEST_ACCOUNT_NAME);
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
.thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.KEYGUARD_REQUEST));
doNothing().when(mMainClear).startActivityForResult(any(), anyInt());
@@ -406,7 +404,7 @@
when(mMockActivity.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
when(mResources.getString(anyInt())).thenReturn(TEST_ACCOUNT_NAME);
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_LOCKOUT);
doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.KEYGUARD_REQUEST));
doNothing().when(mMainClear).startActivityForResult(any(), anyInt());
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
index 8f4b83e..b91ad6d 100644
--- a/tests/robotests/src/com/android/settings/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -541,7 +541,7 @@
@EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
public void testRequestBiometricAuthentication_biometricManagerReturnsSuccess_shouldReturnOk() {
when(mBiometricManager.canAuthenticate(USER_ID,
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ BiometricManager.Authenticators.IDENTITY_CHECK))
.thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
final Utils.BiometricStatus requestBiometricAuthenticationForMandatoryBiometrics =
Utils.requestBiometricAuthenticationForMandatoryBiometrics(mContext,
@@ -554,7 +554,7 @@
@EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
public void testRequestBiometricAuthentication_biometricManagerReturnsError_shouldReturnError() {
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE);
assertThat(Utils.requestBiometricAuthenticationForMandatoryBiometrics(mContext,
false /* biometricsAuthenticationRequested */, USER_ID)).isEqualTo(
@@ -567,10 +567,10 @@
when(mContext.getSystemService(UserManager.class)).thenReturn(mMockUserManager);
when(mMockUserManager.getCredentialOwnerProfile(USER_ID)).thenReturn(USER_ID);
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE);
when(mBiometricManager.canAuthenticate(0 /* userId */,
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ BiometricManager.Authenticators.IDENTITY_CHECK))
.thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
assertThat(Utils.requestBiometricAuthenticationForMandatoryBiometrics(mContext,
false /* biometricsAuthenticationRequested */, USER_ID)).isEqualTo(
@@ -594,7 +594,7 @@
final Intent intent = intentArgumentCaptor.getValue();
assertThat(intent.getExtra(BIOMETRIC_PROMPT_AUTHENTICATORS)).isEqualTo(
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS);
+ BiometricManager.Authenticators.IDENTITY_CHECK);
assertThat(intent.getExtra(BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT)).isNotNull();
assertThat(intent.getExtra(KeyguardManager.EXTRA_DESCRIPTION)).isNotNull();
assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_ALLOW_ANY_USER, false))
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragmentTest.java
new file mode 100644
index 0000000..c704bf6
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityAudioRoutingFragmentTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2024 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.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.util.FeatureFlagUtils;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.bluetooth.Utils;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Tests for {@link AccessibilityAudioRoutingFragment}. */
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothUtils.class})
+public class AccessibilityAudioRoutingFragmentTest {
+
+ @Rule
+ public MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ @Spy
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+
+ @Mock
+ private LocalBluetoothManager mLocalBluetoothManager;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private BluetoothAdapter mBluetoothAdapter;
+
+ @Before
+ public void setUp() {
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
+ mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+ mShadowBluetoothAdapter = Shadow.extract(mBluetoothAdapter);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void deviceSupportsHearingAidAndPageEnabled_isPageSearchEnabled_returnTrue() {
+ FeatureFlagUtils.setEnabled(mContext,
+ FeatureFlagUtils.SETTINGS_AUDIO_ROUTING, true);
+ mShadowBluetoothAdapter.clearSupportedProfiles();
+ mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID);
+
+ assertThat(AccessibilityAudioRoutingFragment.isPageSearchEnabled(mContext)).isTrue();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void deviceDoesNotSupportHearingAidAndPageEnabled_isPageSearchEnabled_returnFalse() {
+ FeatureFlagUtils.setEnabled(mContext,
+ FeatureFlagUtils.SETTINGS_AUDIO_ROUTING, true);
+ mShadowBluetoothAdapter.clearSupportedProfiles();
+ mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEADSET);
+
+ assertThat(AccessibilityAudioRoutingFragment.isPageSearchEnabled(mContext)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void deviceSupportsHearingAidAndPageDisabled_isPageSearchEnabled_returnFalse() {
+ FeatureFlagUtils.setEnabled(mContext,
+ FeatureFlagUtils.SETTINGS_AUDIO_ROUTING, false);
+ mShadowBluetoothAdapter.clearSupportedProfiles();
+ mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID);
+
+ assertThat(AccessibilityAudioRoutingFragment.isPageSearchEnabled(mContext)).isFalse();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java
index e5e8950..80cc571 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java
@@ -22,33 +22,53 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothProfile;
import android.content.Context;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.telephony.TelephonyManager;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
+import com.android.settings.bluetooth.Utils;
import com.android.settings.testutils.XmlTestUtils;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import java.util.List;
+import java.util.Objects;
/** Tests for {@link AccessibilityHearingAidsFragment}. */
@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothUtils.class})
public class AccessibilityHearingAidsFragmentTest {
@Rule
public MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Spy
private final Context mContext = ApplicationProvider.getApplicationContext();
+
+ @Mock
+ private LocalBluetoothManager mLocalBluetoothManager;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private BluetoothAdapter mBluetoothAdapter;
private TelephonyManager mTelephonyManager;
@Before
@@ -56,15 +76,43 @@
mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class));
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
doReturn(true).when(mTelephonyManager).isHearingAidCompatibilitySupported();
+
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
+ mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+ mShadowBluetoothAdapter = Shadow.extract(mBluetoothAdapter);
}
@Test
public void getNonIndexableKeys_existInXmlLayout() {
+ mShadowBluetoothAdapter.clearSupportedProfiles();
+ mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID);
+
final List<String> niks = AccessibilityHearingAidsFragment.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(mContext);
+ .getNonIndexableKeys(mContext).stream()
+ .filter(Objects::nonNull)
+ .toList();
final List<String> keys =
XmlTestUtils.getKeysFromPreferenceXml(mContext, R.xml.accessibility_hearing_aids);
assertThat(keys).containsAtLeastElementsIn(niks);
}
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void deviceSupportsHearingAid_isPageSearchEnabled_returnTrue() {
+ mShadowBluetoothAdapter.clearSupportedProfiles();
+ mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID);
+
+ assertThat(AccessibilityHearingAidsFragment.isPageSearchEnabled(mContext)).isTrue();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void deviceDoesNotSupportHearingAid_isPageSearchEnabled_returnFalse() {
+ mShadowBluetoothAdapter.clearSupportedProfiles();
+ mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEADSET);
+
+ assertThat(AccessibilityHearingAidsFragment.isPageSearchEnabled(mContext)).isFalse();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java b/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
deleted file mode 100644
index c0b9dbd..0000000
--- a/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2024 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.settings.accessibility;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.settings.SettingsEnums;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-
-import androidx.fragment.app.FragmentFactory;
-import androidx.fragment.app.testing.FragmentScenario;
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.settings.R;
-import com.android.settingslib.widget.FooterPreference;
-
-import com.google.android.setupcompat.template.FooterBarMixin;
-import com.google.android.setupdesign.GlifLayout;
-import com.google.android.setupdesign.GlifPreferenceLayout;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/** Tests for {@link AutoBrightnessPreferenceFragmentForSetupWizard}. */
-@RunWith(RobolectricTestRunner.class)
-public class AutoBrightnessPreferenceFragmentForSetupWizardTest {
-
- // Same as AutoBrightnessPreferenceFragmentForSetupWizard#FOOTER_PREFERENCE_KEY
- private static final String FOOTER_PREFERENCE_KEY = "auto_brightness_footer";
-
- private FragmentScenario<AutoBrightnessPreferenceFragmentForSetupWizard> mFragmentScenario;
-
- private AutoBrightnessPreferenceFragmentForSetupWizard mFragment;
- private GlifLayout mGlifLayout;
-
- @Before
- public void setUp() {
- mFragmentScenario = FragmentScenario
- .launch(
- AutoBrightnessPreferenceFragmentForSetupWizard.class,
- /* fragmentArgs= */ (Bundle) null,
- R.style.GlifTheme,
- /* factory= */ (FragmentFactory) null)
- .moveToState(Lifecycle.State.RESUMED);
- mFragmentScenario.onFragment(fragment -> mFragment = fragment);
-
- View view = mFragment.getView();
- assertThat(view).isInstanceOf(GlifPreferenceLayout.class);
- mGlifLayout = (GlifLayout) view;
- }
-
- @After
- public void tearDown() {
- mFragmentScenario.close();
- }
-
- @Test
- public void onViewCreated_verifyGlifHerderText() {
- assertThat(mGlifLayout.getHeaderText())
- .isEqualTo(mFragment.getString(R.string.auto_brightness_title));
- }
-
- @Test
- public void onViewCreated_verifyGlifFooter() {
- FooterBarMixin footerMixin = mGlifLayout.getMixin(FooterBarMixin.class);
- assertThat(footerMixin).isNotNull();
-
- Button footerButton = footerMixin.getPrimaryButtonView();
- assertThat(footerButton).isNotNull();
- assertThat(footerButton.getText().toString()).isEqualTo(mFragment.getString(R.string.done));
-
- footerButton.performClick();
- assertThat(mFragment.getActivity().isFinishing()).isTrue();
- }
-
- @Test
- public void onViewCreated_verifyFooterPreference() {
- Preference pref = mFragment.findPreference(FOOTER_PREFERENCE_KEY);
- assertThat(pref).isInstanceOf(FooterPreference.class);
-
- FooterPreference footerPref = (FooterPreference) pref;
- String exactTitle = footerPref.getTitle().toString();
- assertThat(exactTitle).isEqualTo(mFragment.getString(R.string.auto_brightness_description));
-
- // Ensure that footer content description has "About XXX" prefix for consistency with other
- // accessibility suw pages
- String expectedContentDescription =
- mFragment.getString(R.string.auto_brightness_content_description_title)
- + "\n\n" + exactTitle;
- assertThat(footerPref.getContentDescription().toString())
- .isEqualTo(expectedContentDescription);
- }
-
- @Test
- public void getMetricsCategory_returnsCorrectCategory() {
- assertThat(mFragment.getMetricsCategory()).isEqualTo(
- SettingsEnums.SUW_ACCESSIBILITY_AUTO_BRIGHTNESS);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceControllerTest.java
new file mode 100644
index 0000000..8989d4a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AvailableHearingDevicePreferenceControllerTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2024 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.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.bluetooth.Utils;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.search.SearchIndexableRaw;
+
+import com.google.common.collect.ImmutableList;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Tests for {@link AvailableHearingDevicePreferenceController} */
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothUtils.class})
+public class AvailableHearingDevicePreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private static final String PREFERENCE_KEY = "preference_key";
+ private static final String DEVICE_NAME = "device";
+
+ private Context mContext;
+ private AvailableHearingDevicePreferenceController mAvailableHearingDevicePreferenceController;
+ @Mock
+ private AvailableHearingDeviceUpdater mAvailableHearingDeviceUpdater;
+ @Mock
+ private CachedBluetoothDeviceManager mCachedDeviceManager;
+ @Mock
+ private LocalBluetoothManager mLocalBluetoothManager;
+ @Mock
+ private CachedBluetoothDevice mCachedDevice;
+ @Mock
+ private BluetoothDevice mDevice;
+
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = ApplicationProvider.getApplicationContext();
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
+ when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getName()).thenReturn(DEVICE_NAME);
+ when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+ ImmutableList.of(mCachedDevice));
+
+ mAvailableHearingDevicePreferenceController =
+ new AvailableHearingDevicePreferenceController(mContext, PREFERENCE_KEY);
+ mAvailableHearingDevicePreferenceController.init(mAvailableHearingDeviceUpdater);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void updateDynamicRawDataToIndex_isNotHearingAidDevice_deviceIsNotSearchable() {
+ when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mDevice.isConnected()).thenReturn(true);
+ when(mCachedDevice.isHearingAidDevice()).thenReturn(false);
+ List<SearchIndexableRaw> searchData = new ArrayList<>();
+
+ mAvailableHearingDevicePreferenceController.updateDynamicRawDataToIndex(searchData);
+
+ assertThat(searchData).isEmpty();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void updateDynamicRawDataToIndex_isHearingAidDevice_deviceIsSearchable() {
+ when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mDevice.isConnected()).thenReturn(true);
+ when(mCachedDevice.isHearingAidDevice()).thenReturn(true);
+ List<SearchIndexableRaw> searchData = new ArrayList<>();
+
+ mAvailableHearingDevicePreferenceController.updateDynamicRawDataToIndex(searchData);
+
+ assertThat(searchData).isNotEmpty();
+ assertThat(searchData.get(0).key).contains(DEVICE_NAME);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningCustomControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningCustomControllerTest.java
index 838d9e0..e0e5d49 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningCustomControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningCustomControllerTest.java
@@ -23,6 +23,9 @@
import android.content.ContentResolver;
import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.view.accessibility.CaptioningManager.CaptionStyle;
@@ -49,6 +52,8 @@
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock
private PreferenceScreen mScreen;
@Mock
@@ -57,22 +62,43 @@
private ContentResolver mContentResolver;
private CaptioningCustomController mController;
private Preference mPreference;
+ private CaptionHelper mCaptionHelper;
@Before
public void setUp() {
mContentResolver = mContext.getContentResolver();
- mController = new CaptioningCustomController(mContext, PREF_KEY,
+ mCaptionHelper = new CaptionHelper(mContext);
+ mController = new CaptioningCustomController(mContext, PREF_KEY, mCaptionHelper,
mAccessibilitySettingsContentObserver);
mPreference = new Preference(mContext);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
}
@Test
+ @DisableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getAvailabilityStatus_shouldReturnAvailable() {
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.AVAILABLE);
}
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getAvailabilityStatus_customCaption_shouldReturnAvailable() {
+ mCaptionHelper.setRawUserStyle(CaptionStyle.PRESET_CUSTOM);
+
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getAvailabilityStatus_notCustom_shouldReturnUnsearchable() {
+ mCaptionHelper.setRawUserStyle(0);
+
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
+ }
+
@Test
public void displayPreference_byDefault_shouldIsInvisible() {
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowColorControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowColorControllerTest.java
index 1258214..e39c57e 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowColorControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowColorControllerTest.java
@@ -24,6 +24,9 @@
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.util.AttributeSet;
import android.view.accessibility.CaptioningManager;
@@ -53,16 +56,21 @@
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock
private PreferenceScreen mScreen;
private final Context mContext = ApplicationProvider.getApplicationContext();
private CaptioningWindowColorController mController;
private ColorPreference mPreference;
private ShadowCaptioningManager mShadowCaptioningManager;
+ private CaptionHelper mCaptionHelper;
@Before
public void setUp() {
- mController = new CaptioningWindowColorController(mContext, "captioning_window_color");
+ mCaptionHelper = new CaptionHelper(mContext);
+ mController = new CaptioningWindowColorController(
+ mContext, "captioning_window_color", mCaptionHelper);
final AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
mPreference = new ColorPreference(mContext, attributeSet);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
@@ -71,12 +79,31 @@
}
@Test
+ @DisableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getAvailabilityStatus_shouldReturnAvailable() {
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.AVAILABLE);
}
@Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getAvailabilityStatus_customCaption_shouldReturnAvailable() {
+ mCaptionHelper.setRawUserStyle(CaptionStyle.PRESET_CUSTOM);
+
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getAvailabilityStatus_noCustom_shouldReturnUnsearchable() {
+ mCaptionHelper.setRawUserStyle(0);
+
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
+ }
+
+ @Test
public void getSummary_defaultValue_shouldReturnNone() {
mController.displayPreference(mScreen);
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowOpacityControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowOpacityControllerTest.java
index 0e872a0..2b41eb0 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowOpacityControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningWindowOpacityControllerTest.java
@@ -24,6 +24,9 @@
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.util.AttributeSet;
import android.view.accessibility.CaptioningManager;
@@ -48,19 +51,24 @@
/** Tests for {@link CaptioningWindowOpacityController}. */
@RunWith(RobolectricTestRunner.class)
public class CaptioningWindowOpacityControllerTest {
-
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
@Mock
private PreferenceScreen mScreen;
private final Context mContext = ApplicationProvider.getApplicationContext();
private CaptioningWindowOpacityController mController;
private ColorPreference mPreference;
private ShadowCaptioningManager mShadowCaptioningManager;
+ private CaptionHelper mCaptionHelper;
@Before
public void setUp() {
- mController = new CaptioningWindowOpacityController(mContext, "captioning_window_opacity");
+ mCaptionHelper = new CaptionHelper(mContext);
+ mController = new CaptioningWindowOpacityController(
+ mContext, "captioning_window_opacity", mCaptionHelper);
final AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
mPreference = new ColorPreference(mContext, attributeSet);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
@@ -69,12 +77,31 @@
}
@Test
+ @DisableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getAvailabilityStatus_shouldReturnAvailable() {
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.AVAILABLE);
}
@Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getAvailabilityStatus_customCaption_shouldReturnAvailable() {
+ mCaptionHelper.setRawUserStyle(CaptioningManager.CaptionStyle.PRESET_CUSTOM);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.AVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getAvailabilityStatus_notCustom_shouldReturnUnsearchable() {
+ mCaptionHelper.setRawUserStyle(0);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.AVAILABLE_UNSEARCHABLE);
+ }
+
+ @Test
public void getSummary_defaultValue_shouldReturnNonTransparent() {
mController.displayPreference(mScreen);
diff --git a/tests/robotests/src/com/android/settings/accessibility/ColorAndMotionScreenTest.kt b/tests/robotests/src/com/android/settings/accessibility/ColorAndMotionScreenTest.kt
index 6d7164e..67fbc1a 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ColorAndMotionScreenTest.kt
+++ b/tests/robotests/src/com/android/settings/accessibility/ColorAndMotionScreenTest.kt
@@ -27,7 +27,9 @@
@RunWith(AndroidJUnit4::class)
class ColorAndMotionScreenTest : CatalystScreenTestCase() {
override val preferenceScreenCreator: PreferenceScreenCreator = ColorAndMotionScreen()
- override val flagName: String = Flags.FLAG_CATALYST_ACCESSIBILITY_COLOR_AND_MOTION
+
+ override val flagName: String
+ get() = Flags.FLAG_CATALYST_ACCESSIBILITY_COLOR_AND_MOTION
override fun migration() {}
@@ -35,4 +37,4 @@
fun key() {
assertThat(preferenceScreenCreator.key).isEqualTo(ColorAndMotionScreen.KEY)
}
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/PaletteListPreferenceTest.java b/tests/robotests/src/com/android/settings/accessibility/PaletteListPreferenceTest.java
index 759b180..8ff3a0e 100644
--- a/tests/robotests/src/com/android/settings/accessibility/PaletteListPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/PaletteListPreferenceTest.java
@@ -16,17 +16,20 @@
package com.android.settings.accessibility;
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
+import android.content.res.ColorStateList;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.TextView;
import androidx.preference.PreferenceViewHolder;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
+import com.android.settingslib.Utils;
import org.junit.Before;
import org.junit.Test;
@@ -53,12 +56,20 @@
@Test
public void initPaletteView_success() {
+ final int expectedCount =
+ mContext.getResources().getStringArray(R.array.setting_palette_data).length;
+ final ColorStateList expectedTextColor =
+ Utils.getColorAttr(mContext, android.R.attr.textColorPrimary);
+
mPaletteListPreference.onBindViewHolder(mPreferenceViewHolder);
final ViewGroup viewGroup =
mPreferenceViewHolder.itemView.findViewById(R.id.palette_view);
- final int expectedCount =
- mContext.getResources().getStringArray(R.array.setting_palette_data).length;
- assertEquals(expectedCount, viewGroup.getChildCount());
+ final int childCount = viewGroup.getChildCount();
+ assertThat(childCount).isEqualTo(expectedCount);
+ for (int i = 0; i < childCount; i++) {
+ final TextView textView = (TextView) viewGroup.getChildAt(i);
+ assertThat(textView.getTextColors()).isEqualTo(expectedTextColor);
+ }
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/SavedHearingDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/SavedHearingDevicePreferenceControllerTest.java
new file mode 100644
index 0000000..1e54835
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/SavedHearingDevicePreferenceControllerTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2024 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.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.bluetooth.Utils;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.search.SearchIndexableRaw;
+
+import com.google.common.collect.ImmutableList;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Tests for {@link SavedHearingDevicePreferenceController} */
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothUtils.class})
+public class SavedHearingDevicePreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private static final String PREFERENCE_KEY = "preference_key";
+ private static final String DEVICE_NAME = "device";
+
+ private Context mContext;
+ private SavedHearingDevicePreferenceController mSavedHearingDevicePreferenceController;
+ @Mock
+ private SavedHearingDeviceUpdater mSavedHearingDeviceUpdater;
+ @Mock
+ private CachedBluetoothDeviceManager mCachedDeviceManager;
+ @Mock
+ private LocalBluetoothManager mLocalBluetoothManager;
+ @Mock
+ private CachedBluetoothDevice mCachedDevice;
+ @Mock
+ private BluetoothDevice mDevice;
+
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = ApplicationProvider.getApplicationContext();
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
+ when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getName()).thenReturn(DEVICE_NAME);
+ when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+ ImmutableList.of(mCachedDevice));
+
+ mSavedHearingDevicePreferenceController =
+ new SavedHearingDevicePreferenceController(mContext, PREFERENCE_KEY);
+ mSavedHearingDevicePreferenceController.init(mSavedHearingDeviceUpdater);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void updateDynamicRawDataToIndex_isNotHearingAidDevice_deviceIsNotSearchable() {
+ when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mDevice.isConnected()).thenReturn(false);
+ when(mCachedDevice.isHearingAidDevice()).thenReturn(false);
+ List<SearchIndexableRaw> searchData = new ArrayList<>();
+
+ mSavedHearingDevicePreferenceController.updateDynamicRawDataToIndex(searchData);
+
+ assertThat(searchData).isEmpty();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void updateDynamicRawDataToIndex_isHearingAidDevice_deviceIsSearchable() {
+ when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mDevice.isConnected()).thenReturn(false);
+ when(mCachedDevice.isHearingAidDevice()).thenReturn(true);
+ List<SearchIndexableRaw> searchData = new ArrayList<>();
+
+ mSavedHearingDevicePreferenceController.updateDynamicRawDataToIndex(searchData);
+
+ assertThat(searchData).isNotEmpty();
+ assertThat(searchData.get(0).key).contains(DEVICE_NAME);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountTypePreferenceLoaderTest.java b/tests/robotests/src/com/android/settings/accounts/AccountTypePreferenceLoaderTest.java
index efa5fea..0b9c6c3 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountTypePreferenceLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountTypePreferenceLoaderTest.java
@@ -30,8 +30,11 @@
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AuthenticatorDescription;
+import android.content.ClipData;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
+import android.net.Uri;
import android.os.UserHandle;
import androidx.collection.ArraySet;
@@ -250,4 +253,13 @@
mPrefLoader.filterBlockedFragments(parent, Set.of("nomatch", "other"));
verify(pref).setOnPreferenceClickListener(any());
}
+
+ @Test
+ public void isSafeIntent_hasContextScheme_returnFalse() {
+ Intent intent = new Intent();
+ intent.setClipData(ClipData.newRawUri(null,
+ Uri.parse("content://com.android.settings.files/my_cache/NOTICE.html")));
+
+ assertThat(mPrefLoader.isSafeIntent(mPackageManager, intent, mAccount.type)).isFalse();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounterTest.java b/tests/robotests/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounterTest.java
index 2a09cde..2da25f1 100644
--- a/tests/robotests/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounterTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounterTest.java
@@ -57,7 +57,7 @@
public final class AppWithAdminGrantedPermissionsCounterTest {
@Rule
- MockitoRule mMockitoRule = MockitoJUnit.rule();
+ public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private final String APP_1 = "app1";
private final String APP_2 = "app2";
diff --git a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
index a23ca69..3afca4d 100644
--- a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
@@ -38,11 +38,8 @@
import android.os.SystemConfigManager;
import android.os.UserHandle;
import android.os.UserManager;
-import android.platform.test.annotations.RequiresFlagsDisabled;
-import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
-import android.webkit.Flags;
import com.android.settings.testutils.ApplicationTestUtils;
import com.android.settings.webview.WebViewUpdateServiceWrapper;
@@ -373,7 +370,6 @@
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_UPDATE_SERVICE_V2)
public void getKeepEnabledPackages_shouldContainWebViewPackage() {
final String testWebViewPackageName = "com.android.webview";
when(mWebViewUpdateServiceWrapper.getDefaultWebViewPackageName())
@@ -383,16 +379,6 @@
}
@Test
- @RequiresFlagsDisabled(Flags.FLAG_UPDATE_SERVICE_V2)
- public void getKeepEnabledPackages_shouldNotContainWebViewPackageIfFlagDisabled() {
- final String testWebViewPackageName = "com.android.webview";
- when(mWebViewUpdateServiceWrapper.getDefaultWebViewPackageName())
- .thenReturn(testWebViewPackageName);
- final Set<String> allowlist = mProvider.getKeepEnabledPackages();
- assertThat(allowlist).doesNotContain(testWebViewPackageName);
- }
-
- @Test
@Config(shadows = {ShadowSmsApplication.class, ShadowDefaultDialerManager.class})
public void getKeepEnabledPackages_shouldContainPackageInstaller() {
final String testDialer = "com.android.test.defaultdialer";
diff --git a/tests/robotests/src/com/android/settings/applications/contacts/ContactsStoragePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/contacts/ContactsStoragePreferenceControllerTest.java
index a934cba..f954b22 100644
--- a/tests/robotests/src/com/android/settings/applications/contacts/ContactsStoragePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/contacts/ContactsStoragePreferenceControllerTest.java
@@ -16,8 +16,9 @@
package com.android.settings.applications.contacts;
-import static android.provider.ContactsContract.Settings.KEY_DEFAULT_ACCOUNT;
-import static android.provider.ContactsContract.Settings.QUERY_DEFAULT_ACCOUNT_METHOD;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.KEY_DEFAULT_ACCOUNT_STATE;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD;
+import static android.provider.ContactsContract.Settings;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
@@ -28,25 +29,26 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
-
import android.accounts.Account;
import android.accounts.AccountManager;
+import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.platform.test.annotations.EnableFlags;
-import android.platform.test.flag.junit.SetFlagsRule;
-import android.provider.ContactsContract;
-
-import com.android.settings.R;
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowAuthenticationHelper;
-
-import org.junit.Before;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.RawContacts.DefaultAccount.DefaultAccountAndState;
+import android.provider.Flags;
+
+import com.android.settings.R;
+import com.android.settings.testutils.shadow.ShadowAuthenticationHelper;
+
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -62,11 +64,6 @@
private static final String CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY =
"contacts_default_account";
- private static final Account TEST_ACCOUNT1 = new Account("test@gmail.com", "type1");
-
- private static final Account TEST_ACCOUNT2 = new Account("test@samsung.com", "type2");
-
- private static final Account TEST_ACCOUNT3 = new Account("LABEL3", "type3");
@Rule
public final MockitoRule mockito = MockitoJUnit.rule();
@@ -84,6 +81,9 @@
private ContentResolver mContentResolver;
@Mock
+ private ContentProviderClient mContentProviderClient;
+
+ @Mock
private Resources mResources;
@Mock
@@ -94,23 +94,55 @@
@Before
public void setUp() throws Exception {
when(mContext.getContentResolver()).thenReturn(mContentResolver);
+ when(mContentResolver.acquireContentProviderClient(
+ eq(ContactsContract.AUTHORITY_URI))).thenReturn(mContentProviderClient);
when(mContext.getSystemService(eq(Context.ACCOUNT_SERVICE))).thenReturn(mAccountManager);
when(mAccountManager.getAccountsAsUser(anyInt())).thenReturn(new Account[]{});
-
+ Bundle bundle = new Bundle();
+ bundle.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_NOT_SET);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(bundle);
mPreferenceController = new ContactsStoragePreferenceController(mContext,
CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
}
@Test
- @EnableFlags(Flags.FLAG_ENABLE_CONTACTS_DEFAULT_ACCOUNT_IN_SETTINGS)
+ @EnableFlags(Flags.FLAG_NEW_DEFAULT_ACCOUNT_API_ENABLED)
public void getAvailabilityStatus_flagIsOn_shouldReturnAvailable() {
-
assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
- @RequiresFlagsDisabled(Flags.FLAG_ENABLE_CONTACTS_DEFAULT_ACCOUNT_IN_SETTINGS)
+ @RequiresFlagsDisabled(Flags.FLAG_NEW_DEFAULT_ACCOUNT_API_ENABLED)
public void getAvailabilityStatus_flagIsOff_shouldReturnConditionallyUnavailable() {
+ assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+ CONDITIONALLY_UNAVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_NEW_DEFAULT_ACCOUNT_API_ENABLED)
+ public void getAvailabilityStatus_illegalStateExceptionThrown_shouldReturnConditionallyUnavailable()
+ throws Exception {
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenThrow(new IllegalStateException());
+
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
+
+ assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+ CONDITIONALLY_UNAVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_NEW_DEFAULT_ACCOUNT_API_ENABLED)
+ public void getAvailabilityStatus_runtimeExceptionThrown_shouldReturnConditionallyUnavailable()
+ throws Exception {
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenThrow(new RuntimeException());
+
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
CONDITIONALLY_UNAVAILABLE);
@@ -118,43 +150,95 @@
@Test
public void getSummary_noAccountIsSetAsDefault_shouldReturnNoAccountSetSummary() {
- Bundle bundle = new Bundle();
- bundle.putParcelable(KEY_DEFAULT_ACCOUNT, null);
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(bundle);
when(mContext.getResources()).thenReturn(mResources);
- when(mResources.getString(eq(R.string.contacts_storage_no_account_set))).thenReturn(
+ when(mResources.getString(eq(R.string.contacts_storage_no_account_set_summary))).thenReturn(
"No default set");
+ // Fetch the default account from CP2.
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
+
assertThat(mPreferenceController.getSummary()).isEqualTo("No default set");
}
@Test
- public void getSummary_googleAccountIsSetAsDefault_shouldReturnGoogleAccountTypeAndAccountName() {
+ public void getSummary_localAccountIsSetAsDefault_shouldReturnLocalAccountSetSummary()
+ throws Exception {
Bundle bundle = new Bundle();
- bundle.putParcelable(KEY_DEFAULT_ACCOUNT, TEST_ACCOUNT1);
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(bundle);
+ bundle.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_LOCAL);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(bundle);
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getString(eq(R.string.contacts_storage_local_account_summary))).thenReturn(
+ "Device only");
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
+
+ assertThat(mPreferenceController.getSummary()).isEqualTo("Device only");
+ }
+
+ @Test
+ public void getSummary_simAccountIsSetAsDefault_shouldReturnSimAccountSummary()
+ throws Exception {
+ Bundle bundle = new Bundle();
+ bundle.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_SIM);
+ bundle.putString(Settings.ACCOUNT_TYPE, "SIM");
+ bundle.putString(Settings.ACCOUNT_NAME, "SIM");
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(bundle);
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getString(eq(R.string.sim_card_label))).thenReturn("SIM");
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
+
+ assertThat(mPreferenceController.getSummary()).isEqualTo("SIM");
+ }
+
+ @Test
+ public void getSummary_googleAccountIsSetAsDefault_shouldReturnGoogleAccountTypeAndAccountName()
+ throws Exception {
+ Bundle bundle = new Bundle();
+ bundle.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD);
+ bundle.putString(Settings.ACCOUNT_TYPE, "type1");
+ bundle.putString(Settings.ACCOUNT_NAME, "test@gmail.com");
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(bundle);
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
assertThat(mPreferenceController.getSummary()).isEqualTo("LABEL1 | test@gmail.com");
}
@Test
- public void getSummary_samsungAccountIsSetAsDefault_shouldReturnSamsungAccountTypeAndAccountName() {
+ public void getSummary_samsungAccountIsSetAsDefault_shouldReturnSamsungAccountTypeAndAccountName()
+ throws Exception {
Bundle bundle = new Bundle();
- bundle.putParcelable(KEY_DEFAULT_ACCOUNT, TEST_ACCOUNT2);
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(bundle);
+ bundle.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD);
+ bundle.putString(Settings.ACCOUNT_TYPE, "type2");
+ bundle.putString(Settings.ACCOUNT_NAME, "test@samsung.com");
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(bundle);
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
assertThat(mPreferenceController.getSummary()).isEqualTo("LABEL2 | test@samsung.com");
}
@Test
- public void getSummary_accountLabelSameAsAccountName_onlyReturnAccountName() {
+ public void getSummary_accountLabelSameAsAccountName_onlyReturnAccountName() throws Exception {
Bundle bundle = new Bundle();
- bundle.putParcelable(KEY_DEFAULT_ACCOUNT, TEST_ACCOUNT3);
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(bundle);
+ bundle.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD);
+ bundle.putString(Settings.ACCOUNT_TYPE, "type3");
+ bundle.putString(Settings.ACCOUNT_NAME, "LABEL3");
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(bundle);
+ mPreferenceController = new ContactsStoragePreferenceController(mContext,
+ CONTACTS_DEFAULT_ACCOUNT_PREFERENCE_KEY);
// Since package name and account name is the same, we only return account name.
assertThat(mPreferenceController.getSummary()).isEqualTo("LABEL3");
diff --git a/tests/robotests/src/com/android/settings/applications/contacts/ContactsStorageSettingsTest.java b/tests/robotests/src/com/android/settings/applications/contacts/ContactsStorageSettingsTest.java
index 785ef4a..735508a 100644
--- a/tests/robotests/src/com/android/settings/applications/contacts/ContactsStorageSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/contacts/ContactsStorageSettingsTest.java
@@ -15,39 +15,46 @@
*/
package com.android.settings.applications.contacts;
-import static android.provider.ContactsContract.Settings.KEY_DEFAULT_ACCOUNT;
-import static android.provider.ContactsContract.Settings.QUERY_DEFAULT_ACCOUNT_METHOD;
-import static android.provider.ContactsContract.Settings.SET_DEFAULT_ACCOUNT_METHOD;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.KEY_DEFAULT_ACCOUNT_STATE;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.KEY_ELIGIBLE_DEFAULT_ACCOUNTS;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD;
+import static android.provider.ContactsContract.RawContacts.DefaultAccount.SET_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD;
import static android.provider.Settings.ACTION_ADD_ACCOUNT;
import static android.provider.Settings.EXTRA_ACCOUNT_TYPES;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.accounts.Account;
-import android.accounts.AccountManager;
import android.app.settings.SettingsEnums;
+import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.os.UserHandle;
import android.provider.ContactsContract;
+import android.provider.ContactsContract.RawContacts.DefaultAccount.DefaultAccountAndState;
import android.provider.SearchIndexableResource;
+import android.text.TextUtils;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.accounts.AddAccountSettings;
-import com.android.settings.testutils.shadow.ShadowAuthenticationHelper;
+import com.android.settingslib.accounts.AuthenticatorHelper;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
@@ -62,19 +69,26 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowAuthenticationHelper.class)
+@Config(shadows = ContactsStorageSettingsTest.ShadowAuthenticatorHelper.class)
public class ContactsStorageSettingsTest {
private static final String PREF_KEY_DEVICE_ONLY = "device_only_account_preference";
-
+ private static final String PREF_KEY_ACCOUNT_CATEGORY = "account_category";
private static final String PREF_KEY_ADD_ACCOUNT = "add_account";
- private static final Account TEST_ACCOUNT1 = new Account("test@gmail.com", "type1");
+ private static final Account TEST_ACCOUNT1 = new Account("test@gmail.com", "com.google");
- private static final Account TEST_ACCOUNT2 = new Account("test@samsung.com", "type2");
+ private static final Account TEST_ACCOUNT2 = new Account("test@samsung.com", "com.samsung");
+
+ private static final Account TEST_ACCOUNT3 = new Account("test@outlook.com", "com.outlook");
+
+ private static final Account SIM_ACCOUNT = new Account("SIM", "SIM");
@Rule
public final MockitoRule mockito = MockitoJUnit.rule();
@@ -83,22 +97,32 @@
@Mock
private ContentResolver mContentResolver;
@Mock
- private AccountManager mAccountManager;
-
+ private ContentProviderClient mContentProviderClient;
private PreferenceManager mPreferenceManager;
private TestContactsStorageSettings mContactsStorageSettings;
private PreferenceScreen mScreen;
+ private PreferenceGroup accountCategory;
@Before
public void setUp() throws Exception {
- mContactsStorageSettings = spy(new TestContactsStorageSettings(mContext, mContentResolver));
- when(mContext.getSystemService(eq(Context.ACCOUNT_SERVICE))).thenReturn(mAccountManager);
- when(mAccountManager.getAccountsAsUser(anyInt())).thenReturn(new Account[]{});
+ mContactsStorageSettings = spy(
+ new TestContactsStorageSettings(mContext, mContentResolver));
+ when(mContentResolver.acquireContentProviderClient(
+ eq(ContactsContract.AUTHORITY_URI))).thenReturn(mContentProviderClient);
mPreferenceManager = new PreferenceManager(mContext);
when(mContactsStorageSettings.getPreferenceManager()).thenReturn(mPreferenceManager);
- mScreen = spy(new PreferenceScreen(mContext, /* attrs= */ null));
+ mScreen = spy(mPreferenceManager.inflateFromResource(mContext,
+ R.xml.contacts_storage_settings, mScreen));
when(mScreen.getPreferenceManager()).thenReturn(mPreferenceManager);
+ accountCategory = mScreen.findPreference(PREF_KEY_ACCOUNT_CATEGORY);
+ SelectorWithWidgetPreference deviceOnlyPreference = mScreen.findPreference(
+ PREF_KEY_DEVICE_ONLY);
+ when(mContactsStorageSettings.findPreference(eq(PREF_KEY_DEVICE_ONLY))).thenReturn(
+ deviceOnlyPreference);
+ when(mContactsStorageSettings.findPreference(eq(PREF_KEY_ACCOUNT_CATEGORY))).thenReturn(
+ accountCategory);
when(mContactsStorageSettings.getPreferenceScreen()).thenReturn(mScreen);
+ mContactsStorageSettings.setEligibleAccountTypes(new String[]{"com.google"});
mContactsStorageSettings.onAttach(mContext);
}
@@ -115,45 +139,58 @@
}
@Test
- public void verifyDeviceOnlyPreference_onClick_setDefaultAccountToNull() {
- when(mAccountManager.getAccounts()).thenReturn(new Account[]{});
- Bundle bundle = new Bundle();
- bundle.putParcelable(KEY_DEFAULT_ACCOUNT, null);
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(bundle);
+ public void verifyDeviceOnlyPreference_onClick_setDefaultAccountToNull() throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_NOT_SET);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ new ArrayList<>());
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
- PreferenceScreen settingScreen = mPreferenceManager.inflateFromResource(mContext,
- R.xml.contacts_storage_settings, mScreen);
- SelectorWithWidgetPreference deviceOnlyPreference = settingScreen.findPreference(
+ SelectorWithWidgetPreference deviceOnlyPreference = mContactsStorageSettings.findPreference(
PREF_KEY_DEVICE_ONLY);
- when(mContactsStorageSettings.findPreference(eq(PREF_KEY_DEVICE_ONLY))).thenReturn(
- deviceOnlyPreference);
assertThat(deviceOnlyPreference.getTitle()).isEqualTo("Device only");
assertThat(deviceOnlyPreference.getSummary()).isEqualTo(
"New contacts won't be synced with an account");
assertThat(deviceOnlyPreference.getOrder()).isEqualTo(999);
+ assertThat(mContactsStorageSettings.findPreference(
+ PREF_KEY_ACCOUNT_CATEGORY).getTitle()).isEqualTo("Where to save contacts");
mContactsStorageSettings.refreshUI();
mContactsStorageSettings.onRadioButtonClicked(deviceOnlyPreference);
assertThat(deviceOnlyPreference.isChecked()).isTrue();
ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class);
- verify(mContentResolver).call(eq(ContactsContract.AUTHORITY_URI),
- eq(SET_DEFAULT_ACCOUNT_METHOD), any(), captor.capture());
+ verify(mContentProviderClient).call(eq(SET_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ captor.capture());
Bundle accountBundle = captor.getValue();
assertThat(accountBundle.getString(ContactsContract.Settings.ACCOUNT_NAME)).isNull();
assertThat(accountBundle.getString(ContactsContract.Settings.ACCOUNT_TYPE)).isNull();
}
@Test
- public void verifyAddAccountPreference_onClick_startAddAccountActivity() {
- when(mAccountManager.getAccounts()).thenReturn(new Account[]{});
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(Bundle.EMPTY);
+ public void verifyAddAccountPreference_eligibleAccountsAvailable_startAddAccountActivityOnClick()
+ throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_NOT_SET);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ new ArrayList<>());
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
mContactsStorageSettings.refreshUI();
+ assertThat(mContactsStorageSettings.findPreference(
+ PREF_KEY_ACCOUNT_CATEGORY).getTitle()).isEqualTo("Where to save contacts");
assertThat(mScreen.findPreference(PREF_KEY_ADD_ACCOUNT).getTitle()).isEqualTo(
"Add an account to get started");
assertThat(mScreen.findPreference(PREF_KEY_ADD_ACCOUNT).getOrder()).isEqualTo(998);
@@ -167,28 +204,59 @@
assertThat(addAccountIntent.getComponent().getClassName()).isEqualTo(
AddAccountSettings.class.getCanonicalName());
String[] eligibleAccounts = (String[]) addAccountIntent.getExtra(EXTRA_ACCOUNT_TYPES);
- assertThat(eligibleAccounts).isEmpty();
+ assertThat(List.of(eligibleAccounts)).containsExactly("com.google");
}
@Test
- public void verifyEligibleAccountPreference_onClick_setSelectedDefaultAccount() {
- when(mAccountManager.getAccounts()).thenReturn(new Account[]{TEST_ACCOUNT1, TEST_ACCOUNT2});
- Bundle bundle = new Bundle();
- bundle.putParcelable(KEY_DEFAULT_ACCOUNT, TEST_ACCOUNT2);
- when(mContentResolver.call(eq(ContactsContract.AUTHORITY_URI),
- eq(QUERY_DEFAULT_ACCOUNT_METHOD), any(), any())).thenReturn(bundle);
+ public void verifyAddAccountPreference_noEligibleAccountsAvailable_dontShowPreference()
+ throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_NOT_SET);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ new ArrayList<>());
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
+ mContactsStorageSettings.setEligibleAccountTypes(new String[]{});
mContactsStorageSettings.refreshUI();
- SelectorWithWidgetPreference account1Preference = mScreen.findPreference(
+ Preference addAccountPreference = mScreen.findPreference(PREF_KEY_ADD_ACCOUNT);
+ assertThat(addAccountPreference).isNull();
+ }
+
+ @Test
+ public void verifyEligibleAccountPreference_onClick_setSelectedDefaultAccount()
+ throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_NAME, TEST_ACCOUNT2.name);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_TYPE, TEST_ACCOUNT2.type);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ ArrayList<Account> eligibleAccounts = new ArrayList<>(
+ List.of(TEST_ACCOUNT1, TEST_ACCOUNT2));
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ eligibleAccounts);
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
+
+ mContactsStorageSettings.refreshUI();
+
+ SelectorWithWidgetPreference account1Preference = accountCategory.findPreference(
String.valueOf(TEST_ACCOUNT1.hashCode()));
- assertThat(account1Preference.getTitle()).isEqualTo("LABEL1");
+ assertThat(account1Preference.getTitle()).isEqualTo("Device and Google");
assertThat(account1Preference.getSummary()).isEqualTo("test@gmail.com");
assertThat(account1Preference.getIcon()).isNotNull();
- SelectorWithWidgetPreference account2Preference = mScreen.findPreference(
+ SelectorWithWidgetPreference account2Preference = accountCategory.findPreference(
String.valueOf(TEST_ACCOUNT2.hashCode()));
- assertThat(account2Preference.getTitle()).isEqualTo("LABEL2");
+ assertThat(account2Preference.getTitle()).isEqualTo("Device and Samsung");
assertThat(account2Preference.getSummary()).isEqualTo("test@samsung.com");
assertThat(account2Preference.getIcon()).isNotNull();
@@ -197,13 +265,124 @@
assertThat(account2Preference.isChecked()).isTrue();
ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class);
- verify(mContentResolver).call(eq(ContactsContract.AUTHORITY_URI),
- eq(SET_DEFAULT_ACCOUNT_METHOD), any(), captor.capture());
+ verify(mContentProviderClient).call(eq(SET_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ captor.capture());
Bundle setAccountBundle = captor.getValue();
assertThat(setAccountBundle.getString(ContactsContract.Settings.ACCOUNT_NAME)).isEqualTo(
"test@samsung.com");
assertThat(setAccountBundle.getString(ContactsContract.Settings.ACCOUNT_TYPE)).isEqualTo(
- "type2");
+ "com.samsung");
+
+ ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mContext).startActivity(intentCaptor.capture());
+ Intent moveContactsIntent = intentCaptor.getValue();
+ assertThat(moveContactsIntent.getAction()).isEqualTo(
+ ContactsContract.RawContacts.DefaultAccount.ACTION_MOVE_CONTACTS_TO_DEFAULT_ACCOUNT);
+ assertThat(moveContactsIntent.getPackage()).isEqualTo(
+ "com.android.providers.contacts");
+ }
+
+ @Test
+ public void verifyAccountPreference_defaultAccountIsNotEligibleCloudAccount_createNewDefaultAccountPreference()
+ throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_NAME, TEST_ACCOUNT3.name);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_TYPE, TEST_ACCOUNT3.type);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ ArrayList<Account> eligibleAccounts = new ArrayList<>(
+ List.of(TEST_ACCOUNT1, TEST_ACCOUNT2));
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ eligibleAccounts);
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
+
+ mContactsStorageSettings.refreshUI();
+
+ SelectorWithWidgetPreference account1Preference = accountCategory.findPreference(
+ String.valueOf(TEST_ACCOUNT1.hashCode()));
+ assertThat(account1Preference.getTitle()).isEqualTo("Device and Google");
+ assertThat(account1Preference.getSummary()).isEqualTo("test@gmail.com");
+ assertThat(account1Preference.getIcon()).isNotNull();
+
+ SelectorWithWidgetPreference account2Preference = accountCategory.findPreference(
+ String.valueOf(TEST_ACCOUNT2.hashCode()));
+ assertThat(account2Preference.getTitle()).isEqualTo("Device and Samsung");
+ assertThat(account2Preference.getSummary()).isEqualTo("test@samsung.com");
+ assertThat(account2Preference.getIcon()).isNotNull();
+
+ SelectorWithWidgetPreference account3Preference = accountCategory.findPreference(
+ String.valueOf(TEST_ACCOUNT3.hashCode()));
+ assertThat(account3Preference.getTitle()).isEqualTo("Device and Outlook");
+ assertThat(account3Preference.getSummary()).isEqualTo("test@outlook.com");
+ assertThat(account3Preference.getIcon()).isNotNull();
+
+ assertThat(account1Preference.isChecked()).isFalse();
+ assertThat(account2Preference.isChecked()).isFalse();
+ assertThat(account3Preference.isChecked()).isTrue();
+ }
+
+ @Test
+ public void verifyAccountPreference_defaultAccountIsSimAccount_createSimAccountPreference()
+ throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_SIM);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_NAME, SIM_ACCOUNT.name);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_TYPE, SIM_ACCOUNT.type);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ new ArrayList<>());
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
+
+ mContactsStorageSettings.refreshUI();
+
+ SelectorWithWidgetPreference simPreference = accountCategory.findPreference(
+ String.valueOf(SIM_ACCOUNT.hashCode()));
+ assertThat(simPreference.getTitle()).isEqualTo("SIM");
+ assertThat(simPreference.getSummary()).isEqualTo("SIM");
+ assertThat(simPreference.getIcon()).isNotNull();
+ assertThat(simPreference.isChecked()).isTrue();
+ }
+
+ @Test
+ public void verifyAccountPreference_newAccountAdded_accountAddedToAccountPreference()
+ throws Exception {
+ Bundle currentDefaultAccount = new Bundle();
+ currentDefaultAccount.putInt(KEY_DEFAULT_ACCOUNT_STATE,
+ DefaultAccountAndState.DEFAULT_ACCOUNT_STATE_CLOUD);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_NAME, TEST_ACCOUNT1.name);
+ currentDefaultAccount.putString(ContactsContract.Settings.ACCOUNT_TYPE, TEST_ACCOUNT1.type);
+ when(mContentProviderClient.call(eq(QUERY_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS_METHOD), any(),
+ any())).thenReturn(currentDefaultAccount);
+ Bundle eligibleAccountBundle = new Bundle();
+ ArrayList<Account> eligibleAccounts = new ArrayList<>(
+ List.of(TEST_ACCOUNT1, TEST_ACCOUNT2));
+ eligibleAccountBundle.putParcelableArrayList(KEY_ELIGIBLE_DEFAULT_ACCOUNTS,
+ eligibleAccounts);
+ when(mContentProviderClient.call(eq(QUERY_ELIGIBLE_DEFAULT_ACCOUNTS_METHOD), any(),
+ any())).thenReturn(eligibleAccountBundle);
+
+ mContactsStorageSettings.onAccountsUpdate(null);
+
+ // onAccountsUpdate should refresh the icon and layouts.
+ SelectorWithWidgetPreference account1Preference = accountCategory.findPreference(
+ String.valueOf(TEST_ACCOUNT1.hashCode()));
+ assertThat(account1Preference.getTitle()).isEqualTo("Device and Google");
+ assertThat(account1Preference.getSummary()).isEqualTo("test@gmail.com");
+ assertThat(account1Preference.getIcon()).isNotNull();
+
+ SelectorWithWidgetPreference account2Preference = accountCategory.findPreference(
+ String.valueOf(TEST_ACCOUNT2.hashCode()));
+ assertThat(account2Preference.getTitle()).isEqualTo("Device and Samsung");
+ assertThat(account2Preference.getSummary()).isEqualTo("test@samsung.com");
+ assertThat(account2Preference.getIcon()).isNotNull();
}
@Test
@@ -220,6 +399,7 @@
private static class TestContactsStorageSettings extends ContactsStorageSettings {
private final Context mContext;
private final ContentResolver mContentResolver;
+ private String[] mEligibleAccountTypes;
TestContactsStorageSettings(Context context, ContentResolver contentResolver) {
mContext = context;
@@ -236,5 +416,55 @@
// Override it so we can access this method in test
return mContentResolver;
}
+
+ @Override
+ String[] getEligibleAccountTypes() {
+ return mEligibleAccountTypes == null ? Resources.getSystem().getStringArray(
+ com.android.internal.R.array.config_rawContactsEligibleDefaultAccountTypes)
+ : mEligibleAccountTypes;
+ }
+
+ public void setEligibleAccountTypes(String[] eligibleAccountTypes) {
+ mEligibleAccountTypes = eligibleAccountTypes;
+ }
+ }
+
+ @Implements(AuthenticatorHelper.class)
+ public static class ShadowAuthenticatorHelper {
+
+ boolean preloadDrawableForType = false;
+
+ @Implementation
+ public void listenToAccountUpdates() {
+ }
+
+ @Implementation
+ public void onAccountsUpdated(Account[] accounts) {
+
+ }
+ @Implementation
+ public void preloadDrawableForType(final Context context, final String accountType) {
+ preloadDrawableForType = true;
+ }
+
+ @Implementation
+ protected Drawable getDrawableForType(Context context, final String accountType) {
+ if (preloadDrawableForType) {
+ return context.getPackageManager().getDefaultActivityIcon();
+ }
+ return null;
+ }
+
+ @Implementation
+ protected CharSequence getLabelForType(Context context, final String accountType) {
+ if (TextUtils.equals(accountType, "com.google")) {
+ return "Google";
+ } else if (TextUtils.equals(accountType, "com.samsung")) {
+ return "Samsung";
+ } else if (TextUtils.equals(accountType, "com.outlook")) {
+ return "Outlook";
+ }
+ return null;
+ }
}
}
diff --git a/tests/robotests/src/com/android/settings/biometrics/combination/CombinedBiometricProfileSettingsTest.java b/tests/robotests/src/com/android/settings/biometrics/combination/CombinedBiometricProfileSettingsTest.java
index b4605c7..3dc011e 100644
--- a/tests/robotests/src/com/android/settings/biometrics/combination/CombinedBiometricProfileSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/combination/CombinedBiometricProfileSettingsTest.java
@@ -128,8 +128,8 @@
doReturn(mActivity).when(mFragment).getActivity();
doReturn(mBiometricManager).when(mActivity).getSystemService(BiometricManager.class);
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
- .thenReturn(BiometricManager.BIOMETRIC_ERROR_MANDATORY_NOT_ACTIVE);
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
+ .thenReturn(BiometricManager.BIOMETRIC_ERROR_IDENTITY_CHECK_NOT_ACTIVE);
ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider",
FakeFeatureFactory.setupForTest().dashboardFeatureProvider);
@@ -182,7 +182,7 @@
ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
doNothing().when(mFragment).startActivityForResult(any(), anyInt());
when(mBiometricManager.canAuthenticate(anyInt(),
- eq(BiometricManager.Authenticators.MANDATORY_BIOMETRICS)))
+ eq(BiometricManager.Authenticators.IDENTITY_CHECK)))
.thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
mFragment.onAttach(mContext);
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java
index 0e1bcf6..1086f85 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java
@@ -149,7 +149,7 @@
doReturn(true).when(mFingerprintManager).isHardwareDetected();
doReturn(mVibrator).when(mContext).getSystemService(Vibrator.class);
when(mBiometricManager.canAuthenticate(PRIMARY_USER_ID,
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ BiometricManager.Authenticators.IDENTITY_CHECK))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE);
}
@@ -176,7 +176,7 @@
@EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
public void testLaunchBiometricPromptForFingerprint() {
when(mBiometricManager.canAuthenticate(PRIMARY_USER_ID,
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ BiometricManager.Authenticators.IDENTITY_CHECK))
.thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
doNothing().when(mFingerprintManager).generateChallenge(anyInt(), any());
when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsScreenOffUnlockUdfpsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsScreenOffUnlockUdfpsPreferenceControllerTest.java
new file mode 100644
index 0000000..7660e88
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsScreenOffUnlockUdfpsPreferenceControllerTest.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.fingerprint.FingerprintManager;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import com.android.settings.testutils.shadow.ShadowUtils;
+import com.android.settingslib.RestrictedSwitchPreference;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUtils.class})
+public class FingerprintSettingsScreenOffUnlockUdfpsPreferenceControllerTest {
+
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Mock
+ private FingerprintManager mFingerprintManager;
+ @Mock
+ private PackageManager mPackageManager;
+ @Mock
+ private RestrictedSwitchPreference mPreference;
+
+ private Context mContext;
+ private FingerprintSettingsScreenOffUnlockUdfpsPreferenceController mController;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = spy(RuntimeEnvironment.application);
+ when(mContext.getSystemService(eq(Context.FINGERPRINT_SERVICE))).thenReturn(
+ mFingerprintManager);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+
+ mController = spy(new FingerprintSettingsScreenOffUnlockUdfpsPreferenceController(mContext,
+ "test_key"));
+ ReflectionHelpers.setField(mController, "mFingerprintManager", mFingerprintManager);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowUtils.reset();
+ }
+
+ @Test
+ public void onPreferenceChange_settingIsUpdated() {
+ boolean state = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.SCREEN_OFF_UNLOCK_UDFPS_ENABLED, 1) != 0;
+
+ assertThat(mController.isChecked()).isFalse();
+ assertThat(mController.onPreferenceChange(mPreference, !state)).isTrue();
+ boolean newState = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.SCREEN_OFF_UNLOCK_UDFPS_ENABLED, 1) != 0;
+ assertThat(newState).isEqualTo(!state);
+ }
+
+ @Test
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isAvailable_isEnabled_whenUdfpsHardwareDetected_AndHasEnrolledFingerprints() {
+ assertThat(mController.isAvailable()).isEqualTo(false);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isUdfps_hasEnrolledTemplates(
+ true /* isHardwareDetected */,
+ false /* isPowerbuttonFps false implies udfps */,
+ true /* hasEnrolledTemplates */);
+ assertThat(mController.isAvailable()).isEqualTo(true);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isUnavailable_isDisabled_whenUdfpsHardwareDetected_AndNoEnrolledFingerprints() {
+ assertThat(mController.isAvailable()).isEqualTo(false);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isUdfps_hasEnrolledTemplates(
+ true /* isHardwareDetected */,
+ false /* isPowerbuttonFps false implies udfps */,
+ false /* hasEnrolledTemplates */);
+ assertThat(mController.isAvailable()).isEqualTo(false);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
+ }
+
+ @Test
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isUnavailable_whenHardwareNotDetected() {
+ assertThat(mController.isAvailable()).isFalse();
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isUdfps_hasEnrolledTemplates(
+ false /* isHardwareDetected */,
+ false /* isPowerbuttonFps false implies udfps */,
+ true /* hasEnrolledTemplates */);
+ assertThat(mController.isAvailable()).isEqualTo(false);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isUnavailable_onNonUdfpsDevice() {
+ assertThat(mController.isAvailable()).isFalse();
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isUdfps_hasEnrolledTemplates(
+ true /* isHardwareDetected */,
+ true /* isPowerbuttonFps false implies udfps */,
+ true /* hasEnrolledTemplates */);
+ assertThat(mController.isAvailable()).isFalse();
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ }
+
+ private void configure_hardwareDetected_isUdfps_hasEnrolledTemplates(
+ boolean isHardwareDetected, boolean isPowerbuttonFps, boolean hasEnrolledTemplates) {
+ when(mFingerprintManager.isHardwareDetected()).thenReturn(isHardwareDetected);
+ when(mFingerprintManager.isPowerbuttonFps()).thenReturn(isPowerbuttonFps);
+ when(mFingerprintManager.hasEnrolledTemplates(anyInt())).thenReturn(hasEnrolledTemplates);
+ }
+
+}
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsUnlockCategoryControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsUnlockCategoryControllerTest.java
index 7b6a70e..59af934 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsUnlockCategoryControllerTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsUnlockCategoryControllerTest.java
@@ -30,12 +30,15 @@
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.RestrictedSwitchPreference;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -49,6 +52,8 @@
@Config(shadows = {ShadowUtils.class})
public class FingerprintSettingsUnlockCategoryControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock
private FingerprintManager mFingerprintManager;
@Mock
@@ -59,6 +64,8 @@
private Context mContext;
private FingerprintSettingsRequireScreenOnToAuthPreferenceController mController;
+ private FingerprintSettingsScreenOffUnlockUdfpsPreferenceController mScreenOffUnlockController;
+
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
@@ -69,7 +76,12 @@
mController = spy(new FingerprintSettingsRequireScreenOnToAuthPreferenceController(mContext,
"test_key"));
+ mScreenOffUnlockController = spy(
+ new FingerprintSettingsScreenOffUnlockUdfpsPreferenceController(mContext,
+ "screen_off_unlock_test_key"));
ReflectionHelpers.setField(mController, "mFingerprintManager", mFingerprintManager);
+ ReflectionHelpers.setField(mScreenOffUnlockController, "mFingerprintManager",
+ mFingerprintManager);
}
@After
@@ -90,6 +102,20 @@
}
@Test
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isAvailable_isEnabled_whenUdfpsHardwareDetected_AndHasEnrolledFingerprints() {
+ assertThat(mScreenOffUnlockController.isAvailable()).isEqualTo(false);
+ assertThat(mScreenOffUnlockController.getAvailabilityStatus()).isEqualTo(
+ UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isSfps_hasEnrolledTemplates(
+ true /* isHardwareDetected */,
+ false /* isPowerbuttonFps false implies udfps */,
+ true /* hasEnrolledTemplates */);
+ assertThat(mScreenOffUnlockController.isAvailable()).isEqualTo(true);
+ assertThat(mScreenOffUnlockController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+
+ @Test
public void isUnavailable_isDisabled_whenSfpsHardwareDetected_AndNoEnrolledFingerprints() {
assertThat(mController.isAvailable()).isEqualTo(false);
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
@@ -102,7 +128,22 @@
}
@Test
- public void isUnavailable_whenHardwareNotDetected() {
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isUnavailable_isDisabled_whenUdfpsHardwareDetected_AndNoEnrolledFingerprints() {
+ assertThat(mScreenOffUnlockController.isAvailable()).isEqualTo(false);
+ assertThat(mScreenOffUnlockController.getAvailabilityStatus()).isEqualTo(
+ UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isSfps_hasEnrolledTemplates(
+ true /* isHardwareDetected */,
+ false /* isPowerbuttonFps false implies udfps */,
+ false /* hasEnrolledTemplates */);
+ assertThat(mScreenOffUnlockController.isAvailable()).isEqualTo(false);
+ assertThat(mScreenOffUnlockController.getAvailabilityStatus()).isEqualTo(
+ CONDITIONALLY_UNAVAILABLE);
+ }
+
+ @Test
+ public void isUnavailable_whenHardwareNotDetected_onSfpsDevice() {
assertThat(mController.isAvailable()).isFalse();
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
configure_hardwareDetected_isSfps_hasEnrolledTemplates(
@@ -114,6 +155,21 @@
}
@Test
+ @EnableFlags(android.hardware.biometrics.Flags.FLAG_SCREEN_OFF_UNLOCK_UDFPS)
+ public void isUnavailable_whenHardwareNotDetected_onUdfpsDevice() {
+ assertThat(mScreenOffUnlockController.isAvailable()).isFalse();
+ assertThat(mScreenOffUnlockController.getAvailabilityStatus()).isEqualTo(
+ UNSUPPORTED_ON_DEVICE);
+ configure_hardwareDetected_isSfps_hasEnrolledTemplates(
+ false /* isHardwareDetected */,
+ false /* isPowerbuttonFps false implies udfps */,
+ true /* hasEnrolledTemplates */);
+ assertThat(mScreenOffUnlockController.isAvailable()).isEqualTo(false);
+ assertThat(mScreenOffUnlockController.getAvailabilityStatus()).isEqualTo(
+ UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
public void isUnavailable_onNonSfpsDevice() {
assertThat(mController.isAvailable()).isFalse();
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
index fa33f9c..fd6c082 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
@@ -35,7 +35,6 @@
import com.google.android.setupcompat.template.FooterBarMixin;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
@@ -116,7 +115,6 @@
}
@Test
- @Ignore("b/295325503")
public void onActivityResult_fingerprintCountIsOne_fingerprintSuggestionActivityEnabled() {
Shadows.shadowOf((FingerprintManager) mFingerprintManager).setDefaultFingerprints(1);
@@ -137,8 +135,7 @@
}
@Test
- @Ignore("b/295325503")
- public void clickNext_fingerprintCountIsOne_fngerprintSuggestionActivityEnabled() {
+ public void clickNext_fingerprintCountIsOne_fingerprintSuggestionActivityEnabled() {
Shadows.shadowOf((FingerprintManager) mFingerprintManager).setDefaultFingerprints(1);
mLayout.getMixin(FooterBarMixin.class).getPrimaryButtonView().performClick();
@@ -158,8 +155,7 @@
}
@Test
- @Ignore("b/295325503")
- public void onBackPressed_fingerprintCountIsOne_fngerprintSuggestionActivityEnabled() {
+ public void onBackPressed_fingerprintCountIsOne_fingerprintSuggestionActivityEnabled() {
Shadows.shadowOf((FingerprintManager) mFingerprintManager).setDefaultFingerprints(1);
mActivity.onBackPressed();
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
index 6b67734..1760fad 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
@@ -154,7 +154,7 @@
}
@Test
- @Ignore
+ @Ignore("b/295325503 expected: RESULT_SKIP, but was 2")
public void testKeyguardNotSecure_shouldFinishWithSetupSkipDialogResultSkip() {
getShadowKeyguardManager().setIsKeyguardSecure(false);
@@ -174,7 +174,6 @@
}
@Test
- @Ignore
public void testKeyguardSecure_shouldFinishWithFingerprintResultSkip() {
getShadowKeyguardManager().setIsKeyguardSecure(true);
@@ -194,7 +193,7 @@
}
@Test
- @Ignore
+ @Ignore("b/295325503 expected not to be: null")
public void testBackKeyPress_shouldSetIntentDataIfLockScreenAdded() {
getShadowKeyguardManager().setIsKeyguardSecure(false);
@@ -208,7 +207,6 @@
}
@Test
- @Ignore
public void testBackKeyPress_shouldNotSetIntentDataIfLockScreenPresentBeforeLaunch() {
getShadowKeyguardManager().setIsKeyguardSecure(true);
@@ -221,7 +219,7 @@
}
@Test
- @Ignore
+ @Ignore("b/295325503 expected not to be: null")
public void testCancelClicked_shouldSetIntentDataIfLockScreenAdded() {
getShadowKeyguardManager().setIsKeyguardSecure(false);
@@ -237,7 +235,6 @@
}
@Test
- @Ignore
public void testCancelClicked_shouldNotSetIntentDataIfLockScreenPresentBeforeLaunch() {
getShadowKeyguardManager().setIsKeyguardSecure(true);
@@ -251,7 +248,6 @@
}
@Test
- @Ignore
public void testOnResultFromFindSensor_shouldNotSetIntentDataIfLockScreenPresentBeforeLaunch() {
getShadowKeyguardManager().setIsKeyguardSecure(true);
SetupFingerprintEnrollIntroduction activity = mController.create().resume().get();
@@ -262,7 +258,6 @@
}
@Test
- @Ignore
public void testOnResultFromFindSensor_shouldSetIntentDataIfLockScreenAdded() {
getShadowKeyguardManager().setIsKeyguardSecure(false);
SetupFingerprintEnrollIntroduction activity = mController.create().resume().get();
@@ -273,7 +268,6 @@
}
@Test
- @Ignore
public void testOnResultFromFindSensor_shouldNotSetIntentDataIfLockScreenNotAdded() {
getShadowKeyguardManager().setIsKeyguardSecure(false);
SetupFingerprintEnrollIntroduction activity = mController.create().resume().get();
@@ -284,7 +278,6 @@
}
@Test
- @Ignore
public void testLockPattern() {
ShadowStorageManager.setIsFileEncrypted(false);
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/TestUdfpsEnrollEnrollingView.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/TestUdfpsEnrollEnrollingView.java
new file mode 100644
index 0000000..92c8fe5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/TestUdfpsEnrollEnrollingView.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.annotation.LayoutRes;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifLayout;
+
+public class TestUdfpsEnrollEnrollingView extends GlifLayout {
+ public TestUdfpsEnrollEnrollingView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected View onInflateTemplate(LayoutInflater inflater, @LayoutRes int template) {
+ return super.onInflateTemplate(inflater, R.layout.biometrics_glif_compact);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingViewTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingViewTest.java
new file mode 100644
index 0000000..dec5208
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingViewTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2024 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.settings.biometrics.fingerprint;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.platform.test.annotations.EnableFlags;
+import android.util.AttributeSet;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+
+import com.android.settings.R;
+import com.android.settings.flags.Flags;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.LooperMode;
+
+
+@RunWith(RobolectricTestRunner.class)
+@LooperMode(LooperMode.Mode.LEGACY)
+public class UdfpsEnrollEnrollingViewTest {
+
+ private Context mThemeContext;
+ private TestFingerprintEnrollEnrolling mFingerprintEnrollEnrolling;
+ private ActivityController<UdfpsEnrollEnrollingViewTest.TestFingerprintEnrollEnrolling>
+ mController;
+ private AttributeSet mAttributeSet;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mController = Robolectric.buildActivity(TestFingerprintEnrollEnrolling.class);
+ mFingerprintEnrollEnrolling = mController.create().get();
+ mThemeContext = new ContextThemeWrapper(mFingerprintEnrollEnrolling,
+ R.style.SudThemeGlif_Light);
+ mAttributeSet = Robolectric.buildAttributeSet().build();
+ }
+
+ private void assertDefaultTemplate(TestUdfpsEnrollEnrollingView layout) {
+ final View title = layout.findViewById(
+ com.google.android.setupdesign.R.id.suc_layout_title);
+ assertThat(title).isNotNull();
+
+ final View subTitle = layout.findViewById(
+ com.google.android.setupdesign.R.id.sud_layout_subtitle);
+ assertThat(subTitle).isNotNull();
+
+ final View icon = layout.findViewById(com.google.android.setupdesign.R.id.sud_layout_icon);
+ assertThat(icon).isNotNull();
+
+ final View scrollView = layout.findViewById(
+ com.google.android.setupdesign.R.id.sud_scroll_view);
+ assertThat(scrollView).isNotNull();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENROLL_LAYOUT_TRUNCATE_IMPROVEMENT)
+ public void testDefaultTemplate() {
+ TestUdfpsEnrollEnrollingView layout = new TestUdfpsEnrollEnrollingView(mThemeContext,
+ mAttributeSet);
+ assertDefaultTemplate(layout);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENROLL_LAYOUT_TRUNCATE_IMPROVEMENT)
+ public void testGlifHeaderScrollView() {
+ TestUdfpsEnrollEnrollingView layout = new TestUdfpsEnrollEnrollingView(mThemeContext,
+ mAttributeSet);
+ final View headerScrollView = layout.findViewById(
+ R.id.sud_header_scroll_view);
+
+ assertThat(headerScrollView).isNotNull();
+ }
+
+ public static class TestFingerprintEnrollEnrolling extends FingerprintEnrollEnrolling {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ final TestUdfpsEnrollEnrollingView layout =
+ (TestUdfpsEnrollEnrollingView) getLayoutInflater().inflate(
+ R.layout.test_udfps_enroll_enrolling, null, false);
+ setContentView(layout);
+ }
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
index fc19728..9609af4 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
@@ -40,6 +40,7 @@
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
@@ -84,6 +85,7 @@
@Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
@Mock private LocalBluetoothProfileManager mProfileManager;
@Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
+ @Mock private LocalBluetoothLeBroadcast mBroadcast;
@Mock private BluetoothLeBroadcastReceiveState mBroadcastReceiveState;
private Context mContext;
@@ -102,6 +104,7 @@
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
mLocalBtManager = Utils.getLocalBtManager(mContext);
when(mProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(mAssistant);
+ when(mProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
when(mLocalBtManager.getProfileManager()).thenReturn(mProfileManager);
when(mLocalBtManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
@@ -267,8 +270,7 @@
}
@Test
- public void
- onProfileConnectionStateChanged_leaConnected_notInCallSharingFlagOff_addsPreference() {
+ public void onProfileConnectionStateChanged_leaConnected_notInCallSharingFlagOff_addPref() {
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
@@ -288,8 +290,7 @@
}
@Test
- public void
- onProfileConnectionStateChanged_leaConnected_notInCallNotInSharing_addsPreference() {
+ public void onProfileConnectionStateChanged_leaConnected_notInCallNotInSharing_addPref() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
@@ -306,16 +307,13 @@
}
@Test
- public void onProfileConnectionStateChanged_leaConnected_inCallSharingFlagOff_addsPreference() {
+ public void onProfileConnectionStateChanged_leaConnected_inCallSharingFlagOff_addPref() {
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
.thenReturn(true);
when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
- when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(mBroadcastReceiveState));
- List<Long> bisSyncState = new ArrayList<>();
- bisSyncState.add(1L);
- when(mBroadcastReceiveState.getBisSyncState()).thenReturn(bisSyncState);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
mCachedBluetoothDevice,
@@ -326,7 +324,7 @@
}
@Test
- public void onProfileConnectionStateChanged_leaConnected_inCallNotInSharing_addsPreference() {
+ public void onProfileConnectionStateChanged_leaConnected_inCallNotInSharing_addPref() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
@@ -343,9 +341,9 @@
}
@Test
- public void
- onProfileConnectionStateChanged_leaDeviceConnected_notInCallInSharing_removesPref() {
+ public void onProfileConnectionStateChanged_leaConnected_notInCallInSharing_removePref() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mSetFlagsRule.disableFlags(Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
.thenReturn(true);
@@ -365,8 +363,31 @@
}
@Test
- public void onProfileConnectionStateChanged_leaDeviceConnected_inCallInSharing_removesPref() {
+ public void
+ onProfileConnectionStateChanged_leaConnected_noInCallInSharing_hysteresis_removePref() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ mAudioManager.setMode(AudioManager.MODE_NORMAL);
+ when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
+ .thenReturn(true);
+ when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
+ when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(mBroadcastReceiveState));
+ when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
+ when(mBroadcastReceiveState.getBroadcastId()).thenReturn(1);
+
+ mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO);
+
+ verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaConnected_inCallSharing_removePref() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mSetFlagsRule.disableFlags(Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
.thenReturn(true);
@@ -386,6 +407,27 @@
}
@Test
+ public void onProfileConnectionStateChanged_leaConnected_inCallSharing_hysteresis_removePref() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ mAudioManager.setMode(AudioManager.MODE_NORMAL);
+ when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
+ .thenReturn(true);
+ when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
+ when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(mBroadcastReceiveState));
+ when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
+ when(mBroadcastReceiveState.getBroadcastId()).thenReturn(1);
+
+ mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO);
+
+ verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice);
+ }
+
+ @Test
public void
onProfileConnectionStateChanged_deviceIsNotInList_notInCall_invokesRemovePreference() {
mAudioManager.setMode(AudioManager.MODE_NORMAL);
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java
index d137d82..e21bf9a 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java
@@ -656,7 +656,7 @@
private void initController(List<String> invisibleProfiles) {
mController = new BluetoothDetailsProfilesController(mContext, mFragment, mLocalManager,
- mCachedDevice, mLifecycle, invisibleProfiles);
+ mCachedDevice, mLifecycle, invisibleProfiles, true);
mProfiles.setKey(mController.getPreferenceKey());
mController.mProfilesContainer = mProfiles;
mScreen.removeAll();
diff --git a/tests/robotests/src/com/android/settings/bluetooth/domain/interactor/SpatialAudioInteractorTest.kt b/tests/robotests/src/com/android/settings/bluetooth/domain/interactor/SpatialAudioInteractorTest.kt
deleted file mode 100644
index a83b7c2..0000000
--- a/tests/robotests/src/com/android/settings/bluetooth/domain/interactor/SpatialAudioInteractorTest.kt
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2024 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.settings.bluetooth.domain.interactor
-
-import android.bluetooth.BluetoothDevice
-import android.bluetooth.BluetoothProfile
-import android.content.Context
-import android.media.AudioDeviceAttributes
-import android.media.AudioDeviceInfo
-import android.media.AudioManager
-import androidx.test.core.app.ApplicationProvider
-import com.android.settingslib.bluetooth.CachedBluetoothDevice
-import com.android.settingslib.bluetooth.LeAudioProfile
-import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingModel
-import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingStateModel
-import com.android.settingslib.media.data.repository.SpatializerRepository
-import com.android.settingslib.media.domain.interactor.SpatializerInteractor
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.launchIn
-import kotlinx.coroutines.flow.onEach
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.spy
-import org.mockito.Mockito.times
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoInteractions
-import org.mockito.Mockito.`when`
-import org.mockito.junit.MockitoJUnit
-import org.mockito.junit.MockitoRule
-import org.robolectric.RobolectricTestRunner
-
-@OptIn(ExperimentalCoroutinesApi::class)
-@RunWith(RobolectricTestRunner::class)
-class SpatialAudioInteractorTest {
- @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
-
- @Mock private lateinit var audioManager: AudioManager
- @Mock private lateinit var cachedDevice: CachedBluetoothDevice
- @Mock private lateinit var bluetoothDevice: BluetoothDevice
- @Mock private lateinit var spatializerRepository: SpatializerRepository
- @Mock private lateinit var leAudioProfile: LeAudioProfile
-
- private lateinit var underTest: SpatialAudioInteractor
- private val testScope = TestScope()
-
- @Before
- fun setUp() {
- val context = spy(ApplicationProvider.getApplicationContext<Context>())
- `when`(cachedDevice.device).thenReturn(bluetoothDevice)
- `when`(cachedDevice.address).thenReturn(BLUETOOTH_ADDRESS)
- `when`(leAudioProfile.profileId).thenReturn(BluetoothProfile.LE_AUDIO)
- underTest =
- SpatialAudioInteractorImpl(
- context,
- audioManager,
- SpatializerInteractor(spatializerRepository),
- testScope.backgroundScope,
- testScope.testScheduler)
- }
-
- @Test
- fun getDeviceSetting_noAudioProfile_returnNull() {
- testScope.runTest {
- val setting = getLatestValue(underTest.getDeviceSetting(cachedDevice))
-
- assertThat(setting).isNull()
- verifyNoInteractions(spatializerRepository)
- }
- }
-
- @Test
- fun getDeviceSetting_audioProfileNotEnabled_returnNull() {
- testScope.runTest {
- `when`(cachedDevice.profiles).thenReturn(listOf(leAudioProfile))
- `when`(leAudioProfile.isEnabled(bluetoothDevice)).thenReturn(false)
-
- val setting = getLatestValue(underTest.getDeviceSetting(cachedDevice))
-
- assertThat(setting).isNull()
- verifyNoInteractions(spatializerRepository)
- }
- }
-
- @Test
- fun getDeviceSetting_spatialAudioNotSupported_returnNull() {
- testScope.runTest {
- `when`(cachedDevice.profiles).thenReturn(listOf(leAudioProfile))
- `when`(leAudioProfile.isEnabled(bluetoothDevice)).thenReturn(true)
- `when`(
- spatializerRepository.isSpatialAudioAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(false)
-
- val setting = getLatestValue(underTest.getDeviceSetting(cachedDevice))
-
- assertThat(setting).isNull()
- }
- }
-
- @Test
- fun getDeviceSetting_spatialAudioSupported_returnTwoToggles() {
- testScope.runTest {
- `when`(cachedDevice.profiles).thenReturn(listOf(leAudioProfile))
- `when`(leAudioProfile.isEnabled(bluetoothDevice)).thenReturn(true)
- `when`(
- spatializerRepository.isSpatialAudioAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(
- spatializerRepository.isHeadTrackingAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(false)
- `when`(spatializerRepository.getSpatialAudioCompatibleDevices())
- .thenReturn(listOf(BLE_AUDIO_DEVICE_ATTRIBUTES))
- `when`(spatializerRepository.isHeadTrackingEnabled(BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(false)
-
- val setting =
- getLatestValue(underTest.getDeviceSetting(cachedDevice))
- as DeviceSettingModel.MultiTogglePreference
-
- assertThat(setting).isNotNull()
- assertThat(setting.toggles.size).isEqualTo(2)
- assertThat(setting.state.selectedIndex).isEqualTo(1)
- }
- }
-
- @Test
- fun getDeviceSetting_headTrackingSupported_returnThreeToggles() {
- testScope.runTest {
- `when`(cachedDevice.profiles).thenReturn(listOf(leAudioProfile))
- `when`(leAudioProfile.isEnabled(bluetoothDevice)).thenReturn(true)
- `when`(
- spatializerRepository.isSpatialAudioAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(
- spatializerRepository.isHeadTrackingAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(spatializerRepository.getSpatialAudioCompatibleDevices())
- .thenReturn(listOf(BLE_AUDIO_DEVICE_ATTRIBUTES))
- `when`(spatializerRepository.isHeadTrackingEnabled(BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
-
- val setting =
- getLatestValue(underTest.getDeviceSetting(cachedDevice))
- as DeviceSettingModel.MultiTogglePreference
-
- assertThat(setting).isNotNull()
- assertThat(setting.toggles.size).isEqualTo(3)
- assertThat(setting.state.selectedIndex).isEqualTo(2)
- }
- }
-
- @Test
- fun getDeviceSetting_updateState_enableSpatialAudio() {
- testScope.runTest {
- `when`(cachedDevice.profiles).thenReturn(listOf(leAudioProfile))
- `when`(leAudioProfile.isEnabled(bluetoothDevice)).thenReturn(true)
- `when`(
- spatializerRepository.isSpatialAudioAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(
- spatializerRepository.isHeadTrackingAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(spatializerRepository.getSpatialAudioCompatibleDevices()).thenReturn(listOf())
- `when`(spatializerRepository.isHeadTrackingEnabled(BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(false)
-
- val setting =
- getLatestValue(underTest.getDeviceSetting(cachedDevice))
- as DeviceSettingModel.MultiTogglePreference
- setting.updateState(DeviceSettingStateModel.MultiTogglePreferenceState(2))
- runCurrent()
-
- assertThat(setting).isNotNull()
- verify(spatializerRepository, times(1))
- .addSpatialAudioCompatibleDevice(BLE_AUDIO_DEVICE_ATTRIBUTES)
- }
- }
-
- @Test
- fun getDeviceSetting_updateState_enableHeadTracking() {
- testScope.runTest {
- `when`(cachedDevice.profiles).thenReturn(listOf(leAudioProfile))
- `when`(leAudioProfile.isEnabled(bluetoothDevice)).thenReturn(true)
- `when`(
- spatializerRepository.isSpatialAudioAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(
- spatializerRepository.isHeadTrackingAvailableForDevice(
- BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(true)
- `when`(spatializerRepository.getSpatialAudioCompatibleDevices()).thenReturn(listOf())
- `when`(spatializerRepository.isHeadTrackingEnabled(BLE_AUDIO_DEVICE_ATTRIBUTES))
- .thenReturn(false)
-
- val setting =
- getLatestValue(underTest.getDeviceSetting(cachedDevice))
- as DeviceSettingModel.MultiTogglePreference
- setting.updateState(DeviceSettingStateModel.MultiTogglePreferenceState(2))
- runCurrent()
-
- assertThat(setting).isNotNull()
- verify(spatializerRepository, times(1))
- .addSpatialAudioCompatibleDevice(BLE_AUDIO_DEVICE_ATTRIBUTES)
- verify(spatializerRepository, times(1))
- .setHeadTrackingEnabled(BLE_AUDIO_DEVICE_ATTRIBUTES, true)
- }
- }
-
- private fun getLatestValue(deviceSettingFlow: Flow<DeviceSettingModel?>): DeviceSettingModel? {
- var latestValue: DeviceSettingModel? = null
- deviceSettingFlow.onEach { latestValue = it }.launchIn(testScope.backgroundScope)
- testScope.runCurrent()
- return latestValue
- }
-
- private companion object {
- const val BLUETOOTH_ADDRESS = "12:34:56:78:12:34"
- val BLE_AUDIO_DEVICE_ATTRIBUTES =
- AudioDeviceAttributes(
- AudioDeviceAttributes.ROLE_OUTPUT,
- AudioDeviceInfo.TYPE_BLE_HEADSET,
- BLUETOOTH_ADDRESS,
- )
- }
-}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt b/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt
index 1ea8044..bd56021 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt
+++ b/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt
@@ -20,14 +20,11 @@
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
-import android.media.AudioManager
-import android.net.Uri
import androidx.fragment.app.FragmentActivity
import androidx.preference.Preference
import androidx.preference.PreferenceManager
import androidx.preference.PreferenceScreen
import androidx.test.core.app.ApplicationProvider
-import com.android.settings.bluetooth.domain.interactor.SpatialAudioInteractor
import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
import com.android.settings.bluetooth.ui.model.FragmentTypeModel
import com.android.settings.dashboard.DashboardFragment
@@ -56,13 +53,11 @@
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
import org.mockito.Mockito.any
-import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
-import org.robolectric.Shadows
import org.robolectric.shadows.ShadowLooper
import org.robolectric.shadows.ShadowLooper.shadowMainLooper
@@ -74,7 +69,6 @@
@Mock private lateinit var cachedDevice: CachedBluetoothDevice
@Mock private lateinit var bluetoothAdapter: BluetoothAdapter
@Mock private lateinit var repository: DeviceSettingRepository
- @Mock private lateinit var spatialAudioInteractor: SpatialAudioInteractor
private lateinit var fragment: TestFragment
private lateinit var underTest: DeviceDetailsFragmentFormatter
@@ -90,10 +84,6 @@
featureFactory.bluetoothFeatureProvider.getDeviceSettingRepository(
eq(context), eq(bluetoothAdapter), any()))
.thenReturn(repository)
- `when`(
- featureFactory.bluetoothFeatureProvider.getSpatialAudioInteractor(
- eq(context), any(AudioManager::class.java), any()))
- .thenReturn(spatialAudioInteractor)
fragmentActivity = Robolectric.setupActivity(FragmentActivity::class.java)
assertThat(fragmentActivity.applicationContext).isNotNull()
fragment = TestFragment(context)
diff --git a/tests/robotests/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModelTest.kt b/tests/robotests/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModelTest.kt
index c3f938c..caeea94 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModelTest.kt
+++ b/tests/robotests/src/com/android/settings/bluetooth/ui/viewmodel/BluetoothDeviceDetailsViewModelTest.kt
@@ -20,7 +20,6 @@
import android.bluetooth.BluetoothAdapter
import android.graphics.Bitmap
import androidx.test.core.app.ApplicationProvider
-import com.android.settings.bluetooth.domain.interactor.SpatialAudioInteractor
import com.android.settings.bluetooth.ui.layout.DeviceSettingLayout
import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
import com.android.settings.bluetooth.ui.model.FragmentTypeModel
@@ -46,7 +45,9 @@
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
+import org.mockito.Mockito.any
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
@@ -65,8 +66,6 @@
@Mock private lateinit var repository: DeviceSettingRepository
- @Mock private lateinit var spatialAudioInteractor: SpatialAudioInteractor
-
private lateinit var underTest: BluetoothDeviceDetailsViewModel
private lateinit var featureFactory: FakeFeatureFactory
private val testScope = TestScope()
@@ -76,11 +75,16 @@
val application = ApplicationProvider.getApplicationContext<Application>()
featureFactory = FakeFeatureFactory.setupForTest()
+ `when`(
+ featureFactory.bluetoothFeatureProvider.getDeviceSettingRepository(
+ eq(application), eq(bluetoothAdapter), any()
+ ))
+ .thenReturn(repository)
+
underTest =
BluetoothDeviceDetailsViewModel(
application,
- repository,
- spatialAudioInteractor,
+ bluetoothAdapter,
cachedDevice,
testScope.testScheduler)
}
@@ -161,37 +165,6 @@
}
@Test
- fun getDeviceSetting_spatialAudio_returnSpatialAudioInteractorResponse() {
- testScope.runTest {
- val pref =
- buildMultiTogglePreference(
- DeviceSettingId.DEVICE_SETTING_ID_SPATIAL_AUDIO_MULTI_TOGGLE)
- `when`(repository.getDeviceSettingsConfig(cachedDevice))
- .thenReturn(
- DeviceSettingConfigModel(
- listOf(
- BUILTIN_SETTING_ITEM_1,
- buildRemoteSettingItem(
- DeviceSettingId.DEVICE_SETTING_ID_SPATIAL_AUDIO_MULTI_TOGGLE),
- ),
- listOf(),
- null))
- `when`(spatialAudioInteractor.getDeviceSetting(cachedDevice)).thenReturn(flowOf(pref))
-
- var deviceSettingPreference: DeviceSettingPreferenceModel? = null
- underTest
- .getDeviceSetting(
- cachedDevice, DeviceSettingId.DEVICE_SETTING_ID_SPATIAL_AUDIO_MULTI_TOGGLE)
- .onEach { deviceSettingPreference = it }
- .launchIn(testScope.backgroundScope)
- runCurrent()
-
- assertThat(deviceSettingPreference?.id).isEqualTo(pref.id)
- verify(spatialAudioInteractor, times(1)).getDeviceSetting(cachedDevice)
- }
- }
-
- @Test
fun getLayout_builtinDeviceSettings() {
testScope.runTest {
`when`(repository.getDeviceSettingsConfig(cachedDevice))
@@ -239,7 +212,8 @@
.isEqualTo(
listOf(
listOf(DeviceSettingId.DEVICE_SETTING_ID_HEADER),
- listOf(remoteSettingId1, remoteSettingId2),
+ listOf(remoteSettingId1),
+ listOf(remoteSettingId2),
listOf(remoteSettingId3),
))
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/BluetoothDashboardScreenTest.kt b/tests/robotests/src/com/android/settings/connecteddevice/BluetoothDashboardScreenTest.kt
index 39c0294..16db841 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/BluetoothDashboardScreenTest.kt
+++ b/tests/robotests/src/com/android/settings/connecteddevice/BluetoothDashboardScreenTest.kt
@@ -15,7 +15,12 @@
*/
package com.android.settings.connecteddevice
+import android.content.Intent
+import android.provider.Settings.Global
+import androidx.preference.PreferenceFragmentCompat
+import androidx.test.core.app.ActivityScenario
import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.Settings.BluetoothDashboardActivity
import com.android.settings.flags.Flags
import com.android.settingslib.preference.CatalystScreenTestCase
import com.google.common.truth.Truth.assertThat
@@ -34,6 +39,18 @@
assertThat(preferenceScreenCreator.key).isEqualTo(BluetoothDashboardScreen.KEY)
}
- override fun migration() {
+ override fun launchFragment(
+ fragmentClass: Class<PreferenceFragmentCompat>,
+ action: (PreferenceFragmentCompat) -> Unit,
+ ) {
+ Global.putInt(appContext.contentResolver, Global.DEVICE_PROVISIONED, 1)
+ val intent = Intent(appContext, BluetoothDashboardActivity::class.java)
+ ActivityScenario.launch<BluetoothDashboardActivity>(intent).use {
+ it.onActivity { activity ->
+ val fragment = activity.supportFragmentManager.fragments[0]
+ assertThat(fragment.javaClass).isEqualTo(fragmentClass)
+ action(fragment as PreferenceFragmentCompat)
+ }
+ }
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdaterTest.java
index 11e31b6..12e03d4 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdaterTest.java
@@ -51,6 +51,7 @@
import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
@@ -99,6 +100,7 @@
@Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
@Mock private LocalBluetoothProfileManager mLocalBtProfileManager;
@Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
+ @Mock private LocalBluetoothLeBroadcast mBroadcast;
@Mock private BluetoothLeBroadcastReceiveState mState;
private Context mContext;
@@ -122,9 +124,7 @@
when(mLocalBtManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
when(mLocalBtManager.getProfileManager()).thenReturn(mLocalBtProfileManager);
when(mLocalBtProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(mAssistant);
- List<Long> bisSyncState = new ArrayList<>();
- bisSyncState.add(1L);
- when(mState.getBisSyncState()).thenReturn(bisSyncState);
+ when(mLocalBtProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
Pair<Drawable, String> pairs = new Pair<>(mDrawable, TEST_DEVICE_NAME);
doReturn(TEST_DEVICE_NAME).when(mCachedBluetoothDevice).getName();
doReturn(mBluetoothDevice).when(mCachedBluetoothDevice).getDevice();
@@ -152,7 +152,7 @@
@Test
public void onProfileConnectionStateChanged_leaDeviceConnected_flagOff_removesPref() {
- setupPreferenceMapWithDevice();
+ setupPreferenceMapWithDevice(false);
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
@@ -170,8 +170,46 @@
}
@Test
- public void onProfileConnectionStateChanged_leaDeviceConnected_noSource_removesPref() {
- setupPreferenceMapWithDevice();
+ public void onProfileConnectionStateChanged_leaConnected_flagOff_hysteresisMode_removesPref() {
+ setupPreferenceMapWithDevice(true);
+
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+
+ mDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mDevicePreferenceCallback).onDeviceRemoved(captor.capture());
+ assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
+ assertThat(((BluetoothDevicePreference) captor.getValue()).getBluetoothDevice())
+ .isEqualTo(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaConnected_noSource_removesPref() {
+ setupPreferenceMapWithDevice(false);
+
+ when(mAssistant.getAllSources(mBluetoothDevice)).thenReturn(ImmutableList.of());
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+
+ mDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mDevicePreferenceCallback).onDeviceRemoved(captor.capture());
+ assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
+ assertThat(((BluetoothDevicePreference) captor.getValue()).getBluetoothDevice())
+ .isEqualTo(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaConnected_noSource_hysteresisMode_removesPref() {
+ setupPreferenceMapWithDevice(true);
when(mAssistant.getAllSources(mBluetoothDevice)).thenReturn(ImmutableList.of());
ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
@@ -190,7 +228,7 @@
@Test
public void onProfileConnectionStateChanged_deviceIsNotInList_removesPref() {
- setupPreferenceMapWithDevice();
+ setupPreferenceMapWithDevice(false);
mCachedDevices.clear();
when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mCachedDevices);
@@ -209,8 +247,28 @@
}
@Test
- public void onProfileConnectionStateChanged_leaDeviceDisconnected_removesPref() {
- setupPreferenceMapWithDevice();
+ public void onProfileConnectionStateChanged_deviceIsNotInList_hysteresisMode_removesPref() {
+ setupPreferenceMapWithDevice(true);
+
+ mCachedDevices.clear();
+ when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mCachedDevices);
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+
+ mDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mDevicePreferenceCallback).onDeviceRemoved(captor.capture());
+ assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
+ assertThat(((BluetoothDevicePreference) captor.getValue()).getBluetoothDevice())
+ .isEqualTo(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaDisconnected_removesPref() {
+ setupPreferenceMapWithDevice(false);
when(mDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(false);
ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
@@ -228,8 +286,27 @@
}
@Test
- public void onProfileConnectionStateChanged_leaDeviceDisconnecting_removesPref() {
- setupPreferenceMapWithDevice();
+ public void onProfileConnectionStateChanged_leaDisconnected_hysteresisMode_removesPref() {
+ setupPreferenceMapWithDevice(true);
+
+ when(mDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(false);
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+
+ mDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_DISCONNECTED,
+ BluetoothProfile.LE_AUDIO);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mDevicePreferenceCallback).onDeviceRemoved(captor.capture());
+ assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
+ assertThat(((BluetoothDevicePreference) captor.getValue()).getBluetoothDevice())
+ .isEqualTo(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaDisconnecting_removesPref() {
+ setupPreferenceMapWithDevice(false);
doReturn(false).when(mCachedBluetoothDevice).isConnectedLeAudioDevice();
ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
@@ -246,9 +323,38 @@
}
@Test
- public void onProfileConnectionStateChanged_leaDeviceConnected_hasSource_addsPreference() {
+ public void onProfileConnectionStateChanged_leaDisconnecting_hysteresisMode_removesPref() {
+ setupPreferenceMapWithDevice(true);
+ doReturn(false).when(mCachedBluetoothDevice).isConnectedLeAudioDevice();
ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
- setupPreferenceMapWithDevice();
+
+ mDeviceUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mDevicePreferenceCallback).onDeviceRemoved(captor.capture());
+ assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
+ assertThat(((BluetoothDevicePreference) captor.getValue()).getBluetoothDevice())
+ .isEqualTo(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaConnected_hasSource_addsPref() {
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+ setupPreferenceMapWithDevice(false);
+
+ verify(mDevicePreferenceCallback).onDeviceAdded(captor.capture());
+ assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
+ assertThat(((BluetoothDevicePreference) captor.getValue()).getBluetoothDevice())
+ .isEqualTo(mCachedBluetoothDevice);
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leaConnected_hasSource_hysteresisMode_addsPref() {
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+ setupPreferenceMapWithDevice(true);
verify(mDevicePreferenceCallback).onDeviceAdded(captor.capture());
assertThat(captor.getValue() instanceof BluetoothDevicePreference).isTrue();
@@ -275,9 +381,19 @@
verify(mDevicePreferenceCallback).onDeviceClick(preference);
}
- private void setupPreferenceMapWithDevice() {
+ private void setupPreferenceMapWithDevice(boolean hysteresisModeOn) {
// Add device to preferenceMap
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ if (hysteresisModeOn) {
+ mSetFlagsRule.enableFlags(Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
+ when(mState.getBroadcastId()).thenReturn(1);
+ } else {
+ mSetFlagsRule.disableFlags(Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(mState.getBisSyncState()).thenReturn(bisSyncState);
+ }
when(mAssistant.getAllSources(mBluetoothDevice)).thenReturn(ImmutableList.of(mState));
when(mDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true);
doReturn(true).when(mCachedBluetoothDevice).isConnectedLeAudioDevice();
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceControllerTest.java
index a575d5a..4dc4dca 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioPreferenceControllerTest.java
@@ -527,12 +527,12 @@
shadowOf(Looper.getMainLooper()).idle();
assertThat(mPreference.getSummary().toString()).isEmpty();
- // onReceiveStateChanged will update summary
+ // onSourceAdded will update summary
Settings.Secure.putInt(mContentResolver, TEST_SETTINGS_KEY, TEST_DEVICE_GROUP_ID1);
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice1));
when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(mState));
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(
- mDevice1, /* sourceId= */ 1, mState);
+ mController.mBroadcastAssistantCallback.onSourceAdded(mDevice1, /* sourceId= */
+ 1, /* reason= */ 1);
shadowOf(Looper.getMainLooper()).idle();
assertThat(mPreference.getSummary().toString())
.isEqualTo(
@@ -557,8 +557,6 @@
mController.mBroadcastAssistantCallback.onSearchStartFailed(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopped(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopFailed(/* reason= */ 1);
- mController.mBroadcastAssistantCallback.onSourceAdded(
- mDevice1, /* sourceId= */ 1, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceAddFailed(
mDevice1, mSource, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceRemoved(
@@ -572,6 +570,8 @@
mController.mBroadcastAssistantCallback.onSourceFound(mSource);
mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1);
shadowOf(Looper.getMainLooper()).idle();
+ mController.mBroadcastAssistantCallback.onReceiveStateChanged(mDevice1, /* sourceId= */ 1,
+ mState);
// Above callbacks won't update summary.
assertThat(mPreference.getSummary().toString()).isEmpty();
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java
index 0bc0b94..a49d0c1 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java
@@ -521,21 +521,9 @@
@Test
public void testBluetoothLeBroadcastAssistantCallbacks_updateGroup() {
- // onReceiveStateChanged with unconnected state will do nothing
- when(mState.getBisSyncState()).thenReturn(new ArrayList<>());
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(
- mDevice, /* sourceId= */ 1, mState);
- shadowOf(Looper.getMainLooper()).idle();
- verify(mBluetoothDeviceUpdater, never()).forceUpdate();
- verify(mDialogHandler, never()).closeOpeningDialogsForLeaDevice(mCachedDevice);
-
- // onReceiveStateChanged with connected state will update group preference and handle
- // stale dialogs
- List<Long> bisSyncState = new ArrayList<>();
- bisSyncState.add(1L);
- when(mState.getBisSyncState()).thenReturn(bisSyncState);
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(
- mDevice, /* sourceId= */ 1, mState);
+ // onSourceAdded will update group preference and handle stale dialogs
+ mController.mBroadcastAssistantCallback.onSourceAdded(mDevice, /* sourceId= */
+ 1, /* reason= */ 1);
shadowOf(Looper.getMainLooper()).idle();
verify(mBluetoothDeviceUpdater).forceUpdate();
verify(mDialogHandler).closeOpeningDialogsForLeaDevice(mCachedDevice);
@@ -572,8 +560,13 @@
mController.mBroadcastAssistantCallback.onSearchStartFailed(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopped(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopFailed(/* reason= */ 1);
- mController.mBroadcastAssistantCallback.onSourceAdded(
- mDevice, /* sourceId= */ 1, /* reason= */ 1);
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(mState.getBisSyncState()).thenReturn(bisSyncState);
+ when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
+ when(mState.getBroadcastId()).thenReturn(1);
+ mController.mBroadcastAssistantCallback.onReceiveStateChanged(mDevice, /* sourceId= */ 1,
+ mState);
mController.mBroadcastAssistantCallback.onSourceModified(
mDevice, /* sourceId= */ 1, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceModifyFailed(
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java
index d8c663f..bac8b30 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java
@@ -461,18 +461,9 @@
@Test
public void testBluetoothLeBroadcastAssistantCallbacks_updateGroup() {
- when(mState.getBisSyncState()).thenReturn(new ArrayList<>());
- // onReceiveStateChanged with unconnected state will do nothing
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(
- mDevice1, /* sourceId= */ 1, mState);
- verify(mDeviceUpdater, never()).forceUpdate();
-
- // onReceiveStateChanged with connected state will update group preference
- List<Long> bisSyncState = new ArrayList<>();
- bisSyncState.add(1L);
- when(mState.getBisSyncState()).thenReturn(bisSyncState);
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(
- mDevice1, /* sourceId= */ 1, mState);
+ // onSourceAdded will update group preference
+ mController.mBroadcastAssistantCallback.onSourceAdded(mDevice1, /* sourceId= */
+ 1, /* reason= */ 1);
verify(mDeviceUpdater).forceUpdate();
// onSourceRemoved will update group preference
@@ -487,8 +478,13 @@
mController.mBroadcastAssistantCallback.onSearchStartFailed(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopped(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopFailed(/* reason= */ 1);
- mController.mBroadcastAssistantCallback.onSourceAdded(
- mDevice1, /* sourceId= */ 1, /* reason= */ 1);
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(mState.getBisSyncState()).thenReturn(bisSyncState);
+ when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
+ when(mState.getBroadcastId()).thenReturn(1);
+ mController.mBroadcastAssistantCallback.onReceiveStateChanged(mDevice1, /* sourceId= */ 1,
+ mState);
mController.mBroadcastAssistantCallback.onSourceAddFailed(
mDevice1, mSource, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceRemoveFailed(
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java
index 5bfb966..8885e41 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java
@@ -320,16 +320,37 @@
}
@Test
- public void idTextValid_emptyString() {
+ public void isTextValid_emptyString() {
boolean valid = mController.isTextValid("");
assertThat(valid).isFalse();
}
+
@Test
- public void idTextValid_validPassword() {
+ public void isTextValid_emptyString_showEditTextFormatAlert() {
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+ boolean valid = mController.isTextValid("");
+
+ assertThat(valid).isFalse();
+ verify(mPreference).showEditTextFormatAlert(true);
+ }
+
+ @Test
+ public void isTextValid_validPassword() {
boolean valid = mController.isTextValid(BROADCAST_PASSWORD);
assertThat(valid).isTrue();
}
+
+ @Test
+ public void isTextValid_validPassword_hideEditTextFormatAlert() {
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+ boolean valid = mController.isTextValid(BROADCAST_PASSWORD);
+
+ assertThat(valid).isTrue();
+ verify(mPreference).showEditTextFormatAlert(false);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java
index 0b87e8c..20b8319 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java
@@ -71,10 +71,12 @@
var editText = view.findViewById(android.R.id.edit);
var checkBox = view.findViewById(R.id.audio_sharing_stream_password_checkbox);
var dialogMessage = view.findViewById(android.R.id.message);
+ var editTextAlertMessage = view.findViewById(R.id.edit_alert_message);
assertThat(editText).isNotNull();
assertThat(checkBox).isNotNull();
assertThat(dialogMessage).isNotNull();
+ assertThat(editTextAlertMessage).isNotNull();
}
@Test
@@ -148,6 +150,34 @@
}
@Test
+ public void showEditTextFormatAlert_show() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ var editTextAlertMessage = view.findViewById(R.id.edit_alert_message);
+
+ mPreference.showEditTextFormatAlert(true);
+
+ assertThat(editTextAlertMessage).isNotNull();
+ assertThat(editTextAlertMessage.getVisibility()).isEqualTo(VISIBLE);
+ }
+
+ @Test
+ public void showEditTextFormatAlert_hide() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ var editTextAlertMessage = view.findViewById(R.id.edit_alert_message);
+
+ mPreference.showEditTextFormatAlert(false);
+
+ assertThat(editTextAlertMessage).isNotNull();
+ assertThat(editTextAlertMessage.getVisibility()).isEqualTo(GONE);
+ }
+
+ @Test
public void onDialogEventListener_onClick_positiveButton() {
AudioSharingPasswordPreference.OnDialogEventListener listener =
mock(AudioSharingPasswordPreference.OnDialogEventListener.class);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiverTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiverTest.java
index db6eb8c..e720038 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiverTest.java
@@ -130,7 +130,7 @@
}
@Test
- public void broadcastReceiver_receiveAudioSharingStateChangeIntentFlagOff_doNothing() {
+ public void broadcastReceiver_receiveAudioSharingStateOn_flagOff_doNothing() {
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
@@ -140,6 +140,23 @@
audioSharingReceiver.onReceive(mContext, intent);
verifyNoInteractions(mNm);
+ verifyNoInteractions(mFeatureFactory.metricsFeatureProvider);
+ }
+
+ @Test
+ public void broadcastReceiver_receiveAudioSharingStateOn_broadcastDisabled_doNothing() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ENABLED);
+
+ Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
+ intent.setPackage(mContext.getPackageName());
+ intent.putExtra(EXTRA_LE_AUDIO_SHARING_STATE, BROADCAST_STATE_ON);
+ AudioSharingReceiver audioSharingReceiver = getAudioSharingReceiver(intent);
+ audioSharingReceiver.onReceive(mContext, intent);
+
+ verifyNoInteractions(mNm);
+ verifyNoInteractions(mFeatureFactory.metricsFeatureProvider);
}
@Test
@@ -152,10 +169,11 @@
audioSharingReceiver.onReceive(mContext, intent);
verifyNoInteractions(mNm);
+ verifyNoInteractions(mFeatureFactory.metricsFeatureProvider);
}
@Test
- public void broadcastReceiver_receiveAudioSharingStateChangeIntentOnState_showNotification() {
+ public void broadcastReceiver_receiveAudioSharingStateOn_broadcastEnabled_showNotification() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
@@ -171,7 +189,26 @@
@Test
public void
- broadcastReceiver_receiveAudioSharingStateChangeIntentOffState_cancelNotification() {
+ broadcastReceiver_receiveAudioSharingStateOff_broadcastDisabled_cancelNotification() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ENABLED);
+
+ Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
+ intent.setPackage(mContext.getPackageName());
+ intent.putExtra(EXTRA_LE_AUDIO_SHARING_STATE, BROADCAST_STATE_OFF);
+ AudioSharingReceiver audioSharingReceiver = getAudioSharingReceiver(intent);
+ audioSharingReceiver.onReceive(mContext, intent);
+
+ verify(mNm).cancel(R.drawable.ic_bt_le_audio_sharing);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
+ }
+
+ @Test
+ public void
+ broadcastReceiver_receiveAudioSharingStateOff_broadcastEnabled_cancelNotification() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
@@ -182,12 +219,15 @@
verify(mNm).cancel(R.drawable.ic_bt_le_audio_sharing);
verify(mFeatureFactory.metricsFeatureProvider)
- .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION);
+ .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
}
@Test
- public void broadcastReceiver_receiveAudioSharingStopIntentFlagOff_doNothing() {
- mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ public void broadcastReceiver_receiveAudioSharingStop_broadcastDisabled_cancelNotification() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ENABLED);
Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STOP);
intent.setPackage(mContext.getPackageName());
@@ -195,11 +235,14 @@
audioSharingReceiver.onReceive(mContext, intent);
verifyNoInteractions(mBroadcast);
+ verify(mNm).cancel(R.drawable.ic_bt_le_audio_sharing);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ ACTION_LE_AUDIO_SHARING_STOP);
}
@Test
- public void
- broadcastReceiver_receiveAudioSharingStopIntent_notInBroadcast_cancelNotification() {
+ public void broadcastReceiver_receiveAudioSharingStop_notInBroadcast_cancelNotification() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
when(mBroadcast.isEnabled(null)).thenReturn(false);
int broadcastId = 1;
@@ -213,11 +256,12 @@
verify(mBroadcast, never()).stopBroadcast(broadcastId);
verify(mNm).cancel(R.drawable.ic_bt_le_audio_sharing);
verify(mFeatureFactory.metricsFeatureProvider)
- .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION);
+ .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ ACTION_LE_AUDIO_SHARING_STOP);
}
@Test
- public void broadcastReceiver_receiveAudioSharingStopIntent_inBroadcast_stopBroadcast() {
+ public void broadcastReceiver_receiveAudioSharingStop_inBroadcast_stopBroadcast() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
when(mBroadcast.isEnabled(null)).thenReturn(true);
int broadcastId = 1;
@@ -231,6 +275,10 @@
verify(mBroadcast).stopBroadcast(broadcastId);
verify(mFeatureFactory.metricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_STOP_AUDIO_SHARING_FROM_NOTIFICATION);
+ verify(mNm, never()).cancel(R.drawable.ic_bt_le_audio_sharing);
+ verify(mFeatureFactory.metricsFeatureProvider, never())
+ .action(mContext, SettingsEnums.ACTION_CANCEL_AUDIO_SHARING_NOTIFICATION,
+ ACTION_LE_AUDIO_SHARING_STOP);
}
private AudioSharingReceiver getAudioSharingReceiver(Intent intent) {
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
index fb5aa1c..7851b2b 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
@@ -476,7 +476,7 @@
}
@Test
- public void onPlaybackStarted_notInit_noDialog() {
+ public void onBroadcastMetadataChanged_notInit_noDialog() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
when(mBtnView.isEnabled()).thenReturn(true);
@@ -503,7 +503,7 @@
// No progress dialog.
assertThat(childFragments).isEmpty();
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mFeatureFactory.metricsFeatureProvider)
@@ -515,7 +515,7 @@
}
@Test
- public void onPlaybackStarted_hasLocalSource_noDialog() {
+ public void onBroadcastMetadataChanged_hasLocalSource_noDialog() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
when(mBtnView.isEnabled()).thenReturn(true);
@@ -533,7 +533,7 @@
assertThat(childFragments).comparingElementsUsing(CLAZZNAME_EQUALS).containsExactly(
AudioSharingProgressDialogFragment.class.getName());
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mAssistant, never()).addSource(any(), any(), anyBoolean());
@@ -549,7 +549,7 @@
}
@Test
- public void onPlaybackStarted_singleActiveDevice_showJoinAudioSharingDialog() {
+ public void onBroadcastMetadataChanged_singleActiveDevice_showJoinAudioSharingDialog() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
when(mBtnView.isEnabled()).thenReturn(true);
@@ -566,15 +566,15 @@
when(mBroadcast.isEnabled(null)).thenReturn(true);
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mFeatureFactory.metricsFeatureProvider)
.action(any(Context.class), eq(SettingsEnums.ACTION_AUTO_JOIN_AUDIO_SHARING));
when(mState.getBisSyncState()).thenReturn(ImmutableList.of(1L));
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(mDevice2, /* sourceId= */ 1,
- mState);
+ mController.mBroadcastAssistantCallback.onSourceAdded(mDevice2, /* sourceId= */
+ 1, /* reason= */ 1);
shadowOf(Looper.getMainLooper()).idle();
childFragments = mParentFragment.getChildFragmentManager().getFragments();
@@ -613,7 +613,7 @@
}
@Test
- public void onPlaybackStarted_oneActiveOnConnected_showJoinAudioSharingDialog() {
+ public void onBroadcastMetadataChanged_oneActiveOnConnected_showJoinAudioSharingDialog() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
when(mBtnView.isEnabled()).thenReturn(true);
@@ -635,7 +635,7 @@
when(mBroadcast.isEnabled(null)).thenReturn(true);
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mFeatureFactory.metricsFeatureProvider)
@@ -681,7 +681,7 @@
}
@Test
- public void onPlaybackStarted_oneActiveOnConnected_clickShareBtnOnDialog_addSource() {
+ public void onBroadcastMetadataChanged_oneActiveOnConnected_clickShareBtnOnDialog_addSource() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
when(mBtnView.isEnabled()).thenReturn(true);
@@ -694,7 +694,7 @@
verify(mBroadcast).startPrivateBroadcast();
when(mBroadcast.isEnabled(null)).thenReturn(true);
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mAssistant).addSource(mDevice2, mMetadata, /* isGroupOp= */ false);
@@ -722,7 +722,7 @@
}
@Test
- public void onPlaybackStarted_oneActiveOnConnected_clickCancelBtnOnDialog_doNothing() {
+ public void onBroadcastMetadataChanged_oneActiveOnConnected_clickCancelBtnOnDialog_doNothing() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
when(mBtnView.isEnabled()).thenReturn(true);
@@ -735,7 +735,7 @@
verify(mBroadcast).startPrivateBroadcast();
when(mBroadcast.isEnabled(null)).thenReturn(true);
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mAssistant).addSource(mDevice2, mMetadata, /* isGroupOp= */ false);
@@ -835,7 +835,7 @@
when(mBroadcast.isEnabled(null)).thenReturn(true);
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mAssistant).addSource(mDevice2, mMetadata, /* isGroupOp= */ false);
@@ -868,16 +868,15 @@
}
@Test
- public void testAssistantCallbacks_onReceiveStateChanged_dismissProgressDialog() {
+ public void testAssistantCallbacks_onSourceAdded_dismissProgressDialog() {
AudioSharingProgressDialogFragment.show(mParentFragment, TEST_DEVICE_NAME1);
shadowOf(Looper.getMainLooper()).idle();
List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
assertThat(childFragments).comparingElementsUsing(CLAZZNAME_EQUALS).containsExactly(
AudioSharingProgressDialogFragment.class.getName());
- when(mState.getBisSyncState()).thenReturn(ImmutableList.of(1L));
- mController.mBroadcastAssistantCallback.onReceiveStateChanged(mDevice1, /* sourceId= */ 1,
- mState);
+ mController.mBroadcastAssistantCallback.onSourceAdded(mDevice1, /* sourceId= */
+ 1, /* reason= */ 1);
shadowOf(Looper.getMainLooper()).idle();
childFragments = mParentFragment.getChildFragmentManager().getFragments();
assertThat(childFragments).isEmpty();
@@ -892,8 +891,6 @@
mController.mBroadcastAssistantCallback.onSearchStartFailed(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopped(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStopFailed(/* reason= */ 1);
- mController.mBroadcastAssistantCallback.onSourceAdded(
- mDevice1, /* sourceId= */ 1, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceRemoved(
mDevice1, /* sourceId= */ 1, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceRemoveFailed(
@@ -1013,7 +1010,7 @@
shadowOf(Looper.getMainLooper()).idle();
verify(mBroadcast).startPrivateBroadcast();
- mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
shadowOf(Looper.getMainLooper()).idle();
verify(mFeatureFactory.metricsFeatureProvider)
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java
index 1d39bc9..4c25c11 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java
@@ -17,6 +17,7 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
import static com.android.settingslib.flags.Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static com.google.common.truth.Truth.assertThat;
@@ -31,10 +32,12 @@
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastAssistant;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.platform.test.flag.junit.SetFlagsRule;
import android.view.View;
@@ -46,6 +49,7 @@
import com.android.settings.R;
import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -62,6 +66,7 @@
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import java.util.ArrayList;
import java.util.Collections;
@@ -73,6 +78,7 @@
shadows = {
ShadowThreadUtils.class,
ShadowAudioStreamsHelper.class,
+ ShadowBluetoothAdapter.class,
})
public class AudioStreamButtonControllerTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -95,6 +101,13 @@
@Before
public void setUp() {
mSetFlagsRule.disableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ ShadowBluetoothAdapter shadowBluetoothAdapter = Shadow.extract(
+ BluetoothAdapter.getDefaultAdapter());
+ shadowBluetoothAdapter.setEnabled(true);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(mAssistant);
mFeatureFactory = FakeFeatureFactory.setupForTest();
@@ -261,6 +274,7 @@
@Test
public void testCallback_onReceiveStateChangedWithSourcePresent_updateButton() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
String address = "11:22:33:44:55:66";
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java
index 5cdc797..54b26ec 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java
@@ -20,6 +20,7 @@
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamHeaderController.AUDIO_STREAM_HEADER_NOT_LISTENING_SUMMARY;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamHeaderController.AUDIO_STREAM_HEADER_PRESENT_NOW_SUMMARY;
import static com.android.settingslib.flags.Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
@@ -28,9 +29,11 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastAssistant;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -41,6 +44,7 @@
import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper;
import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowEntityHeaderController;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
@@ -57,6 +61,7 @@
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import java.util.ArrayList;
import java.util.Collections;
@@ -69,6 +74,7 @@
ShadowEntityHeaderController.class,
ShadowThreadUtils.class,
ShadowAudioStreamsHelper.class,
+ ShadowBluetoothAdapter.class,
})
public class AudioStreamHeaderControllerTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -93,6 +99,13 @@
@Before
public void setUp() {
mSetFlagsRule.disableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ ShadowBluetoothAdapter shadowBluetoothAdapter = Shadow.extract(
+ BluetoothAdapter.getDefaultAdapter());
+ shadowBluetoothAdapter.setEnabled(true);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
ShadowEntityHeaderController.setUseMock(mHeaderController);
ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
@@ -260,6 +273,7 @@
@Test
public void testCallback_onReceiveStateChangedWithSourcePresent_updateButton() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
String address = "11:22:33:44:55:66";
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java
index bb873d4..7b53ca6 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java
@@ -17,6 +17,7 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
import static com.android.settingslib.flags.Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static com.google.common.truth.Truth.assertThat;
@@ -31,6 +32,8 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.platform.test.flag.junit.SetFlagsRule;
import android.text.SpannableString;
@@ -38,6 +41,8 @@
import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -47,8 +52,14 @@
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothAdapter.class,
+ })
public class AudioStreamStateHandlerTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@@ -64,6 +75,13 @@
@Before
public void setUp() {
mSetFlagsRule.disableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ ShadowBluetoothAdapter shadowBluetoothAdapter = Shadow.extract(
+ BluetoothAdapter.getDefaultAdapter());
+ shadowBluetoothAdapter.setEnabled(true);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
mHandler = spy(new AudioStreamStateHandler());
}
@@ -109,6 +127,7 @@
@Test
public void testHandleStateChange_setNewState_sourcePresent() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
when(mHandler.getStateEnum())
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryControllerTest.java
index 0e00309..c83c8a2 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryControllerTest.java
@@ -135,47 +135,47 @@
@Test
public void getAvailabilityStatus_flagOn() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
public void getAvailabilityStatus_flagOff() {
- mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
@Test
public void onStart_flagOff_doNothing() {
- mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mController.onStart(mLifecycleOwner);
verify(mBluetoothEventManager, never()).registerCallback(any());
}
@Test
public void onStart_flagOn_registerCallback() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mController.onStart(mLifecycleOwner);
verify(mBluetoothEventManager).registerCallback(any());
}
@Test
public void onStop_flagOff_doNothing() {
- mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mController.onStop(mLifecycleOwner);
verify(mBluetoothEventManager, never()).unregisterCallback(any());
}
@Test
public void onStop_flagOn_unregisterCallback() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mController.onStop(mLifecycleOwner);
verify(mBluetoothEventManager).unregisterCallback(any());
}
@Test
public void updateVisibility_flagOff_invisible() {
- mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mController.updateVisibility();
shadowOf(Looper.getMainLooper()).idle();
assertThat(mPreference.isVisible()).isFalse();
@@ -183,7 +183,7 @@
@Test
public void updateVisibility_noConnectedLe_invisible() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mController.updateVisibility();
shadowOf(Looper.getMainLooper()).idle();
assertThat(mPreference.isVisible()).isFalse();
@@ -191,7 +191,7 @@
@Test
public void updateVisibility_isNotProfileReady_invisible() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(
mCachedBluetoothDevice);
when(mVolumeControl.isProfileReady()).thenReturn(false);
@@ -202,7 +202,7 @@
@Test
public void updateVisibility_isBroadcasting_invisible() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(
mCachedBluetoothDevice);
when(mBroadcast.isEnabled(any())).thenReturn(true);
@@ -213,7 +213,7 @@
@Test
public void updateVisibility_isBluetoothOff_invisible() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(
mCachedBluetoothDevice);
mShadowBluetoothAdapter.setEnabled(false);
@@ -224,7 +224,7 @@
@Test
public void updateVisibility_visible() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(
mCachedBluetoothDevice);
mController.displayPreference(mScreen);
@@ -235,7 +235,7 @@
@Test
public void onProfileConnectionStateChanged_updateVisibility() {
- mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
ArgumentCaptor<BluetoothCallback> argumentCaptor =
ArgumentCaptor.forClass(BluetoothCallback.class);
mController.onStart(mLifecycleOwner);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelperTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelperTest.java
index fca1137..abfc4b7 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelperTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelperTest.java
@@ -20,6 +20,7 @@
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static com.android.settingslib.flags.Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static com.google.common.truth.Truth.assertThat;
@@ -33,9 +34,11 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -45,6 +48,7 @@
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
@@ -65,6 +69,7 @@
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import java.util.ArrayList;
import java.util.Collections;
@@ -74,6 +79,7 @@
@Config(
shadows = {
ShadowThreadUtils.class,
+ ShadowBluetoothAdapter.class,
})
public class AudioStreamsHelperTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -97,6 +103,13 @@
@Before
public void setUp() {
mSetFlagsRule.disableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
+ ShadowBluetoothAdapter shadowBluetoothAdapter = Shadow.extract(
+ BluetoothAdapter.getDefaultAdapter());
+ shadowBluetoothAdapter.setEnabled(true);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager);
when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mDeviceManager);
when(mLocalBluetoothProfileManager.getLeAudioBroadcastAssistantProfile())
@@ -229,6 +242,7 @@
@Test
public void getAllPresentSources_noSource() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
List<BluetoothDevice> devices = new ArrayList<>();
@@ -251,6 +265,7 @@
@Test
public void getAllPresentSources_returnSource() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
String address = "11:22:33:44:55:66";
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallbackTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallbackTest.java
index 1e64528..4e962c7 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallbackTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallbackTest.java
@@ -17,6 +17,7 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
import static com.android.settingslib.flags.Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -24,11 +25,18 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.bluetooth.BluetoothStatusCodes;
+import android.content.Context;
import android.platform.test.flag.junit.SetFlagsRule;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -37,15 +45,21 @@
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothAdapter.class,
+ })
public class AudioStreamsProgressCategoryCallbackTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
-
+ private final Context mContext = ApplicationProvider.getApplicationContext();
@Mock private AudioStreamsProgressCategoryController mController;
@Mock private BluetoothDevice mDevice;
@Mock private BluetoothLeBroadcastReceiveState mState;
@@ -56,7 +70,14 @@
@Before
public void setUp() {
mSetFlagsRule.disableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
- mCallback = new AudioStreamsProgressCategoryCallback(mController);
+ ShadowBluetoothAdapter shadowBluetoothAdapter = Shadow.extract(
+ BluetoothAdapter.getDefaultAdapter());
+ shadowBluetoothAdapter.setEnabled(true);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mCallback = new AudioStreamsProgressCategoryCallback(mContext, mController);
}
@Test
@@ -71,6 +92,7 @@
@Test
public void testOnReceiveStateChanged_sourcePresent() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
String address = "11:22:33:44:55:66";
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryControllerTest.java
index 227748a..78d4d6e 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryControllerTest.java
@@ -26,6 +26,7 @@
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.UNSET_BROADCAST_ID;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settingslib.flags.Flags.FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static com.google.common.truth.Truth.assertThat;
@@ -48,6 +49,7 @@
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.os.Looper;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -62,6 +64,7 @@
import com.android.settings.R;
import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settingslib.bluetooth.BluetoothEventManager;
@@ -84,6 +87,7 @@
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowAlertDialog;
import org.robolectric.shadows.androidx.fragment.FragmentController;
@@ -97,6 +101,7 @@
ShadowAudioStreamsHelper.class,
ShadowThreadUtils.class,
ShadowAlertDialog.class,
+ ShadowBluetoothAdapter.class,
})
public class AudioStreamsProgressCategoryControllerTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -129,6 +134,13 @@
@Before
public void setUp() {
+ ShadowBluetoothAdapter shadowBluetoothAdapter = Shadow.extract(
+ BluetoothAdapter.getDefaultAdapter());
+ shadowBluetoothAdapter.setEnabled(true);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(mLeBroadcastAssistant);
when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(emptyList());
@@ -292,6 +304,7 @@
@Test
public void testOnStart_initHasDevice_getPresentSources() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
mSetFlagsRule.enableFlags(FLAG_AUDIO_SHARING_HYSTERESIS_MODE_FIX);
// Setup a device
diff --git a/tests/robotests/src/com/android/settings/datausage/DataSaverScreenTest.kt b/tests/robotests/src/com/android/settings/datausage/DataSaverScreenTest.kt
new file mode 100644
index 0000000..08af4c0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/datausage/DataSaverScreenTest.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 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.settings.datausage
+
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+
+class DataSaverScreenTest : CatalystScreenTestCase() {
+ override val preferenceScreenCreator = DataSaverScreen()
+ override val flagName
+ get() = Flags.FLAG_CATALYST_RESTRICT_BACKGROUND_PARENT_ENTRY
+
+ override fun migration() {}
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(DataSaverScreen.KEY)
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/development/BluetoothLeAudioUiPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BluetoothLeAudioUiPreferenceControllerTest.java
new file mode 100644
index 0000000..a4462e4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/BluetoothLeAudioUiPreferenceControllerTest.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2024 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.settings.development;
+
+import static com.android.settings.development.BluetoothLeAudioUiPreferenceController.VALUE_KEY;
+import static com.android.settings.development.BluetoothLeAudioUiPreferenceController.VALUE_OFF;
+import static com.android.settings.development.BluetoothLeAudioUiPreferenceController.VALUE_ON;
+import static com.android.settings.development.BluetoothLeAudioUiPreferenceController.VALUE_UNSET;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothStatusCodes;
+import android.content.Context;
+import android.os.Looper;
+import android.os.SystemProperties;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreferenceCompat;
+
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settingslib.flags.Flags;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothAdapter.class,
+ BluetoothLeAudioUiPreferenceControllerTest.ShadowBluetoothRebootDialogFragment.class
+ })
+public class BluetoothLeAudioUiPreferenceControllerTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ private static final String SOURCE_SYSTEM_PROP_KEY =
+ "bluetooth.profile.bap.broadcast.source.enabled";
+ private static final String ASSIST_SYSTEM_PROP_KEY =
+ "bluetooth.profile.bap.broadcast.assist.enabled";
+ @Mock private PreferenceScreen mPreferenceScreen;
+ @Mock private DevelopmentSettingsDashboardFragment mFragment;
+ @Mock private SwitchPreferenceCompat mPreference;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private Context mContext;
+ private BluetoothLeAudioUiPreferenceController mController;
+
+ @Before
+ public void setup() {
+ mContext = RuntimeEnvironment.getApplication();
+ SystemProperties.set(SOURCE_SYSTEM_PROP_KEY, "true");
+ SystemProperties.set(ASSIST_SYSTEM_PROP_KEY, "true");
+ // Reset value
+ Settings.Global.putInt(mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET);
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+ mShadowBluetoothAdapter.setEnabled(true);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mController = spy(new BluetoothLeAudioUiPreferenceController(mContext, mFragment));
+ when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
+ .thenReturn(mPreference);
+ mController.displayPreference(mPreferenceScreen);
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void isAvailable_flagOff_returnFalse() {
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void isAvailable_flagOn_returnFalse() {
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void isAvailable_flagOn_propertyOff_returnFalse() {
+ SystemProperties.set(SOURCE_SYSTEM_PROP_KEY, "false");
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void updateState_settingEnabled_checked() {
+ Settings.Global.putInt(mContext.getContentResolver(), VALUE_KEY, VALUE_ON);
+ mController.updateState(mPreference);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mPreference).setChecked(true);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void updateState_settingDisabled_notChecked() {
+ Settings.Global.putInt(mContext.getContentResolver(), VALUE_KEY, VALUE_OFF);
+ mController.updateState(mPreference);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mPreference).setChecked(false);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void updateState_featureSupported_enabled() {
+ mController.updateState(mPreference);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mPreference).setEnabled(true);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void updateState_featureUnsupported_disabled() {
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_NOT_SUPPORTED);
+ mController.updateState(mPreference);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mPreference).setEnabled(false);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void onRebootDialogConfirmed_noChange_doNothing() {
+ mController.onRebootDialogConfirmed();
+
+ int result = Settings.Global.getInt(mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET);
+ assertThat(result).isEqualTo(VALUE_UNSET);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void onRebootDialogConfirmed_hasChange_turnOn() {
+ mController.onPreferenceChange(mPreference, true);
+ mController.onRebootDialogConfirmed();
+
+ int result = Settings.Global.getInt(mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET);
+ assertThat(result).isEqualTo(VALUE_ON);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void onRebootDialogCanceled_hasChange_doNothing() {
+ mController.onPreferenceChange(mPreference, true);
+ mController.onRebootDialogCanceled();
+
+ int result = Settings.Global.getInt(mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET);
+ assertThat(result).isEqualTo(VALUE_UNSET);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void onBroadcastDisabled_currentValueOn_turnOff() {
+ Settings.Global.putInt(mContext.getContentResolver(), VALUE_KEY, VALUE_ON);
+ mController.updateState(mPreference);
+ shadowOf(Looper.getMainLooper()).idle();
+ mController.onBroadcastDisabled();
+
+ int result = Settings.Global.getInt(mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET);
+ assertThat(result).isEqualTo(VALUE_OFF);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_AUDIO_SHARING_DEVELOPER_OPTION)
+ public void onBroadcastDisabled_currentValueUnset_doNothing() {
+ mController.updateState(mPreference);
+ mController.onBroadcastDisabled();
+ shadowOf(Looper.getMainLooper()).idle();
+
+ int result = Settings.Global.getInt(mContext.getContentResolver(), VALUE_KEY, VALUE_UNSET);
+ assertThat(result).isEqualTo(VALUE_UNSET);
+ }
+
+ @Implements(BluetoothRebootDialog.class)
+ public static class ShadowBluetoothRebootDialogFragment {
+
+ /** Shadow implementation of BluetoothRebootDialog#show */
+ @Implementation
+ public static void show(DevelopmentSettingsDashboardFragment host) {
+ // Do nothing.
+ }
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/development/LinuxTerminalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/LinuxTerminalPreferenceControllerTest.java
deleted file mode 100644
index 96b6d6a..0000000
--- a/tests/robotests/src/com/android/settings/development/LinuxTerminalPreferenceControllerTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2024 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.settings.development;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-
-import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class LinuxTerminalPreferenceControllerTest {
-
- @Mock
- private Context mContext;
- @Mock
- private SwitchPreference mPreference;
- @Mock
- private PreferenceScreen mPreferenceScreen;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private ApplicationInfo mApplicationInfo;
-
- private String mTerminalPackageName = "com.android.virtualization.terminal";
- private LinuxTerminalPreferenceController mController;
-
- @Before
- public void setup() throws Exception {
- MockitoAnnotations.initMocks(this);
- doReturn(mPackageManager).when(mContext).getPackageManager();
- doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(
- eq(mTerminalPackageName), any());
-
- mController = spy(new LinuxTerminalPreferenceController(mContext));
- doReturn(true).when(mController).isAvailable();
- doReturn(mTerminalPackageName).when(mController).getTerminalPackageName();
- when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
- .thenReturn(mPreference);
- mController.displayPreference(mPreferenceScreen);
- }
-
- @Test
- public void isAvailable_whenPackageNameIsNull_returnsFalse() throws Exception {
- mController = spy(new LinuxTerminalPreferenceController(mContext));
- doReturn(null).when(mController).getTerminalPackageName();
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void isAvailable_whenAppDoesNotExist_returnsFalse() throws Exception {
- doThrow(new NameNotFoundException()).when(mPackageManager).getApplicationInfo(
- eq(mTerminalPackageName), any());
-
- mController = spy(new LinuxTerminalPreferenceController(mContext));
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void onPreferenceChanged_turnOnTerminal() {
- mController.onPreferenceChange(null, true);
-
- verify(mPackageManager).setApplicationEnabledSetting(
- mTerminalPackageName,
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- /* flags= */ 0);
- }
-
- @Test
- public void onPreferenceChanged_turnOffTerminal() {
- mController.onPreferenceChange(null, false);
-
- verify(mPackageManager).setApplicationEnabledSetting(
- mTerminalPackageName,
- PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
- /* flags= */ 0);
- }
-
- @Test
- public void updateState_preferenceShouldBeChecked() {
- when(mPackageManager.getApplicationEnabledSetting(mTerminalPackageName))
- .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
- mController.updateState(mPreference);
-
- verify(mPreference).setChecked(true);
- }
-
- @Test
- public void updateState_preferenceShouldNotBeChecked() {
- when(mPackageManager.getApplicationEnabledSetting(mTerminalPackageName))
- .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
- mController.updateState(mPreference);
-
- verify(mPreference).setChecked(false);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/development/linuxterminal/EnableLinuxTerminalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/linuxterminal/EnableLinuxTerminalPreferenceControllerTest.java
new file mode 100644
index 0000000..a322f90
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/linuxterminal/EnableLinuxTerminalPreferenceControllerTest.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2024 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.settings.development.linuxterminal;
+
+import static com.android.settings.development.linuxterminal.EnableLinuxTerminalPreferenceController.TERMINAL_PACKAGE_NAME_RESID;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assume.assumeFalse;
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.widget.SettingsMainSwitchPreference;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.ParameterizedRobolectricTestRunner;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** Tests {@link EnableLinuxTerminalPreferenceController} */
+@RunWith(ParameterizedRobolectricTestRunner.class)
+public class EnableLinuxTerminalPreferenceControllerTest {
+
+ /** Defines parameters for parameterized test */
+ @ParameterizedRobolectricTestRunner.Parameters(
+ name = "isPrimaryUser={0}, installed={1}, enabled={2}")
+ public static List<Object[]> params() {
+ return Arrays.asList(
+ new Object[] {true, true, false},
+ new Object[] {true, true, true},
+ new Object[] {false, false, false},
+ new Object[] {false, true, false},
+ new Object[] {false, true, true});
+ }
+
+ @ParameterizedRobolectricTestRunner.Parameter(0)
+ public boolean mIsPrimaryUser;
+
+ @ParameterizedRobolectricTestRunner.Parameter(1)
+ public boolean mInstalled;
+
+ @ParameterizedRobolectricTestRunner.Parameter(2)
+ public boolean mEnabled;
+
+ @Mock private Context mContext;
+ @Mock private Context mUserContext;
+ @Mock private SettingsMainSwitchPreference mPreference;
+ @Mock private PreferenceScreen mPreferenceScreen;
+ @Mock private PackageManager mPackageManager;
+ @Mock private PackageInfo mPackageInfo;
+
+ private String mTerminalPackageName = "com.android.virtualization.terminal";
+ private EnableLinuxTerminalPreferenceController mController;
+
+ @Before
+ public void setup() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ doReturn(mTerminalPackageName)
+ .when(mUserContext)
+ .getString(eq(TERMINAL_PACKAGE_NAME_RESID));
+
+ doReturn(mPackageManager).when(mUserContext).getPackageManager();
+ doReturn(mInstalled ? mPackageInfo : null)
+ .when(mPackageManager)
+ .getPackageInfo(eq(mTerminalPackageName), anyInt());
+ doReturn(
+ mEnabled
+ ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+ : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT)
+ .when(mPackageManager)
+ .getApplicationEnabledSetting(eq(mTerminalPackageName));
+
+ mController =
+ new EnableLinuxTerminalPreferenceController(mContext, mUserContext, mIsPrimaryUser);
+
+ doReturn(mPreference)
+ .when(mPreferenceScreen)
+ .findPreference(eq(mController.getPreferenceKey()));
+ mController.displayPreference(mPreferenceScreen);
+ mController.updateState(mPreference);
+ }
+
+ @Test
+ public void isAvailable_returnTrue() {
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void onCheckedChanged_whenChecked_turnOnTerminal() {
+ assumeTrue(mInstalled);
+
+ mController.onCheckedChanged(/* buttonView= */ null, /* isChecked= */ true);
+
+ verify(mPackageManager)
+ .setApplicationEnabledSetting(
+ mTerminalPackageName,
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ /* flags= */ 0);
+ }
+
+ @Test
+ public void onCheckedChanged_whenUnchecked_turnOffTerminal() {
+ assumeTrue(mInstalled);
+
+ mController.onCheckedChanged(/* buttonView= */ null, /* isChecked= */ false);
+
+ verify(mPackageManager)
+ .setApplicationEnabledSetting(
+ mTerminalPackageName,
+ PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
+ /* flags= */ 0);
+
+ verify(mPackageManager).clearApplicationUserData(mTerminalPackageName, null);
+ }
+
+ @Test
+ public void updateState_enabled() {
+ verify(mPreference).setEnabled(/* enabled= */ true);
+ }
+
+ @Test
+ public void updateState_whenEnabled_checked() {
+ assumeTrue(mEnabled);
+
+ verify(mPreference).setChecked(/* checked= */ true);
+ }
+
+ @Test
+ public void updateState_whenDisabled_unchecked() {
+ assumeFalse(mEnabled);
+
+ verify(mPreference).setChecked(/* checked= */ false);
+ }
+
+ @Test
+ public void updateState_withProfileWhenAllowed_enabledByAdmin() {
+ assumeFalse(mIsPrimaryUser);
+ assumeTrue(mInstalled);
+
+ verify(mPreference).setDisabledByAdmin(eq(null));
+ }
+
+ @Test
+ public void updateState_withProfileWhenNotAllowed_disabledByAdmin() {
+ assumeFalse(mIsPrimaryUser);
+ assumeFalse(mInstalled);
+
+ verify(mPreference).setDisabledByAdmin(any(EnforcedAdmin.class));
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java
new file mode 100644
index 0000000..17c3435
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2024 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.settings.development.linuxterminal;
+
+import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.TERMINAL_PACKAGE_NAME_RESID;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.eq;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests {@link LinuxTerminalPreferenceController} */
+@RunWith(RobolectricTestRunner.class)
+public class LinuxTerminalPreferenceControllerTest {
+
+ @Mock private Context mContext;
+ @Mock private PackageManager mPackageManager;
+ @Mock private PackageInfo mPackageInfo;
+
+ private String mTerminalPackageName = "com.android.virtualization.terminal";
+ private LinuxTerminalPreferenceController mController;
+
+ @Before
+ public void setup() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ doReturn(mTerminalPackageName).when(mContext).getString(TERMINAL_PACKAGE_NAME_RESID);
+
+ doReturn(mPackageManager).when(mContext).getPackageManager();
+ doReturn(mPackageInfo)
+ .when(mPackageManager)
+ .getPackageInfo(eq(mTerminalPackageName), anyInt());
+ }
+
+ @Test
+ public void isAvailable_whenPackageExists_returnsTrue() throws NameNotFoundException {
+ mController = new LinuxTerminalPreferenceController(mContext);
+
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void isAvailable_whenPackageNameIsNull_returnsFalse() {
+ doReturn(null).when(mContext).getString(TERMINAL_PACKAGE_NAME_RESID);
+
+ mController = new LinuxTerminalPreferenceController(mContext);
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_whenAppDoesNotExist_returnsFalse() throws Exception {
+ doThrow(new NameNotFoundException())
+ .when(mPackageManager)
+ .getPackageInfo(eq(mTerminalPackageName), anyInt());
+
+ mController = new LinuxTerminalPreferenceController(mContext);
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreenTest.kt b/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreenTest.kt
new file mode 100644
index 0000000..14479d7
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreenTest.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2024 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.settings.deviceinfo.aboutphone
+
+import android.content.Context
+import android.os.Build
+import android.provider.Settings.Global
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.robolectric.RuntimeEnvironment
+
+class MyDeviceInfoScreenTest : CatalystScreenTestCase() {
+ private lateinit var context: Context
+
+ override val preferenceScreenCreator = MyDeviceInfoScreen()
+ override val flagName: String
+ get() = Flags.FLAG_CATALYST_MY_DEVICE_INFO_PREF_SCREEN
+
+ override fun migration() {}
+
+ @Before
+ fun setup() {
+ context = RuntimeEnvironment.getApplication()
+ }
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(MyDeviceInfoScreen.KEY)
+ }
+
+ @Test
+ fun getSummary_deviceNameNotSet_shouldReturnDeviceModel() {
+ assertThat(preferenceScreenCreator.getSummary(context)?.toString()).isEqualTo(Build.MODEL)
+ }
+
+ @Test
+ fun getSummary_deviceNameSet_shouldReturnDeviceName() {
+ Global.putString(context.contentResolver, Global.DEVICE_NAME, "Test")
+ assertThat(preferenceScreenCreator.getSummary(context)?.toString()).isEqualTo("Test")
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
index 0122044..902de78 100644
--- a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
@@ -43,6 +43,7 @@
/**
* Tests for {@link AutoBrightnessPreferenceController}.
*/
+// LINT.IfChange
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {SettingsShadowResources.class})
public class AutoBrightnessPreferenceControllerTest {
@@ -139,3 +140,4 @@
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
}
+// LINT.ThenChange(AutoBrightnessScreenTest.kt)
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt b/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt
new file mode 100644
index 0000000..ab2d9bd
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.ContextWrapper
+import android.content.res.Resources
+import android.provider.Settings
+import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
+import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
+import android.view.LayoutInflater
+import androidx.preference.PreferenceViewHolder
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.PrimarySwitchPreference
+import com.android.settingslib.preference.createAndBindWidget
+import com.android.settingslib.widget.SettingsThemeHelper.isExpressiveTheme
+import com.android.settingslib.widget.theme.R
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+
+// LINT.IfChange
+@RunWith(AndroidJUnit4::class)
+class AutoBrightnessScreenTest {
+
+ private val preferenceScreenCreator = AutoBrightnessScreen()
+
+ private var mockResources: Resources? = null
+
+ private val context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getResources(): Resources = mockResources ?: super.getResources()
+ }
+
+ @Test
+ fun switchClick_defaultScreenBrightnessModeTurnOffAuto_returnTrue() {
+ setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_MANUAL)
+ val preference = getPrimarySwitchPreference()
+
+ assertThat(preference.switch.isChecked).isFalse()
+
+ preference.switch.performClick()
+
+ assertThat(preference.isChecked).isTrue()
+ }
+
+ @Test
+ fun switchClick_defaultScreenBrightnessModeTurnOnAuto_returnFalse() {
+ setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
+ val preference = getPrimarySwitchPreference()
+
+ assertThat(preference.switch.isChecked).isTrue()
+
+ preference.switch.performClick()
+
+ assertThat(preference.isChecked).isFalse()
+ }
+
+ @Test
+ fun setChecked_updatesCorrectly() {
+ val preference = getPrimarySwitchPreference()
+
+ preference.isChecked = true
+
+ assertThat(preference.switch.isChecked).isTrue()
+
+ preference.isChecked = false
+
+ assertThat(preference.switch.isChecked).isFalse()
+ }
+
+ @Test
+ fun isChecked_defaultScreenBrightnessModeTurnOffAuto_returnFalse() {
+ setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_MANUAL)
+
+ val preference = getPrimarySwitchPreference()
+
+ assertThat(preference.isChecked).isFalse()
+ }
+
+ @Test
+ fun isChecked_defaultScreenBrightnessModeTurnOffAuto_returnTrue() {
+ setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
+
+ val preference = getPrimarySwitchPreference()
+
+ assertThat(preference.isChecked).isTrue()
+ }
+
+ @Test
+ fun isAvailable_configTrueSet_shouldReturnTrue() {
+ mockResources = mock { on { getBoolean(any()) } doReturn true }
+
+ assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_configFalseSet_shouldReturnFalse() {
+ mockResources = mock { on { getBoolean(any()) } doReturn false }
+
+ assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
+ }
+
+ private fun getPrimarySwitchPreference() =
+ preferenceScreenCreator.createAndBindWidget<PrimarySwitchPreference>(context).also {
+ val holder =
+ PreferenceViewHolder.createInstanceForTests(
+ LayoutInflater.from(context).inflate(getResId(), /* root= */ null)
+ )
+ .apply { findViewById(androidx.preference.R.id.switchWidget) }
+ it.onBindViewHolder(holder)
+ }
+
+ private fun setScreenBrightnessMode(value: Int) =
+ Settings.System.putInt(context.contentResolver, AutoBrightnessScreen.KEY, value)
+
+ private fun getResId() =
+ when {
+ isExpressiveTheme(context) -> R.layout.settingslib_expressive_preference_switch
+ else -> androidx.preference.R.layout.preference_widget_switch_compat
+ }
+}
+// LINT.ThenChange(AutoBrightnessPreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java
index c84127b..676ae2b 100644
--- a/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java
@@ -37,9 +37,10 @@
@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowUtils.class)
+// LINT.IfChange
public class BatteryPercentagePreferenceControllerTest {
- private static final String PREF_KEY = "battery_percentage";
+ private static final String PREF_KEY = "status_bar_show_battery_percent";
private Context mContext;
private BatteryPercentagePreferenceController mController;
@@ -80,3 +81,4 @@
assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
}
+// LINT.ThenChange(BatteryPercentageSwitchPreferenceTest.kt)
diff --git a/tests/robotests/src/com/android/settings/display/BatteryPercentageSwitchPreferenceTest.kt b/tests/robotests/src/com/android/settings/display/BatteryPercentageSwitchPreferenceTest.kt
new file mode 100644
index 0000000..f96b30f
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/BatteryPercentageSwitchPreferenceTest.kt
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2024 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.settings.display
+
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.res.Resources
+import android.provider.Settings
+import androidx.preference.SwitchPreferenceCompat
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.testutils.shadow.ShadowUtils
+import com.android.settingslib.preference.createAndBindWidget
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+import org.robolectric.annotation.Config
+
+@RunWith(AndroidJUnit4::class)
+@Config(shadows = [ShadowUtils::class])
+// LINT.IfChange
+class BatteryPercentageSwitchPreferenceTest {
+ private val mockResources = mock<Resources>()
+
+ private val appContext: Context = ApplicationProvider.getApplicationContext()
+
+ private val context =
+ object : ContextWrapper(appContext) {
+ override fun getResources(): Resources = mockResources
+ }
+
+ private val batteryPercentageSwitchPreference = BatteryPercentageSwitchPreference()
+
+ @After
+ fun tearDown() {
+ ShadowUtils.reset()
+ }
+
+ @Test
+ fun isAvailable_noBatteryPresent_shouldReturnFalse() {
+ ShadowUtils.setIsBatteryPresent(false)
+
+ assertThat(batteryPercentageSwitchPreference.isAvailable(context)).isFalse()
+ }
+
+ @Test
+ fun isAvailable_batterySettingsAvailable_shouldReturnTrue() {
+ ShadowUtils.setIsBatteryPresent(true)
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+
+ assertThat(batteryPercentageSwitchPreference.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_batterySettingsUnavailable_shouldReturnFalse() {
+ ShadowUtils.setIsBatteryPresent(true)
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn false }
+
+ assertThat(batteryPercentageSwitchPreference.isAvailable(context)).isFalse()
+ }
+
+ @Test
+ fun batteryPercentageEnabled_shouldSwitchPreferenceChecked() {
+ showBatteryPercentage(true)
+
+ val switchPreference = getSwitchPreferenceCompat()
+
+ assertThat(switchPreference.isChecked).isTrue()
+ }
+
+ @Test
+ fun batteryPercentageDisabled_shouldSwitchPreferenceUnChecked() {
+ showBatteryPercentage(false)
+
+ val switchPreference = getSwitchPreferenceCompat()
+
+ assertThat(switchPreference.isChecked).isFalse()
+ }
+
+ @Test
+ fun click_defaultBatteryPercentageDisabled_shouldChangeToEnabled() {
+ showBatteryPercentage(false)
+
+ val switchPreference = getSwitchPreferenceCompat().apply { performClick() }
+
+ assertThat(switchPreference.isChecked).isTrue()
+ }
+
+ @Test
+ fun click_defaultBatteryPercentageEnabled_shouldChangeToDisabled() {
+ showBatteryPercentage(true)
+
+ val switchPreference = getSwitchPreferenceCompat().apply { performClick() }
+
+ assertThat(switchPreference.isChecked).isFalse()
+ }
+
+ private fun getSwitchPreferenceCompat(): SwitchPreferenceCompat =
+ batteryPercentageSwitchPreference.createAndBindWidget(context)
+
+ private fun showBatteryPercentage(on: Boolean) =
+ batteryPercentageSwitchPreference
+ .storage(context)
+ .setValue(
+ Settings.System.SHOW_BATTERY_PERCENT,
+ Boolean::class.javaObjectType,
+ on,
+ )
+}
+// LINT.ThenChange(BatteryPercentagePreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 1bc00a1..f3848b3 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -17,10 +17,10 @@
package com.android.settings.fuelgauge;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
-import static com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.nullable;
@@ -49,13 +49,13 @@
import com.android.settings.R;
import com.android.settings.SettingsActivity;
+import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry;
import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.widget.EntityHeaderController;
-import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
@@ -87,12 +87,12 @@
})
public class AdvancedPowerUsageDetailTest {
- @Rule
- public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String APP_LABEL = "app label";
private static final String SUMMARY = "summary";
- private static final String[] PACKAGE_NAME = {"com.android.app"};
+ private static final String PACKAGE_NAME = "com.android.app";
+ private static final String INITIATING_PACKAGE_NAME = "com.android.vending";
private static final String USAGE_PERCENT = "16%";
private static final int ICON_ID = 123;
private static final int UID = 1;
@@ -100,39 +100,43 @@
private static final long FOREGROUND_SERVICE_TIME_MS = 123;
private static final long BACKGROUND_TIME_MS = 100;
private static final long SCREEN_ON_TIME_MS = 321;
- private static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private FragmentActivity mActivity;
@Mock private EntityHeaderController mEntityHeaderController;
- @Mock private LayoutPreference mHeaderPreference;
@Mock private ApplicationsState mState;
@Mock private ApplicationsState.AppEntry mAppEntry;
@Mock private BatteryEntry mBatteryEntry;
@Mock private PackageManager mPackageManager;
@Mock private InstallSourceInfo mInstallSourceInfo;
+ @Mock private LayoutPreference mLayoutPreference;
@Mock private AppOpsManager mAppOpsManager;
@Mock private LoaderManager mLoaderManager;
- @Mock private BatteryOptimizeUtils mBatteryOptimizeUtils;
+ private int mTestMode;
private Context mContext;
- private PrimarySwitchPreference mAllowBackgroundUsagePreference;
private AdvancedPowerUsageDetail mFragment;
private SettingsActivity mTestActivity;
private FakeFeatureFactory mFeatureFactory;
private MetricsFeatureProvider mMetricsFeatureProvider;
private BatteryDiffEntry mBatteryDiffEntry;
private Bundle mBundle;
+ private BatteryOptimizeUtils mBatteryOptimizeUtils;
@Before
- public void setUp() {
+ public void setUp() throws Exception {
mContext = spy(ApplicationProvider.getApplicationContext());
- when(mContext.getPackageName()).thenReturn("foo");
+ when(mContext.getPackageName()).thenReturn(PACKAGE_NAME);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);
mFeatureFactory = FakeFeatureFactory.setupForTest();
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
+ prepareTestBatteryOptimizationUtils();
mFragment = spy(new AdvancedPowerUsageDetail());
+ mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
+ doReturn(mLayoutPreference).when(mFragment).findPreference(any());
mBundle = spy(new Bundle());
doReturn(mContext).when(mFragment).getContext();
doReturn(mActivity).when(mFragment).getActivity();
@@ -195,7 +199,6 @@
when(mBatteryDiffEntry.getAppLabel()).thenReturn(APP_LABEL);
when(mBatteryDiffEntry.getAppIconId()).thenReturn(ICON_ID);
- mFragment.mHeaderPreference = mHeaderPreference;
mFragment.mState = mState;
mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
mFragment.mLogStringBuilder = new StringBuilder();
@@ -219,10 +222,6 @@
.startActivityAsUser(captor.capture(), nullable(UserHandle.class));
doAnswer(callable).when(mActivity).startActivity(captor.capture());
doAnswer(callable).when(mContext).startActivity(captor.capture());
-
- mAllowBackgroundUsagePreference = new PrimarySwitchPreference(mContext);
- mAllowBackgroundUsagePreference.setKey(KEY_ALLOW_BACKGROUND_USAGE);
- mFragment.mAllowBackgroundUsagePreference = mAllowBackgroundUsagePreference;
}
@After
@@ -320,17 +319,15 @@
.isEqualTo(SCREEN_ON_TIME_MS);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
.isEqualTo(USAGE_PERCENT);
- assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME))
- .isEqualTo(null);
+ assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME)).isNull();
}
-
@Test
public void startBatteryDetailPage_noBatteryUsage_hasBasicData() {
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
AdvancedPowerUsageDetail.startBatteryDetailPage(
- mActivity, mFragment, PACKAGE_NAME[0], UserHandle.OWNER);
+ mActivity, mFragment, PACKAGE_NAME, UserHandle.OWNER);
verify(mActivity).startActivity(captor.capture());
@@ -338,7 +335,7 @@
captor.getValue()
.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME))
- .isEqualTo(PACKAGE_NAME[0]);
+ .isEqualTo(PACKAGE_NAME);
assertThat(
captor.getValue()
@@ -351,62 +348,21 @@
public void startBatteryDetailPage_batteryEntryNotExisted_extractUidFromPackageName()
throws PackageManager.NameNotFoundException {
mBundle.clear();
- doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */);
+ doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME, 0 /* no flag */);
AdvancedPowerUsageDetail.startBatteryDetailPage(
- mActivity, mFragment, PACKAGE_NAME[0], UserHandle.OWNER);
+ mActivity, mFragment, PACKAGE_NAME, UserHandle.OWNER);
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
}
@Test
- public void initFooter_isValidPackageName_hasCorrectString() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
+ public void onPause_optimizationModeIsChanged_logPreference() throws Exception {
+ mFragment.mOptimizationMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+ when(mBatteryOptimizeUtils.getPackageName()).thenReturn(PACKAGE_NAME);
+ when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn(INITIATING_PACKAGE_NAME);
- mFragment.initFooter();
-
- assertThat(mAllowBackgroundUsagePreference.getSummary().toString())
- .isEqualTo("This app requires optimized battery usage.");
- }
-
- @Test
- public void initFooter_isSystemOrDefaultApp_hasCorrectString() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
-
- mFragment.initFooter();
-
- assertThat(mAllowBackgroundUsagePreference.getSummary().toString())
- .isEqualTo("This app requires unrestricted battery usage.");
- }
-
- @Test
- public void initFooter_hasCorrectString() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
-
- mFragment.initFooter();
-
- assertThat(mAllowBackgroundUsagePreference.getSummary().toString())
- .isEqualTo("Enable for real-time updates, disable to save battery");
- }
-
- @Test
- public void onPause_optimizationModeChanged_logPreference()
- throws PackageManager.NameNotFoundException, InterruptedException {
- final String packageName = "testPackageName";
- final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
- final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
- mFragment.mOptimizationMode = restrictedMode;
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(restrictedMode);
- when(mBatteryOptimizeUtils.getPackageName()).thenReturn(packageName);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
- when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);
- when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn("com.android.vending");
-
- mFragment.onPreferenceChange(mAllowBackgroundUsagePreference, true);
- verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(optimizedMode);
+ mBatteryOptimizeUtils.setAppUsageState(BatteryOptimizeUtils.MODE_OPTIMIZED, Action.APPLY);
mFragment.onPause();
TimeUnit.SECONDS.sleep(1);
@@ -415,27 +371,18 @@
SettingsEnums.LEAVE_APP_BATTERY_USAGE,
SettingsEnums.ACTION_APP_BATTERY_USAGE_ALLOW_BACKGROUND,
SettingsEnums.FUELGAUGE_POWER_USAGE_DETAIL,
- packageName,
+ PACKAGE_NAME,
/* consumed battery */ 0);
}
@Test
- public void onPause_optimizationModeIsNotChanged_notInvokeLogging()
- throws PackageManager.NameNotFoundException, InterruptedException {
- final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
- final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
- mFragment.mOptimizationMode = restrictedMode;
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(restrictedMode);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
- when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);
- when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn("com.android.vending");
+ public void onPause_optimizationModeIsNotChanged_notInvokeLogging() throws Exception {
+ mFragment.mOptimizationMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+ when(mBatteryOptimizeUtils.getPackageName()).thenReturn(PACKAGE_NAME);
+ when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn(INITIATING_PACKAGE_NAME);
- mFragment.onPreferenceChange(mAllowBackgroundUsagePreference, true);
- verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(optimizedMode);
- mFragment.onPreferenceChange(mAllowBackgroundUsagePreference, false);
- verify(mBatteryOptimizeUtils).setAppUsageState(restrictedMode, Action.APPLY);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(restrictedMode);
+ mBatteryOptimizeUtils.setAppUsageState(BatteryOptimizeUtils.MODE_OPTIMIZED, Action.APPLY);
+ mBatteryOptimizeUtils.setAppUsageState(BatteryOptimizeUtils.MODE_RESTRICTED, Action.APPLY);
mFragment.onPause();
TimeUnit.SECONDS.sleep(1);
@@ -446,4 +393,16 @@
public void shouldSkipForInitialSUW_returnTrue() {
assertThat(mFragment.shouldSkipForInitialSUW()).isTrue();
}
+
+ private void prepareTestBatteryOptimizationUtils() {
+ mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(mContext, UID, PACKAGE_NAME));
+ Answer<Void> setTestMode =
+ invocation -> {
+ mTestMode = invocation.getArgument(0);
+ return null;
+ };
+ doAnswer(setTestMode).when(mBatteryOptimizeUtils).setAppUsageState(anyInt(), any());
+ Answer<Integer> getTestMode = invocation -> mTestMode;
+ doAnswer(getTestMode).when(mBatteryOptimizeUtils).getAppOptimizationMode();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java
deleted file mode 100644
index 261a315..0000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2023 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.settings.fuelgauge;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-
-import com.android.settingslib.widget.MainSwitchPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class AllowBackgroundPreferenceControllerTest {
- private static final int UID = 12345;
- private static final String PACKAGE_NAME = "com.android.app";
-
- private AllowBackgroundPreferenceController mController;
- private MainSwitchPreference mMainSwitchPreference;
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
-
- @Mock private PackageManager mMockPackageManager;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- Context context = spy(RuntimeEnvironment.application);
- BatteryUtils.getInstance(context).reset();
- doReturn(UID)
- .when(mMockPackageManager)
- .getPackageUid(PACKAGE_NAME, PackageManager.GET_META_DATA);
-
- mController = new AllowBackgroundPreferenceController(context, UID, PACKAGE_NAME);
- mMainSwitchPreference = new MainSwitchPreference(RuntimeEnvironment.application);
- mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(context, UID, PACKAGE_NAME));
- mController.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
- }
-
- @Test
- public void testUpdateState_isValidPackage_prefEnabled() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
-
- mController.updateState(mMainSwitchPreference);
-
- assertThat(mBatteryOptimizeUtils.isOptimizeModeMutable()).isTrue();
- assertThat(mMainSwitchPreference.isEnabled()).isTrue();
- }
-
- @Test
- public void testUpdateState_invalidPackage_prefDisabled() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
-
- mController.updateState(mMainSwitchPreference);
-
- assertThat(mBatteryOptimizeUtils.isOptimizeModeMutable()).isFalse();
- assertThat(mMainSwitchPreference.isEnabled()).isFalse();
- }
-
- @Test
- public void testUpdateState_isSystemOrDefaultAppAndRestrictedStates_prefChecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_RESTRICTED);
-
- mController.updateState(mMainSwitchPreference);
-
- assertThat(mMainSwitchPreference.isEnabled()).isFalse();
- assertThat(mMainSwitchPreference.isChecked()).isFalse();
- }
-
- @Test
- public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
-
- mController.updateState(mMainSwitchPreference);
-
- assertThat(mMainSwitchPreference.isEnabled()).isFalse();
- assertThat(mMainSwitchPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testUpdateState_isRestrictedStates_prefChecked() {
- when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_RESTRICTED);
-
- mController.updateState(mMainSwitchPreference);
-
- assertThat(mMainSwitchPreference.isEnabled()).isTrue();
- assertThat(mMainSwitchPreference.isChecked()).isFalse();
- }
-
- @Test
- public void testUpdateState_prefUnchecked() {
- when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
-
- mController.updateState(mMainSwitchPreference);
-
- assertThat(mMainSwitchPreference.isEnabled()).isTrue();
- assertThat(mMainSwitchPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_samePrefKey_verifyAction() {
- mMainSwitchPreference.setKey(
- AllowBackgroundPreferenceController.KEY_ALLOW_BACKGROUND_USAGE);
- mController.handlePreferenceTreeClick(mMainSwitchPreference);
-
- assertThat(mController.handlePreferenceTreeClick(mMainSwitchPreference)).isTrue();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_incorrectPrefKey_noAction() {
- assertThat(mController.handlePreferenceTreeClick(mMainSwitchPreference)).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BackgroundUsageAllowabilityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BackgroundUsageAllowabilityPreferenceControllerTest.java
new file mode 100644
index 0000000..190446e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BackgroundUsageAllowabilityPreferenceControllerTest.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2024 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.settings.fuelgauge;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
+import com.android.settingslib.PrimarySwitchPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.stubbing.Answer;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class BackgroundUsageAllowabilityPreferenceControllerTest {
+ private static final int UID = 12345;
+ private static final String PACKAGE_NAME = "com.android.app";
+
+ private int mTestMode;
+ private Context mContext;
+ private BackgroundUsageAllowabilityPreferenceController mBackgroundUsageController;
+ private BatteryOptimizeUtils mBatteryOptimizeUtils;
+
+ @Mock DashboardFragment mDashboardFragment;
+ @Mock PrimarySwitchPreference mBackgroundUsageAllowabilityPreference;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ prepareTestBatteryOptimizationUtils();
+ mBackgroundUsageController =
+ spy(
+ new BackgroundUsageAllowabilityPreferenceController(
+ mContext,
+ mDashboardFragment,
+ /* preferenceKey= */ "test",
+ mBatteryOptimizeUtils));
+ mBackgroundUsageController.mBackgroundUsageAllowabilityPreference =
+ mBackgroundUsageAllowabilityPreference;
+ }
+
+ @Test
+ public void initPreferences_immutableOptimized_setExpectedContent() {
+ doReturn(false).when(mBatteryOptimizeUtils).isOptimizeModeMutable();
+ doReturn(true).when(mBatteryOptimizeUtils).isDisabledForOptimizeModeOnly();
+
+ mBackgroundUsageController.initPreferences();
+
+ verify(mBackgroundUsageAllowabilityPreference).setEnabled(false);
+ verify(mBackgroundUsageAllowabilityPreference).setSwitchEnabled(false);
+ verify(mBackgroundUsageAllowabilityPreference)
+ .setSummary(
+ mContext.getString(
+ R.string.manager_battery_usage_footer_limited,
+ mContext.getString(R.string.manager_battery_usage_optimized_only)));
+ verify(mBackgroundUsageAllowabilityPreference, never())
+ .setOnPreferenceChangeListener(any());
+ verify(mBackgroundUsageAllowabilityPreference, never()).setOnPreferenceClickListener(any());
+ }
+
+ @Test
+ public void initPreferences_immutableUnrestricted_setExpectedContent() {
+ doReturn(false).when(mBatteryOptimizeUtils).isOptimizeModeMutable();
+ doReturn(false).when(mBatteryOptimizeUtils).isDisabledForOptimizeModeOnly();
+ doReturn(true).when(mBatteryOptimizeUtils).isSystemOrDefaultApp();
+
+ mBackgroundUsageController.initPreferences();
+
+ verify(mBackgroundUsageAllowabilityPreference).setEnabled(false);
+ verify(mBackgroundUsageAllowabilityPreference).setSwitchEnabled(false);
+ verify(mBackgroundUsageAllowabilityPreference)
+ .setSummary(
+ mContext.getString(
+ R.string.manager_battery_usage_footer_limited,
+ mContext.getString(
+ R.string.manager_battery_usage_unrestricted_only)));
+ verify(mBackgroundUsageAllowabilityPreference, never())
+ .setOnPreferenceChangeListener(any());
+ verify(mBackgroundUsageAllowabilityPreference, never()).setOnPreferenceClickListener(any());
+ }
+
+ @Test
+ public void initPreferences_mutableMode_setExpectedContent() {
+ doReturn(true).when(mBatteryOptimizeUtils).isOptimizeModeMutable();
+ doReturn(false).when(mBatteryOptimizeUtils).isDisabledForOptimizeModeOnly();
+ doReturn(false).when(mBatteryOptimizeUtils).isSystemOrDefaultApp();
+
+ mBackgroundUsageController.initPreferences();
+
+ verify(mBackgroundUsageAllowabilityPreference).setEnabled(true);
+ verify(mBackgroundUsageAllowabilityPreference).setSwitchEnabled(true);
+ verify(mBackgroundUsageAllowabilityPreference)
+ .setSummary(
+ mContext.getString(
+ R.string.manager_battery_usage_allow_background_usage_summary));
+ verify(mBackgroundUsageAllowabilityPreference).setOnPreferenceChangeListener(any());
+ verify(mBackgroundUsageAllowabilityPreference).setOnPreferenceClickListener(any());
+ }
+
+ @Test
+ public void updatePreferences_setIntoUnrestrictedMode_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_UNRESTRICTED;
+
+ mBackgroundUsageController.updatePreferences(mTestMode);
+
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void updatePreferences_setIntoOptimizedMode_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
+
+ mBackgroundUsageController.updatePreferences(mTestMode);
+
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void updatePreferences_setIntoRestrictedMode_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+
+ mBackgroundUsageController.updatePreferences(mTestMode);
+
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void handleBatteryOptimizeModeUpdated_modeChange_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+
+ mBackgroundUsageController.handleBatteryOptimizeModeUpdated(
+ BatteryOptimizeUtils.MODE_OPTIMIZED);
+
+ verify(mBatteryOptimizeUtils)
+ .setAppUsageState(BatteryOptimizeUtils.MODE_OPTIMIZED, Action.APPLY);
+ assertThat(mTestMode).isEqualTo(BatteryOptimizeUtils.MODE_OPTIMIZED);
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void handleBatteryOptimizeModeUpdated_modeNotChange_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+
+ mBackgroundUsageController.handleBatteryOptimizeModeUpdated(
+ BatteryOptimizeUtils.MODE_RESTRICTED);
+
+ verify(mBatteryOptimizeUtils, never()).setAppUsageState(anyInt(), any());
+ assertThat(mTestMode).isEqualTo(BatteryOptimizeUtils.MODE_RESTRICTED);
+ verify(mBackgroundUsageController, never()).updatePreferences(mTestMode);
+ }
+
+ private void prepareTestBatteryOptimizationUtils() {
+ mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(mContext, UID, PACKAGE_NAME));
+ Answer<Void> setTestMode =
+ invocation -> {
+ mTestMode = invocation.getArgument(0);
+ return null;
+ };
+ doAnswer(setTestMode).when(mBatteryOptimizeUtils).setAppUsageState(anyInt(), any());
+ Answer<Integer> getTestMode = invocation -> mTestMode;
+ doAnswer(getTestMode).when(mBatteryOptimizeUtils).getAppOptimizationMode();
+ }
+
+ private void verifyPreferences(int mode) {
+ boolean isAllowBackground = mode != BatteryOptimizeUtils.MODE_RESTRICTED;
+ verify(mBackgroundUsageAllowabilityPreference).setChecked(isAllowBackground);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationModePreferenceControllerTest.java
new file mode 100644
index 0000000..2ddc7eb
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationModePreferenceControllerTest.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2024 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.settings.fuelgauge;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.stubbing.Answer;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class BatteryOptimizationModePreferenceControllerTest {
+ private static final int UID = 12345;
+ private static final String PACKAGE_NAME = "com.android.app";
+
+ private int mTestMode;
+ private Context mContext;
+ private BatteryOptimizationModePreferenceController mBackgroundUsageController;
+ private BatteryOptimizeUtils mBatteryOptimizeUtils;
+
+ @Mock MainSwitchPreference mBackgroundUsageAllowabilityPreference;
+ @Mock SelectorWithWidgetPreference mOptimizedPreference;
+ @Mock SelectorWithWidgetPreference mUnrestrictedPreference;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ prepareTestBatteryOptimizationUtils();
+ mBackgroundUsageController =
+ spy(
+ new BatteryOptimizationModePreferenceController(
+ mContext, "test", mBatteryOptimizeUtils));
+ mBackgroundUsageController.mBackgroundUsageAllowabilityPreference =
+ mBackgroundUsageAllowabilityPreference;
+ mBackgroundUsageController.mOptimizedPreference = mOptimizedPreference;
+ mBackgroundUsageController.mUnrestrictedPreference = mUnrestrictedPreference;
+ }
+
+ @Test
+ public void initPreferences_mutableMode_setEnabled() {
+ doReturn(true).when(mBatteryOptimizeUtils).isOptimizeModeMutable();
+
+ mBackgroundUsageController.initPreferences();
+
+ verify(mBackgroundUsageAllowabilityPreference).setEnabled(true);
+ verify(mOptimizedPreference).setEnabled(true);
+ verify(mUnrestrictedPreference).setEnabled(true);
+ verify(mBackgroundUsageAllowabilityPreference, never()).setOnPreferenceClickListener(any());
+ verify(mBackgroundUsageAllowabilityPreference).setOnPreferenceChangeListener(any());
+ verify(mOptimizedPreference).setOnPreferenceClickListener(any());
+ verify(mUnrestrictedPreference).setOnPreferenceClickListener(any());
+ }
+
+ @Test
+ public void initPreferences_immutableMode_setDisabledAndSkipSetListeners() {
+ doReturn(false).when(mBatteryOptimizeUtils).isOptimizeModeMutable();
+
+ mBackgroundUsageController.initPreferences();
+
+ verify(mBackgroundUsageAllowabilityPreference).setEnabled(false);
+ verify(mOptimizedPreference).setEnabled(false);
+ verify(mUnrestrictedPreference).setEnabled(false);
+ verify(mBackgroundUsageAllowabilityPreference, never()).setOnPreferenceClickListener(any());
+ verify(mBackgroundUsageAllowabilityPreference, never())
+ .setOnPreferenceChangeListener(any());
+ verify(mOptimizedPreference, never()).setOnPreferenceClickListener(any());
+ verify(mUnrestrictedPreference, never()).setOnPreferenceClickListener(any());
+ }
+
+ @Test
+ public void updatePreferences_setIntoUnrestrictedMode_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_UNRESTRICTED;
+
+ mBackgroundUsageController.updatePreferences(mTestMode);
+
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void updatePreferences_setIntoOptimizedMode_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
+
+ mBackgroundUsageController.updatePreferences(mTestMode);
+
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void updatePreferences_setIntoRestrictedMode_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+
+ mBackgroundUsageController.updatePreferences(mTestMode);
+
+ verifyPreferences(mTestMode);
+ }
+
+ @Test
+ public void handleBatteryOptimizeModeUpdated_modeChange_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+
+ mBackgroundUsageController.handleBatteryOptimizeModeUpdated(
+ BatteryOptimizeUtils.MODE_OPTIMIZED);
+
+ verify(mBatteryOptimizeUtils)
+ .setAppUsageState(
+ BatteryOptimizeUtils.MODE_OPTIMIZED,
+ BatteryOptimizeHistoricalLogEntry.Action.APPLY);
+ assertThat(mTestMode).isEqualTo(BatteryOptimizeUtils.MODE_OPTIMIZED);
+ verifyPreferences(mBatteryOptimizeUtils.getAppOptimizationMode());
+ }
+
+ @Test
+ public void handleBatteryOptimizeModeUpdated_modeNotChange_setExpectedPrefStatus() {
+ mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;
+
+ mBackgroundUsageController.handleBatteryOptimizeModeUpdated(
+ BatteryOptimizeUtils.MODE_RESTRICTED);
+
+ verify(mBatteryOptimizeUtils, never()).setAppUsageState(anyInt(), any());
+ assertThat(mTestMode).isEqualTo(BatteryOptimizeUtils.MODE_RESTRICTED);
+ verify(mBackgroundUsageController, never()).updatePreferences(anyInt());
+ }
+
+ private void prepareTestBatteryOptimizationUtils() {
+ mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(mContext, UID, PACKAGE_NAME));
+ Answer<Void> setTestMode =
+ invocation -> {
+ mTestMode = invocation.getArgument(0);
+ return null;
+ };
+ doAnswer(setTestMode).when(mBatteryOptimizeUtils).setAppUsageState(anyInt(), any());
+ Answer<Integer> getTestMode = invocation -> mTestMode;
+ doAnswer(getTestMode).when(mBatteryOptimizeUtils).getAppOptimizationMode();
+ }
+
+ private void verifyPreferences(int mode) {
+ boolean isAllowBackground = mode != BatteryOptimizeUtils.MODE_RESTRICTED;
+ verify(mBackgroundUsageAllowabilityPreference).setChecked(isAllowBackground);
+ verify(mOptimizedPreference).setEnabled(isAllowBackground);
+ verify(mUnrestrictedPreference).setEnabled(isAllowBackground);
+ verify(mOptimizedPreference).setChecked(mode == BatteryOptimizeUtils.MODE_OPTIMIZED);
+ verify(mUnrestrictedPreference).setChecked(mode == BatteryOptimizeUtils.MODE_UNRESTRICTED);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
deleted file mode 100644
index 6656471..0000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2021 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.settings.fuelgauge;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class OptimizedPreferenceControllerTest {
- private static final int UID = 12345;
- private static final String PACKAGE_NAME = "com.android.app";
-
- private OptimizedPreferenceController mController;
- private SelectorWithWidgetPreference mPreference;
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
-
- @Mock PackageManager mMockPackageManager;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- Context context = spy(RuntimeEnvironment.application);
- BatteryUtils.getInstance(context).reset();
- doReturn(UID)
- .when(mMockPackageManager)
- .getPackageUid(PACKAGE_NAME, PackageManager.GET_META_DATA);
-
- mController = new OptimizedPreferenceController(context, UID, PACKAGE_NAME);
- mPreference = new SelectorWithWidgetPreference(RuntimeEnvironment.application);
- mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(context, UID, PACKAGE_NAME));
- mController.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
- }
-
- @Test
- public void testUpdateState_invalidPackage_prefEnabled() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isEnabled()).isFalse();
- assertThat(mPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testUpdateState_isSystemOrDefaultAppAndOptimizeStates_prefChecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isChecked()).isFalse();
- assertThat(mPreference.isEnabled()).isFalse();
- }
-
- @Test
- public void testUpdateState_isOptimizedStates_prefChecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testUpdateState_prefUnchecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isChecked()).isFalse();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_samePrefKey_verifyAction() {
- mPreference.setKey(mController.KEY_OPTIMIZED_PREF);
- mController.handlePreferenceTreeClick(mPreference);
-
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_incorrectPrefKey_noAction() {
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java
index 9061117..9f98d78 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java
@@ -17,10 +17,10 @@
package com.android.settings.fuelgauge;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
-import static com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.nullable;
@@ -42,16 +42,17 @@
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
-import android.widget.CompoundButton;
import androidx.fragment.app.FragmentActivity;
import androidx.loader.app.LoaderManager;
import androidx.test.core.app.ApplicationProvider;
+import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
+import com.android.settings.testutils.shadow.ShadowHelpUtils;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
@@ -59,8 +60,6 @@
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.widget.MainSwitchPreference;
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.After;
import org.junit.Before;
@@ -83,36 +82,33 @@
@Config(
shadows = {
ShadowEntityHeaderController.class,
+ ShadowHelpUtils.class,
com.android.settings.testutils.shadow.ShadowFragment.class,
})
public class PowerBackgroundUsageDetailTest {
- @Rule
- public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String APP_LABEL = "app label";
private static final String SUMMARY = "summary";
private static final int ICON_ID = 123;
private static final int UID = 1;
- private static final String KEY_PREF_UNRESTRICTED = "unrestricted_preference";
- private static final String KEY_PREF_OPTIMIZED = "optimized_preference";
- private static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
+ private static final String PACKAGE_NAME = "com.android.app";
+ private static final String KEY_PREF_HEADER = "header_view";
+ private static final String KEY_FOOTER_PREFERENCE = "app_usage_footer_preference";
+ private static final String INITIATING_PACKAGE_NAME = "com.android.vending";
+ private int mTestMode;
private Context mContext;
private PowerBackgroundUsageDetail mFragment;
- private FooterPreference mFooterPreference;
- private MainSwitchPreference mMainSwitchPreference;
private MetricsFeatureProvider mMetricsFeatureProvider;
- private SelectorWithWidgetPreference mOptimizePreference;
- private SelectorWithWidgetPreference mUnrestrictedPreference;
private SettingsActivity mTestActivity;
+ private BatteryOptimizeUtils mBatteryOptimizeUtils;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private FragmentActivity mActivity;
@Mock private EntityHeaderController mEntityHeaderController;
- @Mock private BatteryOptimizeUtils mBatteryOptimizeUtils;
- @Mock private LayoutPreference mHeaderPreference;
@Mock private ApplicationsState mState;
@Mock private Bundle mBundle;
@Mock private LoaderManager mLoaderManager;
@@ -120,21 +116,26 @@
@Mock private BatteryEntry mBatteryEntry;
@Mock private PackageManager mPackageManager;
@Mock private AppOpsManager mAppOpsManager;
- @Mock private CompoundButton mMockSwitch;
@Mock private InstallSourceInfo mInstallSourceInfo;
+ @Mock private LayoutPreference mLayoutPreference;
+ @Mock private FooterPreference mFooterPreference;
@Before
public void setUp() throws Exception {
mContext = spy(ApplicationProvider.getApplicationContext());
- when(mContext.getPackageName()).thenReturn("foo");
+ when(mContext.getPackageName()).thenReturn(PACKAGE_NAME);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);
final FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
mMetricsFeatureProvider = fakeFeatureFactory.metricsFeatureProvider;
+ prepareTestBatteryOptimizationUtils();
mFragment = spy(new PowerBackgroundUsageDetail());
+ mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
mFragment.mLogStringBuilder = new StringBuilder();
+ doReturn(mLayoutPreference).when(mFragment).findPreference(KEY_PREF_HEADER);
+ doReturn(mFooterPreference).when(mFragment).findPreference(KEY_FOOTER_PREFERENCE);
doReturn(mContext).when(mFragment).getContext();
doReturn(mActivity).when(mFragment).getActivity();
doReturn(SUMMARY).when(mFragment).getString(anyInt());
@@ -169,9 +170,7 @@
when(mBatteryEntry.getLabel()).thenReturn(APP_LABEL);
mBatteryEntry.mIconId = ICON_ID;
- mFragment.mHeaderPreference = mHeaderPreference;
mFragment.mState = mState;
- mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
mAppEntry.info = mock(ApplicationInfo.class);
mTestActivity = spy(new SettingsActivity());
@@ -191,23 +190,12 @@
.when(mActivity)
.startActivityAsUser(captor.capture(), nullable(UserHandle.class));
doAnswer(callable).when(mActivity).startActivity(captor.capture());
-
- mFooterPreference = spy(new FooterPreference(mContext));
- mMainSwitchPreference = spy(new MainSwitchPreference(mContext));
- mMainSwitchPreference.setKey(KEY_ALLOW_BACKGROUND_USAGE);
- mOptimizePreference = spy(new SelectorWithWidgetPreference(mContext));
- mOptimizePreference.setKey(KEY_PREF_OPTIMIZED);
- mUnrestrictedPreference = spy(new SelectorWithWidgetPreference(mContext));
- mUnrestrictedPreference.setKey(KEY_PREF_UNRESTRICTED);
- mFragment.mFooterPreference = mFooterPreference;
- mFragment.mMainSwitchPreference = mMainSwitchPreference;
- mFragment.mOptimizePreference = mOptimizePreference;
- mFragment.mUnrestrictedPreference = mUnrestrictedPreference;
}
@After
public void reset() {
ShadowEntityHeaderController.reset();
+ ShadowHelpUtils.reset();
}
@Test
@@ -258,91 +246,64 @@
}
@Test
- public void initFooter_hasCorrectString() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
-
+ public void initFooter_setExpectedFooterContent() {
mFragment.initFooter();
- assertThat(mFooterPreference.getTitle().toString())
- .isEqualTo("Changing how an app uses your battery can affect its performance.");
+ verify(mFooterPreference)
+ .setTitle(mContext.getString(R.string.manager_battery_usage_footer));
+ verify(mFooterPreference).setLearnMoreAction(any());
+ verify(mFooterPreference)
+ .setLearnMoreText(mContext.getString(R.string.manager_battery_usage_link_a11y));
}
@Test
- public void onSwitchChanged_fromUnrestrictedModeSetDisabled_becomeRestrictedMode() {
- final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
- final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
- mFragment.mOptimizationMode = optimizedMode;
+ public void onPause_optimizationModeIsChanged_logPreference() throws Exception {
+ mFragment.mOptimizationMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
+ when(mBatteryOptimizeUtils.getPackageName()).thenReturn(PACKAGE_NAME);
+ when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn(INITIATING_PACKAGE_NAME);
- mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ false);
-
- verify(mOptimizePreference).setEnabled(false);
- verify(mUnrestrictedPreference).setEnabled(false);
- verify(mFragment).onRadioButtonClicked(null);
- verify(mMainSwitchPreference).setChecked(false);
- assertThat(mFragment.getSelectedPreference()).isEqualTo(restrictedMode);
- verify(mBatteryOptimizeUtils).setAppUsageState(restrictedMode, Action.APPLY);
- }
-
- @Test
- public void onSwitchChanged_fromRestrictedModeSetEnabled_becomeOptimizedMode() {
- final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
- final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
- mFragment.mOptimizationMode = restrictedMode;
-
- mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ true);
-
- verify(mOptimizePreference).setEnabled(true);
- verify(mUnrestrictedPreference).setEnabled(true);
- verify(mFragment).onRadioButtonClicked(mOptimizePreference);
- verify(mMainSwitchPreference).setChecked(true);
- verify(mOptimizePreference).setChecked(true);
- assertThat(mFragment.getSelectedPreference()).isEqualTo(optimizedMode);
- verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
- }
-
- @Test
- public void onPause_optimizationModeChanged_logPreference() throws Exception {
- final String packageName = "testPackageName";
- final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
- final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
- mFragment.mOptimizationMode = restrictedMode;
- when(mBatteryOptimizeUtils.getPackageName()).thenReturn(packageName);
- when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn("com.android.vending");
-
- mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ true);
- verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(optimizedMode);
+ mTestMode = BatteryOptimizeUtils.MODE_UNRESTRICTED;
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .isEqualTo(BatteryOptimizeUtils.MODE_UNRESTRICTED);
mFragment.onPause();
TimeUnit.SECONDS.sleep(1);
verify(mMetricsFeatureProvider)
.action(
SettingsEnums.LEAVE_POWER_USAGE_MANAGE_BACKGROUND,
- SettingsEnums.ACTION_APP_BATTERY_USAGE_OPTIMIZED,
+ SettingsEnums.ACTION_APP_BATTERY_USAGE_UNRESTRICTED,
SettingsEnums.FUELGAUGE_POWER_USAGE_MANAGE_BACKGROUND,
- packageName,
+ PACKAGE_NAME,
/* consumed battery */ 0);
}
@Test
public void onPause_optimizationModeIsNotChanged_notInvokeLogging() throws Exception {
- final String packageName = "testPackageName";
- final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
- final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
- mFragment.mOptimizationMode = restrictedMode;
- when(mBatteryOptimizeUtils.getPackageName()).thenReturn(packageName);
- when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn("com.android.vending");
+ mFragment.mOptimizationMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
+ when(mBatteryOptimizeUtils.getPackageName()).thenReturn(PACKAGE_NAME);
+ when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn(INITIATING_PACKAGE_NAME);
- mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ true);
- verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(optimizedMode);
- mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ false);
- verify(mBatteryOptimizeUtils).setAppUsageState(restrictedMode, Action.APPLY);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(restrictedMode);
+ mTestMode = BatteryOptimizeUtils.MODE_UNRESTRICTED;
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .isEqualTo(BatteryOptimizeUtils.MODE_UNRESTRICTED);
+ mTestMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .isEqualTo(BatteryOptimizeUtils.MODE_OPTIMIZED);
mFragment.onPause();
TimeUnit.SECONDS.sleep(1);
verifyNoInteractions(mMetricsFeatureProvider);
}
+
+ private void prepareTestBatteryOptimizationUtils() {
+ mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(mContext, UID, PACKAGE_NAME));
+ Answer<Void> setTestMode =
+ invocation -> {
+ mTestMode = invocation.getArgument(0);
+ return null;
+ };
+ doAnswer(setTestMode).when(mBatteryOptimizeUtils).setAppUsageState(anyInt(), any());
+ Answer<Integer> getTestMode = invocation -> mTestMode;
+ doAnswer(getTestMode).when(mBatteryOptimizeUtils).getAppOptimizationMode();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
deleted file mode 100644
index 0c6f7da..0000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2021 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.settings.fuelgauge;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class UnrestrictedPreferenceControllerTest {
- private static final int UID = 12345;
- private static final String PACKAGE_NAME = "com.android.app";
-
- private UnrestrictedPreferenceController mController;
- private SelectorWithWidgetPreference mPreference;
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
-
- @Mock PackageManager mMockPackageManager;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- Context context = spy(RuntimeEnvironment.application);
- BatteryUtils.getInstance(context).reset();
- doReturn(UID)
- .when(mMockPackageManager)
- .getPackageUid(PACKAGE_NAME, PackageManager.GET_META_DATA);
-
- mController = new UnrestrictedPreferenceController(context, UID, PACKAGE_NAME);
- mPreference = new SelectorWithWidgetPreference(RuntimeEnvironment.application);
- mBatteryOptimizeUtils = spy(new BatteryOptimizeUtils(context, UID, PACKAGE_NAME));
- mController.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
- }
-
- @Test
- public void testUpdateState_isValidPackage_prefEnabled() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
-
- mController.updateState(mPreference);
-
- assertThat(mBatteryOptimizeUtils.isOptimizeModeMutable()).isTrue();
- assertThat(mPreference.isEnabled()).isTrue();
- }
-
- @Test
- public void testUpdateState_invalidPackage_prefDisabled() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
-
- mController.updateState(mPreference);
-
- assertThat(mBatteryOptimizeUtils.isOptimizeModeMutable()).isFalse();
- assertThat(mPreference.isEnabled()).isFalse();
- }
-
- @Test
- public void testUpdateState_isSystemOrDefaultAppAndUnrestrictedStates_prefChecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_UNRESTRICTED);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
- when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isEnabled()).isFalse();
- assertThat(mPreference.isChecked()).isFalse();
- }
-
- @Test
- public void testUpdateState_isUnrestrictedStates_prefChecked() {
- when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_UNRESTRICTED);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isEnabled()).isTrue();
- assertThat(mPreference.isChecked()).isTrue();
- }
-
- @Test
- public void testUpdateState_prefUnchecked() {
- when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode())
- .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isEnabled()).isTrue();
- assertThat(mPreference.isChecked()).isFalse();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_samePrefKey_verifyAction() {
- mPreference.setKey(mController.KEY_UNRESTRICTED_PREF);
- mController.handlePreferenceTreeClick(mPreference);
-
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_incorrectPrefKey_noAction() {
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
index cdcb12f..8fe18eb 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
@@ -40,6 +40,7 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+// LINT.IfChange
@RunWith(RobolectricTestRunner.class)
public class BatterySaverButtonPreferenceControllerTest {
@@ -120,3 +121,4 @@
assertThat(mController.isPublicSlice()).isTrue();
}
}
+// LINT.ThenChange(BatterySaverPreferenceTest.kt)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverPreferenceTest.kt b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverPreferenceTest.kt
new file mode 100644
index 0000000..052ba75
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverPreferenceTest.kt
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2024 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.settings.fuelgauge.batterysaver
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.Intent
+import android.content.IntentFilter
+import android.os.BatteryManager.EXTRA_PLUGGED
+import android.os.PowerManager
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.preference.createAndBindWidget
+import com.android.settingslib.widget.MainSwitchPreference
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+import org.mockito.kotlin.verify
+
+// LINT.IfChange
+@RunWith(AndroidJUnit4::class)
+class BatterySaverPreferenceTest {
+ private val powerManager = mock<PowerManager>()
+
+ private val context: Context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getSystemService(name: String): Any? =
+ when {
+ name == getSystemServiceName(PowerManager::class.java) -> powerManager
+ else -> super.getSystemService(name)
+ }
+
+ override fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?) =
+ Intent().putExtra(EXTRA_PLUGGED, 0)
+ }
+
+ private val contextPlugIn: Context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?) =
+ Intent().putExtra(EXTRA_PLUGGED, 1)
+ }
+
+ private val batterySaverPreference = BatterySaverPreference()
+
+ @Test
+ fun lowPowerOn_preferenceIsChecked() {
+ powerManager.stub { on { isPowerSaveMode } doReturn true }
+
+ assertThat(getMainSwitchPreference().isChecked).isTrue()
+ }
+
+ @Test
+ fun lowPowerOff_preferenceIsUnChecked() {
+ powerManager.stub { on { isPowerSaveMode } doReturn false }
+
+ assertThat(getMainSwitchPreference().isChecked).isFalse()
+ }
+
+ @Test
+ fun storeSetOn_setPowerSaveMode() {
+ batterySaverPreference
+ .storage(context)
+ .setValue(batterySaverPreference.key, Boolean::class.javaObjectType, true)
+
+ verify(powerManager).setPowerSaveModeEnabled(true)
+ }
+
+ @Test
+ fun storeSetOff_unsetPowerSaveMode() {
+ batterySaverPreference
+ .storage(context)
+ .setValue(batterySaverPreference.key, Boolean::class.javaObjectType, false)
+
+ verify(powerManager).setPowerSaveModeEnabled(false)
+ }
+
+ @Test
+ fun isUnPlugIn_preferenceEnabled() {
+ assertThat(getMainSwitchPreference().isEnabled).isTrue()
+ }
+
+ @Test
+ fun isPlugIn_preferenceDisabled() {
+ assertThat(getMainSwitchPreference(contextPlugIn).isEnabled).isFalse()
+ }
+
+ private fun getMainSwitchPreference(ctx: Context = context) =
+ batterySaverPreference.createAndBindWidget<MainSwitchPreference>(ctx)
+}
+// LINT.ThenChange(BatterySaverButtonPreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreenTest.kt b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreenTest.kt
index a034e52..f706351 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreenTest.kt
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreenTest.kt
@@ -15,21 +15,37 @@
*/
package com.android.settings.fuelgauge.batterysaver
+import android.content.Intent
+import android.os.BatteryManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.flags.Flags
import com.android.settingslib.preference.CatalystScreenTestCase
import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class BatterySaverScreenTest : CatalystScreenTestCase() {
+ private val intent =
+ Intent(Intent.ACTION_BATTERY_CHANGED).putExtra(BatteryManager.EXTRA_PLUGGED, 0)
override val preferenceScreenCreator = BatterySaverScreen()
override val flagName: String
get() = Flags.FLAG_CATALYST_BATTERY_SAVER_SCREEN
+ @Before
+ fun setUp() {
+ appContext.sendStickyBroadcast(intent)
+ }
+
+ @After
+ fun tearDown() {
+ appContext.removeStickyBroadcast(intent)
+ }
+
@Test
fun key() {
assertThat(preferenceScreenCreator.key).isEqualTo(BatterySaverScreen.KEY)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
index 2f20b42..1fed13f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
@@ -110,7 +110,6 @@
mDataProcessManager =
new DataProcessManager(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* isFromPeriodJob= */ false,
/* rawStartTimestamp= */ 0L,
@@ -131,7 +130,6 @@
final DataProcessManager dataProcessManager =
new DataProcessManager(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* callbackFunction= */ null);
assertThat(dataProcessManager.getShowScreenOnTime()).isFalse();
@@ -257,7 +255,6 @@
final DataProcessManager dataProcessManager =
new DataProcessManager(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* isFromPeriodJob= */ false,
/* rawStartTimestamp= */ 2L,
@@ -349,7 +346,6 @@
assertThat(
DataProcessManager.getBatteryLevelData(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* isFromPeriodJob= */ false,
/* asyncResponseDelegate= */ null))
@@ -357,7 +353,6 @@
assertThat(
DataProcessManager.getBatteryLevelData(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* isFromPeriodJob= */ true,
/* asyncResponseDelegate= */ null))
@@ -379,7 +374,6 @@
final BatteryLevelData resultData =
DataProcessManager.getBatteryLevelData(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* isFromPeriodJob= */ false,
/* asyncResponseDelegate= */ null);
@@ -408,7 +402,6 @@
final BatteryLevelData resultData =
DataProcessManager.getBatteryLevelData(
mContext,
- /* handler= */ null,
mUserIdsSeries,
/* isFromPeriodJob= */ false,
/* asyncResponseDelegate= */ null);
diff --git a/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java b/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java
index 9633b15..a03ca61 100644
--- a/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java
@@ -16,6 +16,8 @@
package com.android.settings.gestures;
+import static com.android.settings.gestures.OneHandedSettings.ONE_HANDED_SHORTCUT_KEY;
+
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
@@ -23,14 +25,19 @@
import android.content.Context;
import android.os.SystemProperties;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.SearchIndexableResource;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
+import com.android.settingslib.search.SearchIndexableRaw;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@@ -43,12 +50,16 @@
@RunWith(RobolectricTestRunner.class)
public class OneHandedSettingsTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
private final Context mContext = ApplicationProvider.getApplicationContext();
private OneHandedSettings mSettings;
@Before
public void setUp() {
mSettings = spy(new OneHandedSettings());
+ SystemProperties.set(OneHandedSettingsUtils.SUPPORT_ONE_HANDED_MODE, "true");
}
@Test
@@ -102,4 +113,35 @@
final boolean isEnabled = (Boolean) obj;
assertThat(isEnabled).isFalse();
}
+
+ @Test
+ @DisableFlags(com.android.settings.accessibility.Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getRawDataToIndex_flagDisabled_isEmpty() {
+ final List<SearchIndexableRaw> rawData = OneHandedSettings
+ .SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true);
+ final List<String> actualSearchKeys = rawData.stream().map(raw -> raw.key).toList();
+
+ assertThat(actualSearchKeys).isEmpty();
+ }
+
+ @Test
+ @EnableFlags(com.android.settings.accessibility.Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
+ public void getRawDataToIndex_returnsOnlyShortcutKey() {
+ final List<SearchIndexableRaw> rawData = OneHandedSettings
+ .SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true);
+ final List<String> actualSearchKeys = rawData.stream().map(raw -> raw.key).toList();
+
+ assertThat(actualSearchKeys).containsExactly(ONE_HANDED_SHORTCUT_KEY);
+ }
+
+ @Test
+ public void getNonIndexableKeys_containsNonSearchableElements() {
+ final List<String> niks = OneHandedSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getNonIndexableKeys(mContext);
+
+ assertThat(niks).containsExactly(
+ "gesture_one_handed_mode_intro",
+ "one_handed_header",
+ "one_handed_mode_footer");
+ }
}
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java
index bb97d71..5308d1f 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java
@@ -25,6 +25,7 @@
import android.content.Context;
import android.view.InputDevice;
+import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.core.BasePreferenceController;
@@ -53,15 +54,32 @@
private Context mContext;
private TrackpadSettingsController mController;
+ private Preference mPreference;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
mController = new TrackpadSettingsController(mContext, PREFERENCE_KEY);
+ mPreference = new Preference(mContext);
ShadowInputDevice.reset();
}
@Test
+ public void updateState_setTitleBasedOnDeviceSource() {
+ int deviceId = 1;
+ ShadowInputDevice.sDeviceIds = new int[]{deviceId};
+ InputDevice device = ShadowInputDevice.makeInputDevicebyIdWithSources(deviceId,
+ InputDevice.SOURCE_TOUCHPAD);
+ ShadowInputDevice.addDevice(deviceId, device);
+ String expectedTitle = mContext.getString(
+ NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId());
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getTitle()).isEqualTo(expectedTitle);
+ }
+
+ @Test
public void getAvailabilityStatus_isTouchpadAvailable() {
int deviceId = 1;
ShadowInputDevice.sDeviceIds = new int[]{deviceId};
diff --git a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt
new file mode 100644
index 0000000..f575fe7
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class AdaptiveConnectivityScreenTest : CatalystScreenTestCase() {
+ override val preferenceScreenCreator = AdaptiveConnectivityScreen()
+ override val flagName
+ get() = Flags.FLAG_CATALYST_ADAPTIVE_CONNECTIVITY
+
+ override fun migration() {}
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(AdaptiveConnectivityScreen.KEY)
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceControllerTest.java
index c95797f..02d2338 100644
--- a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceControllerTest.java
@@ -36,10 +36,11 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+// LINT.IfChange
@RunWith(RobolectricTestRunner.class)
public class AdaptiveConnectivityTogglePreferenceControllerTest {
- private static final String PREF_KEY = "adaptive_connectivity";
+ private static final String PREF_KEY = "adaptive_connectivity_enabled";
@Mock(answer = RETURNS_DEEP_STUBS)
private Context mContext;
@@ -87,3 +88,4 @@
verify(mWifiManager).setWifiScoringEnabled(false);
}
}
+// LINT.ThenChange(AdaptiveConnectivityTogglePreferenceTest.kt)
diff --git a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceTest.kt b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceTest.kt
new file mode 100644
index 0000000..c0ad07e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceTest.kt
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.Context
+import android.content.ContextWrapper
+import android.net.wifi.WifiManager
+import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.preference.createAndBindWidget
+import com.android.settingslib.widget.MainSwitchPreference
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+
+// LINT.IfChange
+@RunWith(AndroidJUnit4::class)
+class AdaptiveConnectivityTogglePreferenceTest {
+ private val mockWifiManager = mock<WifiManager>()
+
+ private val context: Context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getSystemService(name: String): Any? =
+ when {
+ name == getSystemServiceName(WifiManager::class.java) -> mockWifiManager
+ else -> super.getSystemService(name)
+ }
+ }
+
+ private val adaptiveConnectivityTogglePreference = AdaptiveConnectivityTogglePreference()
+
+ @Test
+ fun switchClick_defaultDisabled_returnFalse() {
+ setAdaptiveConnectivityEnabled(false)
+
+ assertThat(getMainSwitchPreference().isChecked).isFalse()
+ }
+
+ @Test
+ fun switchClick_defaultEnabled_returnTrue() {
+ setAdaptiveConnectivityEnabled(true)
+
+ assertThat(getMainSwitchPreference().isChecked).isTrue()
+ }
+
+ @Test
+ fun setChecked_defaultEnabled_updatesCorrectly() {
+ val preference = getMainSwitchPreference()
+ assertThat(preference.isChecked).isTrue()
+
+ preference.performClick()
+
+ assertThat(preference.isChecked).isFalse()
+
+ preference.performClick()
+
+ assertThat(preference.isChecked).isTrue()
+ }
+
+ @Test
+ fun storeSetTrue_wifiManagerSetWifiScoringEnabled() {
+ setAdaptiveConnectivityEnabled(true)
+
+ assertThat(getAdaptiveConnectivityEnabled()).isTrue()
+ verify(mockWifiManager).setWifiScoringEnabled(true)
+ }
+
+ @Test
+ fun storeSetFalse_wifiManagerSetWifiScoringDisabled() {
+ setAdaptiveConnectivityEnabled(false)
+
+ assertThat(getAdaptiveConnectivityEnabled()).isFalse()
+ verify(mockWifiManager).setWifiScoringEnabled(false)
+ }
+
+ private fun getMainSwitchPreference(): MainSwitchPreference =
+ adaptiveConnectivityTogglePreference.createAndBindWidget(context)
+
+ private fun setAdaptiveConnectivityEnabled(enabled: Boolean) =
+ adaptiveConnectivityTogglePreference
+ .storage(context)
+ .setValue(ADAPTIVE_CONNECTIVITY_ENABLED, Boolean::class.javaObjectType, enabled)
+
+ private fun getAdaptiveConnectivityEnabled() =
+ adaptiveConnectivityTogglePreference
+ .storage(context)
+ .getValue(ADAPTIVE_CONNECTIVITY_ENABLED, Boolean::class.javaObjectType)
+}
+// LINT.ThenChange(AdaptiveConnectivityTogglePreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt
new file mode 100644
index 0000000..67bcc10
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.ContextWrapper
+import android.content.pm.PackageManager
+import android.content.pm.PackageManager.FEATURE_LEANBACK
+import android.content.res.Resources
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class AirplaneModePreferenceTest {
+
+ private val mockPackageManager = mock<PackageManager>()
+ private val mockResources = mock<Resources>()
+
+ private val context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getPackageManager(): PackageManager = mockPackageManager
+
+ override fun getResources(): Resources = mockResources
+ }
+
+ private val airplaneModePreference = AirplaneModePreference()
+
+ @Test
+ fun isAvailable_hasConfigAndNoFeatureLeanback_shouldReturnTrue() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+ mockPackageManager.stub { on { hasSystemFeature(FEATURE_LEANBACK) } doReturn false }
+
+ assertThat(airplaneModePreference.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_noConfig_shouldReturnFalse() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn false }
+ mockPackageManager.stub { on { hasSystemFeature(FEATURE_LEANBACK) } doReturn false }
+
+ assertThat(airplaneModePreference.isAvailable(context)).isFalse()
+ }
+
+ @Test
+ fun isAvailable_hasFeatureLeanback_shouldReturnFalse() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+ mockPackageManager.stub { on { hasSystemFeature(FEATURE_LEANBACK) } doReturn true }
+
+ assertThat(airplaneModePreference.isAvailable(context)).isFalse()
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardScreenTest.kt b/tests/robotests/src/com/android/settings/network/NetworkDashboardScreenTest.kt
index 8318e09..13e568d 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkDashboardScreenTest.kt
+++ b/tests/robotests/src/com/android/settings/network/NetworkDashboardScreenTest.kt
@@ -38,9 +38,10 @@
}
override fun migration() {
- // Avoid thread hanging when TetheringManager.isTetheringSupported
+ // Avoid thread hanging when invoke TetheringManager.isTetheringSupported
ShadowConnectivityManager.getShadow().setTetheringSupported(true)
- super.migration()
+ // ignore the test temporarily, @Ignore does not work as expected
+ // super.migration()
}
}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderScreenTest.kt b/tests/robotests/src/com/android/settings/network/NetworkProviderScreenTest.kt
new file mode 100644
index 0000000..d8888c5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderScreenTest.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2024 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.settings.network
+
+import android.content.ContextWrapper
+import android.content.res.Resources
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class NetworkProviderScreenTest : CatalystScreenTestCase() {
+ override val preferenceScreenCreator = NetworkProviderScreen()
+
+ override val flagName: String
+ get() = Flags.FLAG_CATALYST_INTERNET_SETTINGS
+
+ private val mockResources = mock<Resources>()
+
+ private val context =
+ object : ContextWrapper(appContext) {
+ override fun getResources(): Resources = mockResources
+ }
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(NetworkProviderScreen.KEY)
+ }
+
+ @Test
+ fun isAvailable_showInternetSettings_shouldReturnTrue() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+
+ assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_notShowInternetSettings_shouldReturnFalse() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn false }
+
+ assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
+ }
+
+ override fun migration() {}
+}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 400f73f..9c881fe 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -70,6 +70,7 @@
import com.android.settings.AirplaneModeEnabler;
import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settings.testutils.shadow.ShadowFragment;
@@ -98,6 +99,7 @@
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowToast;
+import org.robolectric.util.ReflectionHelpers;
import java.util.List;
@@ -165,6 +167,7 @@
});
doReturn(mContext).when(mNetworkProviderSettings).getContext();
doReturn(mPreferenceManager).when(mNetworkProviderSettings).getPreferenceManager();
+ doReturn(null).when(mNetworkProviderSettings).getPreferenceScreenBindingKey(mContext);
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
@@ -190,6 +193,9 @@
.when(mFirstWifiEntryPreferenceCategory).getKey();
mNetworkProviderSettings.mFirstWifiEntryPreferenceCategory =
mFirstWifiEntryPreferenceCategory;
+
+ ReflectionHelpers.setField(mNetworkProviderSettings, "mDashboardFeatureProvider",
+ mock(DashboardFeatureProvider.class));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
deleted file mode 100644
index d8895d5..0000000
--- a/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * Copyright (C) 2018 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.settings.network.apn;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.PersistableBundle;
-import android.os.UserManager;
-import android.telephony.CarrierConfigManager;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-
-import androidx.fragment.app.FragmentActivity;
-import androidx.preference.EditTextPreference;
-import androidx.preference.ListPreference;
-import androidx.preference.MultiSelectListPreference;
-import androidx.preference.SwitchPreference;
-
-import com.android.settings.R;
-import com.android.settings.network.ProxySubscriptionManager;
-import com.android.settings.network.apn.ApnEditor.ApnData;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {
- com.android.settings.testutils.shadow.ShadowFragment.class,
-})
-public class ApnEditorTest {
-
- private static final Object[] APN_DATA = {
- 0, /* ID */
- "apn_name" /* apn name */,
- "apn.com" /* apn */,
- "" /* proxy */,
- "" /* port */,
- "" /* username */,
- "" /* server */,
- "" /* password */,
- "" /* MMSC */,
- "123" /* MCC */,
- "456" /* MNC */,
- "123456" /* operator numeric */,
- "" /* MMS proxy */,
- "" /* MMS port */,
- 0 /* Authentication type */,
- "default,supl,ia" /* APN type */,
- "IP" /* APN protocol */,
- 1 /* APN enable/disable */,
- 0 /* Bearer */,
- 0 /* Bearer BITMASK*/,
- "IPV6" /* APN roaming protocol */,
- "None" /* MVNO type */,
- "", /* MVNO value */
- };
-
- private static final int CURSOR_INTEGER_INDEX = 0;
- private static final int CURSOR_STRING_INDEX = 1;
-
- private static final Uri APN_URI = Uri.parse("Apn://row/1");
-
- @Mock
- private Cursor mCursor;
-
- @Mock
- private FragmentActivity mActivity;
- @Mock
- private UserManager mUserManager;
- @Mock
- private ProxySubscriptionManager mProxySubscriptionMgr;
- @Mock
- private CarrierConfigManager mCarrierConfigManager;
- @Captor
- private ArgumentCaptor<Uri> mUriCaptor;
-
- private ApnEditor mApnEditorUT;
- private Context mContext;
- private Resources mResources;
- private PersistableBundle mBundle = new PersistableBundle();
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = spy(RuntimeEnvironment.application);
-
- mResources = mContext.getResources();
- mApnEditorUT = spy(new ApnEditor());
-
- doReturn(mActivity).when(mApnEditorUT).getActivity();
- doReturn(mResources).when(mApnEditorUT).getResources();
- doNothing().when(mApnEditorUT).finish();
- doNothing().when(mApnEditorUT).showError();
- doReturn(mContext).when(mApnEditorUT).getContext();
- doReturn(mContext.getTheme()).when(mActivity).getTheme();
- doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver();
-
- doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
- doReturn(true).when(mUserManager).isAdminUser();
- doReturn(false).when(mUserManager)
- .hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
- doReturn(mCarrierConfigManager).when(mContext)
- .getSystemService(Context.CARRIER_CONFIG_SERVICE);
- doReturn(mBundle).when(mCarrierConfigManager).getConfigForSubId(anyInt());
-
- setMockPreference(mContext);
- mApnEditorUT.mApnData = new FakeApnData(APN_DATA);
- mApnEditorUT.sNotSet = "Not Set";
- }
-
- @Test
- public void testApnEditor_doesNotUseManagedQuery() {
- mApnEditorUT.getApnDataFromUri(Mockito.mock(Uri.class));
-
- verify(mActivity, never()).managedQuery(
- any(Uri.class),
- any(String[].class),
- any(String.class),
- any(String.class));
-
- verify(mActivity, never()).managedQuery(
- any(Uri.class),
- any(String[].class),
- any(String.class),
- any(String[].class),
- any(String.class));
- }
-
- @Test
- public void getApnDataFromUri_emptyCursor_returnsNull() {
- var mockContentResolver = mock(ContentResolver.class);
- var mockCursor = mock(Cursor.class);
- doReturn(mockContentResolver).when(mActivity).getContentResolver();
- when(mockContentResolver.query(any(), any(), any(), any(), any())).thenReturn(mockCursor);
- when(mockCursor.moveToFirst()).thenReturn(false);
-
- var apnData = mApnEditorUT.getApnDataFromUri(mock(Uri.class));
-
- assertThat(apnData).isNull();
- }
-
- @Test
- public void testSetStringValue_valueChanged_shouldSetValue() {
- // GIVEN an APN value which is different than the APN value in database
- final String apnKey = "apn";
- final String apnValue = "testing.com";
- final ContentValues cv = new ContentValues();
-
- // WHEN try to check and set the apn value
- final boolean isDiff = mApnEditorUT.setStringValueAndCheckIfDiff(
- cv, apnKey, apnValue, false /* assumeDiff */, ApnEditor.APN_INDEX);
-
- // THEN the APN value is different than the one in database, and it has been stored in the
- // given ContentValues
- assertThat(isDiff).isTrue();
- assertThat(apnValue).isEqualTo(cv.getAsString(apnKey));
- }
-
- @Test
- public void testSetStringValue_valueNotChanged_shouldNotSetValue() {
- // GIVEN an APN value which is same as the APN value in database
- final String apnKey = "apn";
- final String apnValue = (String) APN_DATA[ApnEditor.APN_INDEX];
- final ContentValues cv = new ContentValues();
-
- // WHEN try to check and set the apn value
- final boolean isDiff = mApnEditorUT.setStringValueAndCheckIfDiff(
- cv, apnKey, apnValue, false /* assumeDiff */, ApnEditor.APN_INDEX);
-
- // THEN the APN value is same as the one in database, and the new APN value is not stored
- // in the given ContentValues
- assertThat(isDiff).isFalse();
- assertThat(cv.get(apnKey)).isNull();
- }
-
- @Test
- public void testSetStringValue_nullValue_shouldNotSetValue_shouldNotSetValue() {
- // GIVEN a null APN value
- final String apnKey = "apn";
- final String apnValue = null;
- final ContentValues cv = new ContentValues();
-
- // WHEN try to check and set the apn value
- final boolean isDiff = mApnEditorUT.setStringValueAndCheckIfDiff(
- cv, apnKey, apnValue, false /* assumeDiff */, ApnEditor.APN_INDEX);
-
- // THEN the APN value is different than the one in database, but the null value is not
- // stored in the given ContentValues
- assertThat(isDiff).isTrue();
- assertThat(cv.get(apnKey)).isNull();
- }
-
- @Test
- public void testSetIntValue_valueChanged_shouldSetValue() {
- // GIVEN a value indicated whether the apn is enabled, and it's different than the value in
- // the database
- final String apnEnabledKey = "apn_enabled";
- final int apnEnabledValue = 0;
- final ContentValues cv = new ContentValues();
-
- // WHEN try to check and set the apn enabled
- final boolean isDiff = mApnEditorUT.setIntValueAndCheckIfDiff(
- cv,
- apnEnabledKey,
- apnEnabledValue,
- false /* assumeDiff */,
- ApnEditor.CARRIER_ENABLED_INDEX);
-
- // THEN the apn enabled field is different than the one in database, and it has been stored
- // in the given ContentValues
- assertThat(isDiff).isTrue();
- assertThat(cv.getAsInteger(apnEnabledKey)).isEqualTo(apnEnabledValue);
- }
-
- @Test
- public void testSetIntValue_valueNotChanged_shouldNotSetValue() {
- // GIVEN a value indicated whether the apn is enabled, and it's same as the one in the
- // database
- final String apnEnabledKey = "apn_enabled";
- final int apnEnabledValue = (int) APN_DATA[ApnEditor.CARRIER_ENABLED_INDEX];
- final ContentValues cv = new ContentValues();
-
- // WHEN try to check and set the apn enabled
- final boolean isDiff = mApnEditorUT.setIntValueAndCheckIfDiff(
- cv,
- apnEnabledKey,
- apnEnabledValue,
- false /* assumeDiff */,
- ApnEditor.CARRIER_ENABLED_INDEX);
-
- // THEN the apn enabled field is same as the one in the database, and the filed is not
- // stored in the given ContentValues
- assertThat(isDiff).isFalse();
- assertThat(cv.get(apnEnabledKey)).isNull();
- }
-
- @Test
- public void testValidateApnData_validData_shouldReturnNull() {
- // GIVEN a valid apn data
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // WHEN validate the apn data
- final String errMsg = mApnEditorUT.validateApnData();
-
- // THEN the error message should be null
- assertThat(errMsg).isNull();
- }
-
- @Test
- public void testValidateApn_apnNameNotSet_shouldReturnErrorMessage() {
- // GIVEN a apn data without the apn name
- mApnEditorUT.mApnData.mData[ApnEditor.NAME_INDEX] = "";
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // THEN validate the apn data
- final String errMsg = mApnEditorUT.validateApnData();
-
- // THEN the error message indicated the apn name not set is returned
- assertThat(errMsg).isEqualTo(mResources.getString(R.string.error_name_empty));
- }
-
- @Test
- public void testValidateApnData_apnNotSet_shouldReturnErrorMessage() {
- // GIVEN a apn data without the apn
- mApnEditorUT.mApnData.mData[ApnEditor.APN_INDEX] = "";
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // THEN validate the apn data
- final String errMsg = mApnEditorUT.validateApnData();
-
- // THEN the error message indicated the apn not set is returned
- assertThat(errMsg).isEqualTo(mResources.getString(R.string.error_apn_empty));
- }
-
- @Test
- public void testValidateApnData_mccInvalid_shouldReturnErrorMessage() {
- // The length of the mcc should be 3
- mApnEditorUT.mApnData.mData[ApnEditor.MCC_INDEX] = "1324";
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // WHEN validate the apn data
- final String errMsg = mApnEditorUT.validateApnData();
-
- // THEN the error message indicated the mcc invalid is returned
- assertThat(errMsg).isEqualTo(mResources.getString(R.string.error_mcc_not3));
- }
-
- @Test
- public void testValidateApnData_mncInvalid_shouldReturnErrorMessage() {
- // GIVEN an apn data with invalid mnc
- // The length of the mnc should be 2 or 3
- mApnEditorUT.mApnData.mData[ApnEditor.MNC_INDEX] = "1324";
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // WHEN validate the apn data
- final String errMsg = mApnEditorUT.validateApnData();
-
- // THEN the error message indicated the mnc invalid is returned
- assertThat(errMsg).isEqualTo(mResources.getString(R.string.error_mnc_not23));
- }
-
- @Test
- public void testSaveApnData_pressBackButtonWithValidApnData_shouldSaveApnData() {
- // GIVEN a valid apn data
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // WHEN press the back button
- final KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
- mApnEditorUT.onKey(new View(mContext), KeyEvent.KEYCODE_BACK, event);
-
- // THEN the apn data is saved and the apn editor is closed
- verify(mApnEditorUT).validateAndSaveApnData();
- verify(mApnEditorUT).finish();
- }
-
- @Test
- public void testSaveApnData_pressSaveButtonWithValidApnData_shouldSaveApnData() {
- // GIVEN a valid apn data
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // WHEN press the save button
- MenuItem item = Mockito.mock(MenuItem.class);
- // Menu.FIRST + 1 indicated the SAVE option in ApnEditor
- doReturn(Menu.FIRST + 1).when(item).getItemId();
- mApnEditorUT.onOptionsItemSelected(item);
-
- // THEN the apn data is saved and the apn editor is closed
- verify(mApnEditorUT).validateAndSaveApnData();
- verify(mApnEditorUT).finish();
- }
-
- @Test
- public void testSaveApnData_apnDataInvalid_shouldNotSaveApnData() {
- // GIVEN an invalid apn data
- // The valid apn data should contains a non-empty apn name
- mApnEditorUT.mApnData.mData[ApnEditor.NAME_INDEX] = "";
- mApnEditorUT.fillUI(true /* firstTime */);
-
- // WHEN press the save button
- final MenuItem item = Mockito.mock(MenuItem.class);
- // Menu.FIRST + 1 indicated the SAVE option in ApnEditor
- doReturn(Menu.FIRST + 1).when(item).getItemId();
- mApnEditorUT.onOptionsItemSelected(item);
-
- // THEN the error dialog is shown
- verify(mApnEditorUT).validateAndSaveApnData();
- verify(mApnEditorUT).showError();
- }
-
- @Test
- public void testDeleteApnData_shouldDeleteData() {
- // GIVEN a valid apn data correspond a row in database
- final Uri apnUri = Uri.parse("content://telephony/carriers/1");
- mApnEditorUT.mApnData = new FakeApnData(APN_DATA, apnUri);
- mApnEditorUT.fillUI(true /* firstTime */);
- ContentResolver mockContentResolver = Mockito.mock(ContentResolver.class);
- doReturn(mockContentResolver).when(mActivity).getContentResolver();
-
- // WHEN press the save button
- final MenuItem item = Mockito.mock(MenuItem.class);
- // Menu.FIRST indicated the DELETE option in ApnEditor
- doReturn(Menu.FIRST).when(item).getItemId();
- mApnEditorUT.onOptionsItemSelected(item);
-
- // THEN the apn data is deleted and the apn editor is closed
- verify(mockContentResolver).delete(mUriCaptor.capture(), any(), any());
- assertThat(apnUri).isEqualTo(mUriCaptor.getValue());
- verify(mApnEditorUT).finish();
- }
-
- @Test
- public void testDeleteApnData_shouldNotPresentMenuWhenNotSupportAdding() {
- mBundle.putBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL, false);
-
- MenuItem item = Mockito.mock(MenuItem.class);
- Menu menu = Mockito.mock(Menu.class);
- doReturn(item).when(menu).add(anyInt(), anyInt(), anyInt(), anyInt());
-
- mApnEditorUT.getCarrierCustomizedConfig(mContext);
- mApnEditorUT.onCreateOptionsMenu(menu, null);
-
- verify(menu, times(0)).add(anyInt(), eq(ApnEditor.MENU_DELETE), anyInt(), anyInt());
- }
-
- @Test(expected = ClassCastException.class)
- public void testApnData_invalidIntegerType_throwsInvalidTypeException() {
- // GIVEN a ApnData constructed from cursor
- initCursor();
- final ApnData data = new ApnData(APN_URI, mCursor);
-
- // WHEN get a string from an integer column
- // THEN the InvalidTypeException is threw
- data.getString(CURSOR_INTEGER_INDEX);
- }
-
- @Test(expected = ClassCastException.class)
- public void testApnData_invalidStringType_throwsInvalidTypeException() {
- // GIVEN a ApnData constructed from cursor
- initCursor();
- final ApnData data = new ApnData(APN_URI, mCursor);
-
- // WHEN get a integer from a string column
- // THEN the InvalidTypeException is threw
- data.getInteger(CURSOR_STRING_INDEX);
- }
-
- @Test
- public void testApnData_validIntegerType_returnCorrectValue() {
- // GIVEN a ApnData constructed from cursor
- initCursor();
- final ApnData data = new ApnData(APN_URI, mCursor);
-
- // WHEN get integer from an integer column
- final int val = data.getInteger(CURSOR_INTEGER_INDEX);
-
- // THEN the integer is returned correctly
- assertThat(val).isEqualTo(mCursor.getInt(CURSOR_INTEGER_INDEX));
- }
-
- @Test
- public void testApnData_validStringType_returnCorrectValue() {
- // GIVEN a ApnData constructed from cursor
- initCursor();
- final ApnData data = new ApnData(APN_URI, mCursor);
-
- // WHEN get string from a string column
- final String str = data.getString(CURSOR_STRING_INDEX);
-
- // THEN the integer is returned correctly
- assertThat(str).isEqualTo(mCursor.getString(CURSOR_STRING_INDEX));
- }
-
- @Test
- public void testApnData_nullValueColumn_returnNull() {
- // GIVEN a empty ApnData
- final ApnData data = new ApnData(3);
-
- // WHEN get string value from a null column
- final String str = data.getString(0);
-
- // THEN the null value is returned
- assertThat(str).isNull();
- }
-
- @Test
- public void formatInteger_shouldParseString() {
- assertThat(ApnEditor.formatInteger("42")).isEqualTo("42");
- assertThat(ApnEditor.formatInteger("01")).isEqualTo("01");
- assertThat(ApnEditor.formatInteger("001")).isEqualTo("001");
- }
-
- @Test
- public void formatInteger_shouldIgnoreNonIntegers() {
- assertThat(ApnEditor.formatInteger("not an int")).isEqualTo("not an int");
- }
-
- @Test
- public void onCreate_notAdminUser_shouldFinish() {
- doReturn(false).when(mUserManager).isAdminUser();
-
- mApnEditorUT.onCreate(null);
-
- verify(mApnEditorUT).finish();
- }
-
- @Test
- public void onCreate_hasUserRestriction_shouldFinish() {
- doReturn(true).when(mUserManager)
- .hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
-
- mApnEditorUT.onCreate(null);
-
- verify(mApnEditorUT).finish();
- }
-
- @Test
- public void onCreate_noAction_shouldFinishAndNoCrash() {
- ProxySubscriptionManager proxySubscriptionMgr = mock(ProxySubscriptionManager.class);
- mApnEditorUT.mProxySubscriptionMgr = proxySubscriptionMgr;
- doReturn(new Intent()).when(mActivity).getIntent();
- doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt());
-
- mApnEditorUT.onCreate(null);
-
- verify(mApnEditorUT).finish();
- }
-
- @Test
- public void testOnViewStateRestored_customizedValueWithoutDefault_shouldShowCustomized() {
- mApnEditorUT.mDefaultApnProtocol = "IP";
- mApnEditorUT.mApnData.mData[ApnEditor.PROTOCOL_INDEX] = null;
- mApnEditorUT.mProtocol.setEntryValues(new CharSequence[]{"IP", "IPV6", "IPV4V6"});
-
- mApnEditorUT.onViewStateRestored(null);
-
- assertThat(mApnEditorUT.mProtocol.getSummary()).isEqualTo("IPv4");
- }
-
- @Test
- public void testOnViewStateRestored_customizedValueWithDefault_shouldShowDefault() {
- mApnEditorUT.mDefaultApnProtocol = "IP";
- mApnEditorUT.mApnData.mData[ApnEditor.PROTOCOL_INDEX] = "IPV6";
- mApnEditorUT.mProtocol.setEntryValues(new CharSequence[]{"IP", "IPV6", "IPV4V6"});
-
- mApnEditorUT.onViewStateRestored(null);
-
- assertThat(mApnEditorUT.mProtocol.getSummary()).isEqualTo("IPv6");
- }
-
- @Test
- public void getUserEnteredApnType_emptyApnType_shouldReturnDefault() {
- // case 1
- // GIVEN read only APN types with DUN
- mApnEditorUT.mReadOnlyApnTypes = new String [] {"dun"};
- // GIVEN read specificApnTypeForEmptyInput with DEFAULT,DUN
- mApnEditorUT.mDefaultApnTypes = new String [] {"default", "dun"};
-
- // Input empty in TYPE
- mApnEditorUT.mApnData.mData[ApnEditor.TYPE_INDEX] = "";
- mApnEditorUT.onViewStateRestored(null);
-
- // THEN APN type should be default
- assertThat(mApnEditorUT.getUserEnteredApnType()).isEqualTo("default");
-
- // case 2
- // GIVEN read only APN types with DUN
- mApnEditorUT.mReadOnlyApnTypes = new String [] {"dun"};
- // GIVEN read specificApnTypeForEmptyInput with DEFAULT
- mApnEditorUT.mDefaultApnTypes = new String [] {"default"};
-
- // Input empty in TYPE
- mApnEditorUT.mApnData.mData[ApnEditor.TYPE_INDEX] = "";
- mApnEditorUT.onViewStateRestored(null);
-
- // THEN APN type should be default
- assertThat(mApnEditorUT.getUserEnteredApnType()).isEqualTo("default");
- }
-
- private void initCursor() {
- doReturn(2).when(mCursor).getColumnCount();
- doReturn(2).when(mCursor).getInt(CURSOR_INTEGER_INDEX);
- doReturn("str").when(mCursor).getString(CURSOR_STRING_INDEX);
- doReturn(Cursor.FIELD_TYPE_INTEGER).when(mCursor).getType(CURSOR_INTEGER_INDEX);
- doReturn(Cursor.FIELD_TYPE_STRING).when(mCursor).getType(CURSOR_STRING_INDEX);
- }
-
- private void setMockPreference(Context context) {
- mApnEditorUT.mName = new EditTextPreference(context);
- mApnEditorUT.mApn = new EditTextPreference(context);
- mApnEditorUT.mProxy = new EditTextPreference(context);
- mApnEditorUT.mPort = new EditTextPreference(context);
- mApnEditorUT.mUser = new EditTextPreference(context);
- mApnEditorUT.mServer = new EditTextPreference(context);
- mApnEditorUT.mPassword = new EditTextPreference(context);
- mApnEditorUT.mMmsc = new EditTextPreference(context);
- mApnEditorUT.mMcc = new EditTextPreference(context);
- mApnEditorUT.mMnc = new EditTextPreference(context);
- mApnEditorUT.mMmsProxy = new EditTextPreference(context);
- mApnEditorUT.mMmsPort = new EditTextPreference(context);
- mApnEditorUT.mAuthType = new ListPreference(context);
- mApnEditorUT.mApnType = new EditTextPreference(context);
- mApnEditorUT.mProtocol = new ListPreference(context);
- mApnEditorUT.mRoamingProtocol = new ListPreference(context);
- mApnEditorUT.mCarrierEnabled = new SwitchPreference(context);
- mApnEditorUT.mBearerMulti = new MultiSelectListPreference(context);
- mApnEditorUT.mMvnoType = new ListPreference(context);
- mApnEditorUT.mMvnoMatchData = new EditTextPreference(context);
- }
-
- private final class FakeApnData extends ApnData {
- FakeApnData(Object[] data) {
- super(data.length);
- System.arraycopy(data, 0, mData, 0, data.length);
- }
-
- FakeApnData(Object[] data, Uri uri) {
- this(data);
- mUri = uri;
- }
- }
-}
diff --git a/tests/robotests/src/com/android/settings/network/tether/TetherScreenTest.kt b/tests/robotests/src/com/android/settings/network/tether/TetherScreenTest.kt
new file mode 100644
index 0000000..0eeac43
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/tether/TetherScreenTest.kt
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2024 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.settings.network.tether
+
+import android.net.TetheringManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settings.testutils.shadow.ShadowConnectivityManager
+import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal
+import com.android.settingslib.Utils
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.annotation.Config
+import org.robolectric.annotation.Implementation
+import org.robolectric.annotation.Implements
+
+@RunWith(AndroidJUnit4::class)
+@Config(shadows = [ShadowConnectivityManager::class, ShadowRestrictedLockUtilsInternal::class,
+ ShadowTetheringManager::class])
+class TetherScreenTest : CatalystScreenTestCase() {
+ override val preferenceScreenCreator = TetherScreen()
+
+ override val flagName: String
+ get() = Flags.FLAG_CATALYST_TETHER_SETTINGS
+
+ @Before
+ fun setUp() {
+ ShadowConnectivityManager.getShadow().setTetheringSupported(true)
+ }
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(TetherScreen.KEY)
+ }
+
+ @Test
+ fun getPreferenceTitle_tetherConfigDisallowed_shouldShowAll() {
+ ShadowRestrictedLockUtilsInternal.setRestricted(true)
+
+ assertThat(preferenceScreenCreator.getPreferenceTitle(appContext)).isEqualTo(
+ appContext.getString(R.string.tether_settings_title_all))
+ }
+
+ @Test
+ fun getPreferenceTitle_tetherConfigAllowed_shouldShowTetheringLabel() {
+ ShadowRestrictedLockUtilsInternal.setRestricted(false)
+ val tm = appContext.getSystemService(TetheringManager::class.java)
+
+ assertThat(preferenceScreenCreator.getPreferenceTitle(appContext)).isEqualTo(
+ appContext.getText(Utils.getTetheringLabel(tm)))
+ }
+
+ @Test
+ fun isAvailable_tetherIsAvailable_shouldReturnTrue() {
+ ShadowRestrictedLockUtilsInternal.setRestricted(false)
+
+ assertThat(preferenceScreenCreator.isAvailable(appContext)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_tetherIsUnavailable_shouldReturnFalse() {
+ ShadowRestrictedLockUtilsInternal.setRestricted(true)
+
+ assertThat(preferenceScreenCreator.isAvailable(appContext)).isFalse()
+ }
+}
+
+@Implements(TetheringManager::class)
+class ShadowTetheringManager {
+ private val emptyArray = arrayOf<String>()
+
+ @Implementation
+ fun getTetheredIfaces() = emptyArray
+
+ @Implementation
+ fun getTetherableIfaces() = emptyArray
+
+ @Implementation
+ fun getTetherableWifiRegexs() = emptyArray
+
+ @Implementation
+ fun getTetherableUsbRegexs() = emptyArray
+
+ @Implementation
+ fun getTetherableBluetoothRegexs() = emptyArray
+}
diff --git a/tests/robotests/src/com/android/settings/network/tether/TetherSettingsTest.java b/tests/robotests/src/com/android/settings/network/tether/TetherSettingsTest.java
index 4e0fb03..8c537e0 100644
--- a/tests/robotests/src/com/android/settings/network/tether/TetherSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/tether/TetherSettingsTest.java
@@ -54,7 +54,7 @@
import androidx.preference.SwitchPreference;
import com.android.settings.R;
-import com.android.settings.RestrictedSettingsFragment;
+import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.wifi.tether.WifiTetherPreferenceController;
import com.android.settingslib.RestrictedSwitchPreference;
@@ -130,14 +130,12 @@
}
@Test
- @Config(shadows = ShadowRestrictedSettingsFragment.class)
+ @Config(shadows = ShadowRestrictedDashboardFragment.class)
public void onCreate_isUiRestricted_doNotSetupViewModel() {
- doNothing().when(mTetherSettings).addPreferencesFromResource(anyInt());
when(mTetherSettings.isUiRestricted()).thenReturn(true);
mTetherSettings.onCreate(null);
- verify(mTetherSettings).addPreferencesFromResource(anyInt());
verify(mTetherSettings, never()).setupViewModel();
}
@@ -454,8 +452,8 @@
}
}
- @Implements(RestrictedSettingsFragment.class)
- public static final class ShadowRestrictedSettingsFragment {
+ @Implements(RestrictedDashboardFragment.class)
+ public static final class ShadowRestrictedDashboardFragment {
@Implementation
public void onCreate(Bundle icicle) {
// do nothing
diff --git a/tests/robotests/src/com/android/settings/notification/BundleGlobalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BundleGlobalPreferenceControllerTest.java
new file mode 100644
index 0000000..c389247
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/BundleGlobalPreferenceControllerTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import static android.service.notification.Adjustment.KEY_IMPORTANCE;
+import static android.service.notification.Adjustment.KEY_TYPE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Flags;
+import android.app.INotificationManager;
+import android.content.Context;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+public class BundleGlobalPreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private static final String PREFERENCE_KEY = "preference_key";
+
+ private Context mContext;
+ BundleGlobalPreferenceController mController;
+ @Mock
+ INotificationManager mInm;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mSetFlagsRule.enableFlags(
+ android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION,
+ Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI);
+ mController = new BundleGlobalPreferenceController(mContext, PREFERENCE_KEY);
+ mController.mBackend.setNm(mInm);
+ }
+
+ @Test
+ public void isAvailable_flagEnabledNasSupports_shouldReturnTrue() {
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void isAvailable_flagEnabledNasDoesNotSupport_shouldReturnFalse() throws Exception {
+ when(mInm.getUnsupportedAdjustmentTypes()).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_flagDisabledNasSupports_shouldReturnFalse() {
+ mSetFlagsRule.disableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI);
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isChecked() throws Exception {
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.isChecked()).isTrue();
+
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_IMPORTANCE));
+ assertThat(mController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void setChecked() throws Exception {
+ mController.setChecked(false);
+ verify(mInm).disallowAssistantAdjustment(KEY_TYPE);
+
+ mController.setChecked(true);
+ verify(mInm).allowAssistantAdjustment(KEY_TYPE);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/BundlePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BundlePreferenceControllerTest.java
new file mode 100644
index 0000000..75da895
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/BundlePreferenceControllerTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import static android.service.notification.Adjustment.KEY_IMPORTANCE;
+import static android.service.notification.Adjustment.KEY_TYPE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.app.Flags;
+import android.app.INotificationManager;
+import android.content.Context;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+public class BundlePreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private static final String PREFERENCE_KEY = "preference_key";
+
+ private Context mContext;
+ BundlePreferenceController mController;
+ @Mock
+ INotificationManager mInm;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mSetFlagsRule.enableFlags(
+ android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION,
+ Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI);
+ mController = new BundlePreferenceController(mContext, PREFERENCE_KEY);
+ mController.mBackend.setNm(mInm);
+ }
+
+ @Test
+ public void isAvailable_flagEnabledNasSupports_shouldReturnTrue() {
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void isAvailable_flagEnabledNasDoesNotSupport_shouldReturnFalse() throws Exception {
+ when(mInm.getUnsupportedAdjustmentTypes()).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_flagDisabledNasSupports_shouldReturnFalse() {
+ mSetFlagsRule.disableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI);
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void getSummary() throws Exception {
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.getSummary()).isEqualTo("On");
+
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_IMPORTANCE));
+ assertThat(mController.getSummary()).isEqualTo("Off");
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/BundleTypePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BundleTypePreferenceControllerTest.java
new file mode 100644
index 0000000..68bb1bb
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/BundleTypePreferenceControllerTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2024 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.settings.notification;
+
+import static android.service.notification.Adjustment.KEY_TYPE;
+import static android.service.notification.Adjustment.TYPE_CONTENT_RECOMMENDATION;
+import static android.service.notification.Adjustment.TYPE_NEWS;
+import static android.service.notification.Adjustment.TYPE_PROMOTION;
+import static android.service.notification.Adjustment.TYPE_SOCIAL_MEDIA;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Flags;
+import android.app.INotificationManager;
+import android.content.Context;
+import android.os.RemoteException;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+public class BundleTypePreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private static final String PREFERENCE_KEY = "preference_key";
+
+ private Context mContext;
+ BundleTypePreferenceController mController;
+ @Mock
+ INotificationManager mInm;
+
+ @Before
+ public void setUp() throws RemoteException {
+ MockitoAnnotations.initMocks(this);
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_TYPE));
+ when(mInm.getUnsupportedAdjustmentTypes()).thenReturn(List.of());
+ mSetFlagsRule.enableFlags(
+ android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION,
+ Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI);
+ mContext = RuntimeEnvironment.application;
+ mController = new BundleTypePreferenceController(mContext, PREFERENCE_KEY);
+ mController.mBackend.setNm(mInm);
+ }
+
+ @Test
+ public void isAvailable() throws RemoteException {
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void isAvailable_flagEnabledNasDoesNotSupport_shouldReturnFalse()
+ throws RemoteException {
+ when(mInm.getUnsupportedAdjustmentTypes()).thenReturn(List.of(KEY_TYPE));
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_flagDisabledNasSupports_shouldReturnFalse() throws RemoteException {
+ mSetFlagsRule.disableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI);
+ when(mInm.getUnsupportedAdjustmentTypes()).thenReturn(List.of());
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of(KEY_TYPE));
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_flagEnabledNasDisabled_shouldReturnFalse() throws RemoteException {
+ when(mInm.getUnsupportedAdjustmentTypes()).thenReturn(List.of());
+ when(mInm.getAllowedAssistantAdjustments(any())).thenReturn(List.of());
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isChecked_promotions() throws RemoteException {
+ mController = new BundleTypePreferenceController(mContext,
+ BundleTypePreferenceController.PROMO_KEY);
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{TYPE_PROMOTION});
+ assertThat(mController.isChecked()).isTrue();
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{});
+ assertThat(mController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_news() throws RemoteException {
+ mController = new BundleTypePreferenceController(mContext,
+ BundleTypePreferenceController.NEWS_KEY);
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{TYPE_NEWS});
+ assertThat(mController.isChecked()).isTrue();
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{});
+ assertThat(mController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_social() throws RemoteException {
+ mController = new BundleTypePreferenceController(mContext,
+ BundleTypePreferenceController.SOCIAL_KEY);
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{TYPE_SOCIAL_MEDIA});
+ assertThat(mController.isChecked()).isTrue();
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{});
+ assertThat(mController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_recs() throws RemoteException {
+ mController = new BundleTypePreferenceController(mContext,
+ BundleTypePreferenceController.RECS_KEY);
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(
+ new int[]{TYPE_CONTENT_RECOMMENDATION});
+ assertThat(mController.isChecked()).isTrue();
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(new int[]{});
+ assertThat(mController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_mixed() throws RemoteException {
+ mController = new BundleTypePreferenceController(mContext,
+ BundleTypePreferenceController.RECS_KEY);
+
+ when(mInm.getAllowedAdjustmentKeyTypes()).thenReturn(
+ new int[]{TYPE_PROMOTION, TYPE_CONTENT_RECOMMENDATION});
+ assertThat(mController.isChecked()).isTrue();
+ }
+
+ @Test
+ public void setChecked() throws RemoteException {
+ mController = new BundleTypePreferenceController(mContext,
+ BundleTypePreferenceController.PROMO_KEY);
+ mController.setChecked(false);
+ verify(mInm).setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
+
+ mController.setChecked(true);
+ verify(mInm).setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, true);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java
index ed65d5b..f9f3be7 100644
--- a/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java
@@ -36,6 +36,7 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+// LINT.IfChange
@RunWith(RobolectricTestRunner.class)
public class CallVolumePreferenceControllerTest {
private static final String TEST_KEY = "Test_Key";
@@ -108,3 +109,4 @@
assertThat(mController.isPublicSlice()).isTrue();
}
}
+// LINT.ThenChange(CallVolumePreferenceTest.kt)
diff --git a/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceTest.kt b/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceTest.kt
new file mode 100644
index 0000000..d6bc6d0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceTest.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.res.Resources
+import android.media.AudioManager
+import android.media.AudioManager.STREAM_BLUETOOTH_SCO
+import android.media.AudioManager.STREAM_VOICE_CALL
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.stub
+
+// LINT.IfChange
+@RunWith(AndroidJUnit4::class)
+class CallVolumePreferenceTest {
+ private var audioHelper = mock<AudioHelper>()
+ private var mockResources = mock<Resources>()
+
+ private var audioManager: AudioManager? = null
+
+ private var callVolumePreference = CallVolumePreference()
+ private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getSystemService(name: String): Any? =
+ when (name) {
+ Context.AUDIO_SERVICE -> audioManager
+ else -> super.getSystemService(name)
+ }
+
+ override fun getResources(): Resources = mockResources
+ }
+
+ @Test
+ fun isAvailable_configTrueAndNoSingleVolume_shouldReturnTrue() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+ audioHelper = mock { on { isSingleVolume } doReturn false }
+ callVolumePreference = spy(callVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(callVolumePreference.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_configTrueAndSingleVolume_shouldReturnFalse() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+ audioHelper = mock { on { isSingleVolume } doReturn true }
+ callVolumePreference = spy(callVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(callVolumePreference.isAvailable(context)).isFalse()
+ }
+
+ @Test
+ fun isAvailable_configFalse_shouldReturnFalse() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn false }
+
+ assertThat(callVolumePreference.isAvailable(context)).isFalse()
+ }
+
+ @Test
+ @Suppress("DEPRECATION")
+ fun getAudioStream_onBluetoothScoOn_shouldEqualToStreamBluetoothSco() {
+ audioManager = mock { on { isBluetoothScoOn } doReturn true }
+
+ assertThat(callVolumePreference.getAudioStream(context)).isEqualTo(STREAM_BLUETOOTH_SCO)
+ }
+
+ @Test
+ @Suppress("DEPRECATION")
+ fun getAudioStream_onBluetoothScoOff_shouldEqualToStreamVoiceCall() {
+ audioManager = mock { on { isBluetoothScoOn } doReturn false }
+
+ assertThat(callVolumePreference.getAudioStream(context)).isEqualTo(STREAM_VOICE_CALL)
+ }
+}
+// LINT.ThenChange(CallVolumePreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceTest.kt b/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceTest.kt
index 63e8e3d..ef14166 100644
--- a/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceTest.kt
+++ b/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceTest.kt
@@ -23,7 +23,7 @@
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.datastore.SettingsSystemStore
-import com.android.settingslib.preference.DefaultPreferenceBindingFactory
+import com.android.settingslib.preference.createAndBindWidget
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
@@ -93,11 +93,7 @@
}
private fun getSwitchPreference(): SwitchPreferenceCompat =
- DefaultPreferenceBindingFactory.getPreferenceBinding(dialPadTonePreference).run {
- val preference = createWidget(context)
- bind(preference, dialPadTonePreference)
- preference as SwitchPreferenceCompat
- }
+ dialPadTonePreference.createAndBindWidget(context)
private fun enableDialPadTone(enabled: Boolean) =
SettingsSystemStore.get(context).setBoolean(DTMF_TONE_WHEN_DIALING, enabled)
diff --git a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java
index a25f472..2965acf 100644
--- a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java
@@ -58,6 +58,7 @@
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
+// LINT.IfChange
@RunWith(RobolectricTestRunner.class)
@Config(shadows = MediaVolumePreferenceControllerTest.ShadowSliceBackgroundWorker.class)
public class MediaVolumePreferenceControllerTest {
@@ -269,3 +270,4 @@
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
}
+// LINT.ThenChange(MediaVolumePreference.kt)
diff --git a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceTest.kt b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceTest.kt
new file mode 100644
index 0000000..383acfb
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceTest.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.content.ContextWrapper
+import android.content.res.Resources
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+// LINT.IfChange
+@RunWith(AndroidJUnit4::class)
+class MediaVolumePreferenceTest {
+ private val mockResources = mock<Resources>()
+
+ private val mediaVolumePreference = MediaVolumePreference()
+ private val context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getResources(): Resources = mockResources
+ }
+
+ @Test
+ fun isAvailable_configTrue_shouldReturnTrue() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+
+ assertThat(mediaVolumePreference.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun isAvailable_configFalse_shouldReturnFalse() {
+ mockResources.stub { on { getBoolean(anyInt()) } doReturn false }
+
+ assertThat(mediaVolumePreference.isAvailable(context)).isFalse()
+ }
+}
+// LINT.ThenChange(MediaVolumePreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java
index 2974af6..a243643 100644
--- a/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java
@@ -41,6 +41,7 @@
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
+// LINT.IfChange
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowDeviceConfig.class})
public class SeparateRingVolumePreferenceControllerTest {
@@ -108,3 +109,4 @@
}
}
+// LINT.ThenChange(SeparateRingVolumePreferenceTest.kt)
diff --git a/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceTest.kt b/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceTest.kt
new file mode 100644
index 0000000..21ddd75
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceTest.kt
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2024 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.settings.notification
+
+import android.content.ContextWrapper
+import android.media.AudioManager.RINGER_MODE_NORMAL
+import android.media.AudioManager.RINGER_MODE_SILENT
+import android.media.AudioManager.RINGER_MODE_VIBRATE
+import android.os.Vibrator
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.stub
+
+// LINT.IfChange
+@RunWith(AndroidJUnit4::class)
+class SeparateRingVolumePreferenceTest {
+ private var audioHelper = mock<AudioHelper>()
+ private var vibrator: Vibrator? = null
+ private var ringVolumePreference = SeparateRingVolumePreference()
+
+ private val context =
+ object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
+ override fun getSystemService(name: String): Any? =
+ when {
+ name == getSystemServiceName(Vibrator::class.java) -> vibrator
+ else -> super.getSystemService(name)
+ }
+ }
+
+ @Test
+ fun isAvailable_singleVolume_shouldReturnFalse() {
+ audioHelper = mock { on { isSingleVolume } doReturn true }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.isAvailable(context)).isFalse()
+ }
+
+ @Test
+ fun isAvailable_noSingleVolume_shouldReturnTrue() {
+ audioHelper = mock { on { isSingleVolume } doReturn false }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.isAvailable(context)).isTrue()
+ }
+
+ @Test
+ fun getEffectiveRingerMode_noVibratorAndVibrateMode_shouldReturnSilentMode() {
+ vibrator = mock { on { hasVibrator() } doReturn false }
+ audioHelper = mock { on { ringerModeInternal } doReturn RINGER_MODE_VIBRATE }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.getEffectiveRingerMode(context))
+ .isEqualTo(RINGER_MODE_SILENT)
+ }
+
+ @Test
+ fun getEffectiveRingerMode_hasVibratorAndVibrateMode_shouldReturnVibrateMode() {
+ vibrator = mock { on { hasVibrator() } doReturn true }
+ audioHelper = mock { on { ringerModeInternal } doReturn RINGER_MODE_VIBRATE }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.getEffectiveRingerMode(context))
+ .isEqualTo(RINGER_MODE_VIBRATE)
+ }
+
+ @Test
+ fun getEffectiveRingerMode_hasVibratorAndNormalMode_shouldReturnNormalMode() {
+ vibrator = mock { on { hasVibrator() } doReturn true }
+ audioHelper = mock { on { ringerModeInternal } doReturn RINGER_MODE_NORMAL }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.getEffectiveRingerMode(context))
+ .isEqualTo(RINGER_MODE_NORMAL)
+ }
+
+ @Test
+ fun getMuteIcon_normalMode_shouldReturnRingVolumeIcon() {
+ vibrator = mock { on { hasVibrator() } doReturn true }
+ audioHelper = mock { on { ringerModeInternal } doReturn RINGER_MODE_NORMAL }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.getMuteIcon(context)).isEqualTo(R.drawable.ic_ring_volume)
+ }
+
+ @Test
+ fun getMuteIcon_vibrateMode_shouldReturnVibrateIcon() {
+ vibrator = mock { on { hasVibrator() } doReturn true }
+ audioHelper = mock { on { ringerModeInternal } doReturn RINGER_MODE_VIBRATE }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.getMuteIcon(context))
+ .isEqualTo(R.drawable.ic_volume_ringer_vibrate)
+ }
+
+ @Test
+ fun getMuteIcon_silentMode_shouldReturnSilentIcon() {
+ vibrator = mock { on { hasVibrator() } doReturn false }
+ audioHelper = mock { on { ringerModeInternal } doReturn RINGER_MODE_VIBRATE }
+ ringVolumePreference =
+ spy(ringVolumePreference).stub {
+ onGeneric { createAudioHelper(context) } doReturn audioHelper
+ }
+
+ assertThat(ringVolumePreference.getMuteIcon(context))
+ .isEqualTo(R.drawable.ic_ring_volume_off)
+ }
+}
+// LINT.ThenChange(SeparateRingVolumePreferenceControllerTest.java)
diff --git a/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java
index 8b8c77e..a8de8ef 100644
--- a/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java
@@ -89,15 +89,6 @@
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mGroupList = new PreferenceCategory(mContext);
mPreferenceScreen.addPreference(mGroupList);
-
- when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID)).thenReturn(
- new NotificationChannel(PROMOTIONS_ID, PROMOTIONS_ID, 2));
- when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, NEWS_ID)).thenReturn(
- new NotificationChannel(NEWS_ID, NEWS_ID, 2));
- when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, SOCIAL_MEDIA_ID)).thenReturn(
- new NotificationChannel(SOCIAL_MEDIA_ID, SOCIAL_MEDIA_ID, 2));
- when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, RECS_ID)).thenReturn(
- new NotificationChannel(RECS_ID, RECS_ID, 2));
}
@Test
@@ -132,6 +123,14 @@
@Test
public void updateState() {
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID)).thenReturn(
+ new NotificationChannel(PROMOTIONS_ID, PROMOTIONS_ID, 2));
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, NEWS_ID)).thenReturn(
+ new NotificationChannel(NEWS_ID, NEWS_ID, 2));
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, SOCIAL_MEDIA_ID)).thenReturn(
+ new NotificationChannel(SOCIAL_MEDIA_ID, SOCIAL_MEDIA_ID, 2));
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, RECS_ID)).thenReturn(
+ new NotificationChannel(RECS_ID, RECS_ID, 2));
mController.updateState(mGroupList);
assertThat(mGroupList.getPreferenceCount()).isEqualTo(4);
assertThat(mGroupList.findPreference(PROMOTIONS_ID).getTitle()).isEqualTo(PROMOTIONS_ID);
@@ -142,19 +141,38 @@
}
@Test
- public void updateState_updateChildren() {
+ public void updateState_noBundles() {
mController.updateState(mGroupList);
- assertThat(mGroupList.getPreferenceCount()).isEqualTo(4);
+ assertThat(mGroupList.getPreferenceCount()).isEqualTo(0);
+ assertThat(mGroupList.isVisible()).isFalse();
+ }
+ @Test
+ public void updateState_onlySomeBundlesUsed() {
when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID)).thenReturn(
new NotificationChannel(PROMOTIONS_ID, PROMOTIONS_ID, 2));
+ mController.updateState(mGroupList);
+ assertThat(mGroupList.getPreferenceCount()).isEqualTo(1);
+ assertThat(mGroupList.findPreference(PROMOTIONS_ID).getTitle()).isEqualTo(PROMOTIONS_ID);
+ }
+
+ @Test
+ public void updateState_noDuplicateChannelsOnReload() {
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID)).thenReturn(
+ new NotificationChannel(PROMOTIONS_ID, PROMOTIONS_ID, 2));
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, NEWS_ID)).thenReturn(
+ new NotificationChannel(NEWS_ID, NEWS_ID, 2));
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, SOCIAL_MEDIA_ID)).thenReturn(
+ new NotificationChannel(SOCIAL_MEDIA_ID, SOCIAL_MEDIA_ID, 2));
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, RECS_ID)).thenReturn(
+ new NotificationChannel(RECS_ID, RECS_ID, 2));
mController.updateState(mGroupList);
assertThat(mGroupList.getPreferenceCount()).isEqualTo(4);
+ mController.updateState(mGroupList);
+ assertThat(mGroupList.getPreferenceCount()).isEqualTo(4);
assertThat(((PrimarySwitchPreference) mGroupList.findPreference(NEWS_ID)).isChecked())
.isEqualTo(false);
- assertThat(((PrimarySwitchPreference) mGroupList.findPreference(NEWS_ID)).isChecked())
- .isEqualTo(false);
}
}
diff --git a/tests/robotests/src/com/android/settings/notification/app/SoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/SoundPreferenceControllerTest.java
index 273bcdb..6ec3eb2 100644
--- a/tests/robotests/src/com/android/settings/notification/app/SoundPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/SoundPreferenceControllerTest.java
@@ -303,6 +303,26 @@
}
@Test
+ public void testOnPreferenceTreeClick_noAudioAttributes() {
+ NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
+ NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_HIGH);
+ channel.setSound(null, null);
+ mController.onResume(appRow, channel, null, null, null, null, null);
+
+ AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
+ NotificationSoundPreference pref =
+ spy(new NotificationSoundPreference(mContext, attributeSet));
+ pref.setKey(mController.getPreferenceKey());
+ mController.handlePreferenceTreeClick(pref);
+
+ ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(pref, times(1)).onPrepareRingtonePickerIntent(intentArgumentCaptor.capture());
+ assertEquals(RingtoneManager.TYPE_NOTIFICATION,
+ intentArgumentCaptor.getValue().getIntExtra(
+ RingtoneManager.EXTRA_RINGTONE_TYPE, 0));
+ }
+
+ @Test
public void testOnActivityResult() {
NotificationSoundPreference pref = mock(NotificationSoundPreference.class);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(pref);
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceControllerTest.java
index a7d52b1..f9601d7 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAllBypassingAppsPreferenceControllerTest.java
@@ -20,7 +20,6 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -28,10 +27,8 @@
import static org.mockito.Mockito.when;
import android.app.Flags;
-import android.app.NotificationChannel;
import android.content.Context;
import android.content.pm.ApplicationInfo;
-import android.content.pm.ParceledListSlice;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -39,7 +36,6 @@
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
-import com.android.settings.notification.NotificationBackend;
import com.android.settingslib.applications.ApplicationsState;
import org.junit.Before;
@@ -54,6 +50,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
@RunWith(RobolectricTestRunner.class)
@EnableFlags(Flags.FLAG_MODES_UI)
@@ -66,7 +63,7 @@
private Context mContext;
@Mock
- private NotificationBackend mBackend;
+ private ZenHelperBackend mBackend;
@Mock
private PreferenceCategory mPreferenceCategory;
@Mock
@@ -102,18 +99,25 @@
entry2.info.packageName = "test2";
entry2.info.uid = 0;
+ ApplicationsState.AppEntry entry3= mock(ApplicationsState.AppEntry.class);
+ entry3.info = new ApplicationInfo();
+ entry3.info.packageName = "test3";
+ entry3.info.uid = 0;
+
List<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(entry1);
appEntries.add(entry2);
- List<NotificationChannel> channelsBypassing = new ArrayList<>();
- channelsBypassing.add(mock(NotificationChannel.class));
- channelsBypassing.add(mock(NotificationChannel.class));
- when(mBackend.getNotificationChannelsBypassingDnd(anyString(),
- anyInt())).thenReturn(new ParceledListSlice<>(channelsBypassing));
+ appEntries.add(entry3);
+ when(mBackend.getPackagesBypassingDnd(anyInt())).thenReturn(
+ Map.of("test", true, "test2", false));
// THEN there's are two preferences
mController.updateAppList(appEntries);
- verify(mPreferenceCategory, times(2)).addPreference(any());
+ ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
+ verify(mPreferenceCategory, times(2)).addPreference(captor.capture());
+ List<Preference> prefs = captor.getAllValues();
+ assertThat(prefs.get(0).getSummary().toString()).isEqualTo("All notifications");
+ assertThat(prefs.get(1).getSummary().toString()).isEqualTo("Some notifications");
}
@Test
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java
index fa83f30..e747b42 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java
@@ -77,6 +77,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Random;
@RunWith(RobolectricTestRunner.class)
@@ -200,8 +201,8 @@
ApplicationsState.AppEntry app2 = createAppEntry("app2", mContext.getUserId());
List<ApplicationsState.AppEntry> allApps = List.of(app1, app2);
- when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId(),
- false)).thenReturn(List.of("app1"));
+ when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId())).thenReturn(
+ Map.of("app1", true));
assertThat(mController.getAppsBypassingDndSortedByName(allApps)).containsExactly(app1);
}
@@ -213,8 +214,8 @@
ApplicationsState.AppEntry appB = createAppEntry("B", mContext.getUserId());
List<ApplicationsState.AppEntry> allApps = List.of(appC, appA, appB);
- when(mHelperBackend.getPackagesBypassingDnd(eq(mContext.getUserId()), anyBoolean()))
- .thenReturn(List.of("B", "C", "A"));
+ when(mHelperBackend.getPackagesBypassingDnd(eq(mContext.getUserId())))
+ .thenReturn(Map.of("B", true, "C", false, "A", true));
assertThat(mController.getAppsBypassingDndSortedByName(allApps))
.containsExactly(appA, appB, appC).inOrder();
@@ -234,10 +235,10 @@
List<ApplicationsState.AppEntry> allApps = List.of(workCopy, personalCopy, otherPersonal,
otherWork);
- when(mHelperBackend.getPackagesBypassingDnd(eq(mContext.getUserId()), anyBoolean()))
- .thenReturn(List.of("app", "p2"));
- when(mHelperBackend.getPackagesBypassingDnd(eq(10), anyBoolean()))
- .thenReturn(List.of("app"));
+ when(mHelperBackend.getPackagesBypassingDnd(eq(mContext.getUserId())))
+ .thenReturn(Map.of("app", true, "p2", true));
+ when(mHelperBackend.getPackagesBypassingDnd(eq(10)))
+ .thenReturn(Map.of("app", false));
// Personal copy before work copy (names match).
assertThat(mController.getAppsBypassingDndSortedByName(allApps))
@@ -253,7 +254,7 @@
mController.updateState(mPreference, zenMode);
verifyNoMoreInteractions(mSession);
- verify(mHelperBackend, never()).getPackagesBypassingDnd(anyInt(), anyBoolean());
+ verify(mHelperBackend, never()).getPackagesBypassingDnd(anyInt());
assertThat(String.valueOf(mPreference.getSummary())).isEqualTo("None");
}
@@ -266,9 +267,8 @@
ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(createAppEntry("test", mContext.getUserId()));
- when(mHelperBackend.getPackagesBypassingDnd(
- mContext.getUserId(), false))
- .thenReturn(List.of("test"));
+ when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId()))
+ .thenReturn(Map.of("test", false));
// Updates the preference with the zen mode. We expect that this causes the app session
// to trigger a rebuild (and display a temporary text in the meantime).
@@ -286,8 +286,8 @@
ZenMode zenMode = createPriorityChannelsZenMode();
mController.updateState(mPreference, zenMode);
- when(mHelperBackend.getPackagesBypassingDnd(anyInt(), anyBoolean()))
- .thenReturn(ImmutableList.of("test1", "test2"));
+ when(mHelperBackend.getPackagesBypassingDnd(anyInt()))
+ .thenReturn(Map.of("test1", false, "test2", false));
ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(createAppEntry("test1", mContext.getUserId()));
appEntries.add(createAppEntry("test2", mContext.getUserId()));
@@ -328,8 +328,8 @@
.build();
ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(createAppEntry("test", mContext.getUserId()));
- when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId(), false))
- .thenReturn(List.of("test"));
+ when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId()))
+ .thenReturn(Map.of("test", true));
mController.updateState(mPreference, zenModeWithNone);
@@ -355,8 +355,8 @@
.build();
ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(createAppEntry("test", mContext.getUserId()));
- when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId(), false))
- .thenReturn(List.of("test"));
+ when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId()))
+ .thenReturn(Map.of("test", true));
mController.updateState(mPreference, zenModeWithPriority);
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceControllerTest.java
index 486a880..65aede6 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceControllerTest.java
@@ -1546,6 +1546,21 @@
}
@Test
+ public void contactsSettingsClick_singleProfile_opensActivityWithoutDialog() {
+ String contactsPackage = mContext.getString(R.string.config_contacts_package_name);
+ setUpContactsApp(contactsPackage, /* withPreciseIntents= */ true);
+
+ mCallsController.displayPreference(mPreferenceScreen);
+ mCallsController.updateZenMode(mCallsPrefCategory, TestModeBuilder.EXAMPLE);
+ SelectorWithWidgetPreference contactsPref = getBoundSelectorPreference(KEY_CONTACTS);
+
+ contactsPref.getExtraWidget().performClick();
+
+ assertThat(ShadowDialog.getLatestDialog()).isNull();
+ assertThat(shadowOf(mActivity).getNextStartedActivity()).isNotNull();
+ }
+
+ @Test
public void contactsSettingsClick_multipleProfiles_showsProfileChooserDialog() {
String contactsPackage = mContext.getString(R.string.config_contacts_package_name);
setUpContactsApp(contactsPackage, /* withPreciseIntents= */ true);
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSummaryHelperTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSummaryHelperTest.java
index a0e1d38..d222a8b 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSummaryHelperTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSummaryHelperTest.java
@@ -29,7 +29,6 @@
import static org.robolectric.Shadows.shadowOf;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -38,9 +37,7 @@
import android.os.UserManager;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.SystemZenRules;
import android.service.notification.ZenDeviceEffects;
-import android.service.notification.ZenModeConfig;
import android.service.notification.ZenPolicy;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -476,46 +473,73 @@
}
@Test
- public void getModesSummary_noRules_noSummary() {
+ public void getModesSummary_noModesWtf_fallbackSummary() {
String summary = mSummaryHelper.getModesSummary(ImmutableList.of());
- assertThat(summary).isEmpty();
+ assertThat(summary).isEqualTo("Do Not Disturb");
}
@Test
- public void getModesSummary_onlyDndAndNotActive_noSummary() {
- ImmutableList<ZenMode> modes = ImmutableList.of(TestModeBuilder.MANUAL_DND_INACTIVE);
- String summary = mSummaryHelper.getModesSummary(modes);
- assertThat(summary).isEmpty();
- }
-
- @Test
- public void getModesSummary_noRulesActive_countsOnlyEnabledAutomaticModes() {
+ public void getModesSummary_oneMode_listsMode() {
ImmutableList<ZenMode> modes = ImmutableList.of(
- TestModeBuilder.MANUAL_DND_INACTIVE, // Not automatic
- new TestModeBuilder().setName("Auto 1").build(), // App provided automatic
- new TestModeBuilder()
- .setName("Custom manual 1")
- .setPackage(SystemZenRules.PACKAGE_ANDROID)
- .setType(AutomaticZenRule.TYPE_OTHER)
- .setConditionId(ZenModeConfig.toCustomManualConditionId())
- .build(), // Custom manual, not automatic
- new TestModeBuilder()
- .setName("Disabled 1")
- .setEnabled(false)
- .build(), // Would be automatic, but it's disabled.
- new TestModeBuilder()
- .setName("Sleep")
- .setPackage(SystemZenRules.PACKAGE_ANDROID)
- .setType(AutomaticZenRule.TYPE_SCHEDULE_TIME)
- .build() // Time based, automatic.
+ new TestModeBuilder().setName("Surfing").build()
);
String summary = mSummaryHelper.getModesSummary(modes);
- assertThat(summary).isEqualTo("2 modes can turn on automatically");
+ assertThat(summary).isEqualTo("Surfing");
}
@Test
- public void getModesSummary_oneModeActive_listsMode() {
+ public void getModesSummary_twoModes_listsModes() {
+ ImmutableList<ZenMode> modes = ImmutableList.of(
+ new TestModeBuilder().setName("Cartwheeling").build(),
+ new TestModeBuilder().setName("Hula-hooping").build()
+ );
+
+ String summary = mSummaryHelper.getModesSummary(modes);
+ assertThat(summary).isEqualTo("Cartwheeling, Hula-hooping");
+ }
+
+ @Test
+ public void getModesSummary_threeModes_listsModes() {
+ ImmutableList<ZenMode> modes = ImmutableList.of(
+ new TestModeBuilder().setName("Prancing").build(),
+ new TestModeBuilder().setName("Hopping").build(),
+ new TestModeBuilder().setName("Skipping").build()
+ );
+
+ String summary = mSummaryHelper.getModesSummary(modes);
+ assertThat(summary).isEqualTo("Prancing, Hopping, Skipping");
+ }
+
+ @Test
+ public void getModesSummary_manyModes_listsThreeModes() {
+ ImmutableList<ZenMode> modes = ImmutableList.of(
+ new TestModeBuilder().setName("Juggling").build(),
+ new TestModeBuilder().setName("Rhyming").build(),
+ new TestModeBuilder().setName("Meandering").build(),
+ new TestModeBuilder().setName("Doodling").build(),
+ new TestModeBuilder().setName("Whistling").build(),
+ new TestModeBuilder().setName("Lounging").build()
+ );
+
+ String summary = mSummaryHelper.getModesSummary(modes);
+ assertThat(summary).isEqualTo("Juggling, Rhyming, Meandering");
+ }
+
+ @Test
+ public void getModesSummary_excludesImplicitModes() {
+ ImmutableList<ZenMode> modes = ImmutableList.of(
+ TestModeBuilder.MANUAL_DND_INACTIVE,
+ new TestModeBuilder().implicitForPackage("com.annoying.one").build(),
+ new TestModeBuilder().setName("Chirping").build()
+ );
+
+ String summary = mSummaryHelper.getModesSummary(modes);
+ assertThat(summary).isEqualTo("Do Not Disturb, Chirping");
+ }
+
+ @Test
+ public void getModesSummary_oneModeActive_listsActiveMode() {
ImmutableList<ZenMode> modes = ImmutableList.of(
TestModeBuilder.MANUAL_DND_ACTIVE,
new TestModeBuilder().setName("Inactive").setActive(false).build());
@@ -525,7 +549,7 @@
}
@Test
- public void getModesSummary_twoModesActive_listsModes() {
+ public void getModesSummary_twoModesActive_listsActiveModes() {
ImmutableList<ZenMode> modes = ImmutableList.of(
TestModeBuilder.MANUAL_DND_ACTIVE,
new TestModeBuilder().setName("Inactive").setActive(false).build(),
@@ -536,7 +560,7 @@
}
@Test
- public void getModesSummary_threeModesActive_listsModes() {
+ public void getModesSummary_threeModesActive_listsActiveModes() {
ImmutableList<ZenMode> modes = ImmutableList.of(
TestModeBuilder.MANUAL_DND_INACTIVE,
new TestModeBuilder().setName("Inactive #1").setActive(false).build(),
@@ -550,7 +574,7 @@
}
@Test
- public void getModesSummary_manyModesActive_listsACouple() {
+ public void getModesSummary_manyModesActive_listsSomeActiveModes() {
ImmutableList<ZenMode> modes = ImmutableList.of(
TestModeBuilder.MANUAL_DND_ACTIVE,
new TestModeBuilder().setName("Inactive #1").setActive(false).build(),
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java
index b7af71b..d916dcf 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java
@@ -44,6 +44,8 @@
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.SystemZenRules;
import android.service.notification.ZenModeConfig;
+import android.text.Spanned;
+import android.text.style.TtsSpan;
import android.widget.TextView;
import androidx.preference.PreferenceManager;
@@ -293,7 +295,14 @@
assertThat(mPreference.isVisible()).isTrue();
assertThat(mPreference.getTitle()).isEqualTo("1:00 AM - 3:00 PM");
- assertThat(mPreference.getSummary()).isEqualTo("Mon - Tue, Thu");
+ Spanned summary = (Spanned) mPreference.getSummary();
+ assertThat(summary.toString()).isEqualTo("Mon - Tue, Thu");
+ TtsSpan[] ttsSpans = summary.getSpans(0, summary.length(), TtsSpan.class);
+ assertThat(ttsSpans).hasLength(1);
+ assertThat(ttsSpans[0].getType()).isEqualTo(TtsSpan.TYPE_TEXT);
+ assertThat(ttsSpans[0].getArgs().getString(TtsSpan.ARG_TEXT)).isEqualTo(
+ "Monday to Tuesday, Thursday");
+
// Destination as written into the intent by SubSettingLauncher
assertThat(
mPreference.getIntent().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java
index 3722e41..4f96bf6 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java
@@ -16,12 +16,19 @@
package com.android.settings.notification.modes;
+import static android.app.AutomaticZenRule.TYPE_SCHEDULE_TIME;
+import static android.service.notification.SystemZenRules.PACKAGE_ANDROID;
+
import static com.google.common.truth.Truth.assertThat;
import android.app.Flags;
import android.content.Context;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
+import android.service.notification.SystemZenRules;
+import android.service.notification.ZenModeConfig;
+import android.text.Spanned;
+import android.text.style.TtsSpan;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenIconLoader;
@@ -37,6 +44,8 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+import java.util.Calendar;
+
@RunWith(RobolectricTestRunner.class)
@EnableFlags(Flags.FLAG_MODES_UI)
public class ZenModesListItemPreferenceTest {
@@ -122,6 +131,31 @@
assertThat(preference.getIcon()).isNotNull();
}
+ @Test
+ public void setZenMode_scheduleTime_hasCustomTtsInSummary() {
+ ZenModeConfig.ScheduleInfo scheduleInfo = new ZenModeConfig.ScheduleInfo();
+ scheduleInfo.days = new int[] { Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY };
+ scheduleInfo.startHour = 11;
+ scheduleInfo.endHour = 15;
+ ZenMode mode = new TestModeBuilder()
+ .setPackage(PACKAGE_ANDROID)
+ .setType(TYPE_SCHEDULE_TIME)
+ .setConditionId(ZenModeConfig.toScheduleConditionId(scheduleInfo))
+ .setTriggerDescription(
+ SystemZenRules.getTriggerDescriptionForScheduleTime(mContext, scheduleInfo))
+ .build();
+
+ ZenModesListItemPreference preference = newPreference(mode);
+
+ assertThat(preference.getSummary()).isInstanceOf(Spanned.class);
+ Spanned summary = (Spanned) preference.getSummary();
+ TtsSpan[] ttsSpans = summary.getSpans(0, summary.length(), TtsSpan.class);
+ assertThat(ttsSpans).hasLength(1);
+ assertThat(ttsSpans[0].getType()).isEqualTo(TtsSpan.TYPE_TEXT);
+ assertThat(ttsSpans[0].getArgs().getString(TtsSpan.ARG_TEXT)).isEqualTo(
+ "Monday to Wednesday, 11:00 AM - 3:00 PM");
+ }
+
private ZenModesListItemPreference newPreference(ZenMode zenMode) {
return new ZenModesListItemPreference(mContext, mIconLoader, MoreExecutors.directExecutor(),
zenMode);
diff --git a/tests/robotests/src/com/android/settings/shortcut/CreateShortcutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/shortcut/CreateShortcutPreferenceControllerTest.java
index 8442a37..379bf5d 100644
--- a/tests/robotests/src/com/android/settings/shortcut/CreateShortcutPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/shortcut/CreateShortcutPreferenceControllerTest.java
@@ -116,7 +116,6 @@
.isEqualTo(SHORTCUT_ID_PREFIX + intent.getComponent().flattenToShortString());
}
- @Ignore("b/314924127")
@Test
public void queryShortcuts_shouldOnlyIncludeSystemApp() {
final ResolveInfo ri1 = new ResolveInfo();
@@ -137,10 +136,11 @@
doReturn(false).when(mController).canShowWifiHotspot();
final List<ResolveInfo> info = mController.queryShortcuts();
assertThat(info).hasSize(1);
- assertThat(info.get(0).activityInfo).isEqualTo(ri2.activityInfo);
+ final ActivityInfo resultActivityInfo = info.get(0).activityInfo;
+ assertThat(resultActivityInfo.name).isEqualTo(ri2.activityInfo.name);
+ assertThat(resultActivityInfo.applicationInfo.isSystemApp()).isTrue();
}
- @Ignore("b/314924127")
@Test
public void queryShortcuts_shouldSortBasedOnPriority() {
final ResolveInfo ri1 = new ResolveInfo();
@@ -164,8 +164,12 @@
doReturn(false).when(mController).canShowWifiHotspot();
final List<ResolveInfo> info = mController.queryShortcuts();
assertThat(info).hasSize(2);
- assertThat(info.get(0).activityInfo).isEqualTo(ri2.activityInfo);
- assertThat(info.get(1).activityInfo).isEqualTo(ri1.activityInfo);
+
+ final ResolveInfo resultRi1 = info.get(0);
+ assertThat(resultRi1.activityInfo.name).isEqualTo(ri2.activityInfo.name);
+ final ResolveInfo resultRi2 = info.get(1);
+ assertThat(resultRi2.activityInfo.name).isEqualTo(ri1.activityInfo.name);
+ assertThat(resultRi1.priority).isLessThan(resultRi2.priority);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java b/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java
index 9b5f452..3bea65d 100644
--- a/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java
+++ b/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java
@@ -48,7 +48,6 @@
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -210,7 +209,6 @@
verify(mActivity, times(1)).finish();
}
- @Ignore("b/313615637")
@Test
public void testNotFinishedIfAdmin() {
mUserManager.setIsAdminUser(true);
diff --git a/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java b/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java
index 03684ad..b5dfc31 100644
--- a/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java
@@ -231,7 +231,7 @@
assertThat(mAdapter.mFadeInAnimated).isTrue();
assertThat(mViewHolder.itemView.getBackground()).isInstanceOf(ColorDrawable.class);
assertThat(mViewHolder.itemView.getTag(R.id.preference_highlighted)).isEqualTo(true);
- verify(mAdapter).requestRemoveHighlightDelayed(mViewHolder);
+ verify(mAdapter).requestRemoveHighlightDelayed(mViewHolder, 10);
}
@Test
@@ -256,14 +256,14 @@
// through animation.
assertThat(mAdapter.mFadeInAnimated).isTrue();
// remove highlight should be requested.
- verify(mAdapter).requestRemoveHighlightDelayed(mViewHolder);
+ verify(mAdapter).requestRemoveHighlightDelayed(mViewHolder, 10);
ReflectionHelpers.setField(mAdapter, "mHighlightPosition", 10);
mAdapter.updateBackground(mViewHolder, 10);
// only sets background color once - if it's animation this would be called many times
- verify(mViewHolder.itemView).setBackgroundColor(mAdapter.mHighlightColor);
+ verify(mViewHolder.itemView).setBackgroundResource(mAdapter.mHighlightBackgroundRes);
// remove highlight should be requested.
- verify(mAdapter, times(2)).requestRemoveHighlightDelayed(mViewHolder);
+ verify(mAdapter, times(2)).requestRemoveHighlightDelayed(mViewHolder, 10);
}
@Test
@@ -273,7 +273,8 @@
mAdapter.updateBackground(mViewHolder, 0);
- assertThat(mViewHolder.itemView.getBackground()).isNotInstanceOf(ColorDrawable.class);
+ assertThat(mViewHolder.itemView.getBackground())
+ .isNotEqualTo(mAdapter.mHighlightBackgroundRes);
assertThat(mViewHolder.itemView.getTag(R.id.preference_highlighted)).isEqualTo(false);
}
}
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingScreenTest.kt b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingScreenTest.kt
new file mode 100644
index 0000000..474e304
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingScreenTest.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2024 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.settings.wifi.calling
+
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+
+class WifiCallingScreenTest : CatalystScreenTestCase() {
+
+ override val preferenceScreenCreator = WifiCallingScreen()
+
+ override val flagName: String
+ get() = Flags.FLAG_CATALYST_WIFI_CALLING
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(WifiCallingScreen.KEY)
+ }
+
+ override fun migration() {}
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index 4440bc9..283083e 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -49,6 +49,7 @@
import android.view.View;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -90,6 +91,7 @@
private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description";
private static final String TEST_EMERGENCY_ADDRESS_CARRIER_APP =
"com.android.settings/.wifi.calling.TestEmergencyAddressCarrierApp";
+ private static final String PREFERENCE_EMERGENCY_ADDRESS = "emergency_address_key";
private TestFragment mFragment;
private Context mContext;
@@ -138,6 +140,7 @@
doReturn(mContext.getResources()).when(mFragment).getResources();
doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
+ doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner();
final Bundle bundle = new Bundle();
when(mFragment.getArguments()).thenReturn(bundle);
doNothing().when(mFragment).addPreferencesFromResource(anyInt());
@@ -380,19 +383,27 @@
@Override
public <T extends Preference> T findPreference(CharSequence key) {
- if (SWITCH_BAR.equals(key)) {
+ if (SWITCH_BAR.contentEquals(key)) {
return (T) mSwitchPref;
}
- if (BUTTON_WFC_MODE.equals(key)) {
+ if (BUTTON_WFC_MODE.contentEquals(key)) {
return (T) mButtonWfcMode;
}
- if (BUTTON_WFC_ROAMING_MODE.equals(key)) {
+ if (BUTTON_WFC_ROAMING_MODE.contentEquals(key)) {
return (T) mButtonWfcRoamingMode;
}
- if (PREFERENCE_NO_OPTIONS_DESC.equals(key)) {
+ if (PREFERENCE_NO_OPTIONS_DESC.contentEquals(key)) {
return (T) mDescriptionView;
}
- return (T) mock(ListWithEntrySummaryPreference.class);
+ if (PREFERENCE_EMERGENCY_ADDRESS.contentEquals(key)) {
+ return (T) mUpdateAddress;
+ }
+ return null;
+ }
+
+ @Override
+ public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+ return null;
}
@Override
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java
index 0982f26..32e3a61 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java
@@ -147,8 +147,8 @@
}
@Test
- public void onSwitchChanged_switchNotEnabled_doNothingForTethering() {
- when(mSwitch.isEnabled()).thenReturn(false);
+ public void onSwitchChanged_switchIsBusy_doNothingForTethering() {
+ mController.mIsSwitchBusy = true;
mController.onCheckedChanged(mSwitch, true);
diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt
index a5d0461..2f68521 100644
--- a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt
+++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt
@@ -29,6 +29,7 @@
import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor
import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor
import com.android.settings.biometrics.fingerprint2.lib.model.Default
+import com.android.settings.biometrics.fingerprint2.lib.model.Orientation
import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSIconTouchViewModel
import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSViewModel
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel
@@ -78,6 +79,7 @@
override val isEnabled: Boolean
get() = true
override fun announce(clazz: Class<*>, announcement: CharSequence?) {}
+ override fun interrupt() {}
}
var foldStateInteractor =
@@ -97,6 +99,7 @@
override val rotationFromDefault: Flow<Int> = rotation
override fun getRotationFromDefault(rotation: Int): Int = rotation
+ override val orientationChanged: Flow<Orientation> = flowOf(Orientation.Portrait)
}
var gatekeeperViewModel = FingerprintGatekeeperViewModel(fingerprintManagerInteractor)
diff --git a/tests/spa_unit/src/com/android/settings/network/SimOnboardingServiceTest.kt b/tests/spa_unit/src/com/android/settings/network/SimOnboardingServiceTest.kt
index 6f9029e..676ac48 100644
--- a/tests/spa_unit/src/com/android/settings/network/SimOnboardingServiceTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/SimOnboardingServiceTest.kt
@@ -16,21 +16,55 @@
package com.android.settings.network
+import android.content.Context
import android.telephony.SubscriptionInfo
+import android.telephony.SubscriptionManager
+import android.telephony.TelephonyManager
+import android.telephony.UiccCardInfo
+import android.telephony.UiccPortInfo
+import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
-import org.junit.Rule
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.stub
+
@RunWith(AndroidJUnit4::class)
class SimOnboardingServiceTest {
+ val simOnboardingService = SimOnboardingService()
+
+ private val mockTelephonyManager = mock<TelephonyManager> {
+ on { activeModemCount } doReturn 2
+ on { isMultiSimSupported } doReturn TelephonyManager.MULTISIM_ALLOWED
+ on { uiccCardsInfo } doReturn mepUiccCardInfoList
+ }
+
+ private val mockSubscriptionManager = mock<SubscriptionManager> {
+ on { activeSubscriptionInfoList } doReturn listOf(
+ SUB_INFO_1,
+ SUB_INFO_2
+ )
+ on { availableSubscriptionInfoList } doReturn listOf(
+ SUB_INFO_1,
+ SUB_INFO_2,
+ SUB_INFO_3,
+ )
+ }
+
+ private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+ on { getSystemService(SubscriptionManager::class.java) } doReturn mockSubscriptionManager
+ on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
+ }
@Test
fun addItemForRenaming_addItemWithNewName_findItem() {
- val simOnboardingService = SimOnboardingService()
val newName = "NewName"
-
simOnboardingService.addItemForRenaming(SUB_INFO_1, newName)
assertThat(simOnboardingService.renameMutableMap)
@@ -39,8 +73,6 @@
@Test
fun addItemForRenaming_sameNameAndItemNotInList_removeItem() {
- val simOnboardingService = SimOnboardingService()
-
simOnboardingService.addItemForRenaming(SUB_INFO_1, DISPLAY_NAME_1)
assertThat(simOnboardingService.renameMutableMap)
@@ -49,7 +81,6 @@
@Test
fun addItemForRenaming_sameNameAndItemInList_removeItem() {
- val simOnboardingService = SimOnboardingService()
simOnboardingService.renameMutableMap[SUB_INFO_1.subscriptionId] = "NewName"
simOnboardingService.addItemForRenaming(SUB_INFO_1, DISPLAY_NAME_1)
@@ -58,13 +89,205 @@
.doesNotContainKey(SUB_INFO_1.subscriptionId)
}
+ @Test
+ fun isDsdsConditionSatisfied_isMultiSimEnabled_returnFalse(){
+ simOnboardingService.initData(SUB_ID_3, context, {})
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isFalse()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_isNotMultiSimSupported_returnFalse() {
+ mockTelephonyManager.stub {
+ on { activeModemCount } doReturn 1
+ on {
+ isMultiSimSupported
+ } doReturn TelephonyManager.MULTISIM_NOT_SUPPORTED_BY_HARDWARE
+ }
+ simOnboardingService.initData(SUB_ID_3, context, {})
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isFalse()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_mepAndOneActiveSim_returnTrue() = runBlocking {
+ mockTelephonyManager.stub {
+ on { activeModemCount } doReturn 1
+ }
+ simOnboardingService.initData(SUB_ID_3, context, {})
+ delay(100)
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isTrue()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_mepAndNoActiveSim_returnFalse() = runBlocking {
+ mockTelephonyManager.stub {
+ on { activeModemCount } doReturn 1
+ }
+ mockSubscriptionManager.stub {
+ on { activeSubscriptionInfoList } doReturn listOf()
+ }
+ simOnboardingService.initData(SUB_ID_3, context, {})
+ delay(100)
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isFalse()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_insertEsimAndOneActivePsimNoMep_returnTrue() = runBlocking {
+ mockTelephonyManager.stub {
+ on { getActiveModemCount() } doReturn 1
+ on { uiccCardsInfo } doReturn noMepUiccCardInfoList
+ }
+ simOnboardingService.initData(SUB_ID_3, context, {})
+ delay(100)
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isTrue()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_insertEsimAndNoPsimNoMep_returnFalse() = runBlocking {
+ mockTelephonyManager.stub {
+ on { getActiveModemCount() } doReturn 1
+ on { uiccCardsInfo } doReturn noMepUiccCardInfoList
+ }
+ mockSubscriptionManager.stub {
+ on { activeSubscriptionInfoList } doReturn listOf()
+ }
+ simOnboardingService.initData(SUB_ID_3, context, {})
+ delay(100)
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isFalse()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_insertPsimAndOneActiveEsimNoMep_returnTrue() = runBlocking {
+ mockTelephonyManager.stub {
+ on { getActiveModemCount() } doReturn 1
+ on { uiccCardsInfo } doReturn noMepUiccCardInfoList
+ }
+ mockSubscriptionManager.stub {
+ on { activeSubscriptionInfoList } doReturn listOf(
+ SUB_INFO_2
+ )
+ }
+ simOnboardingService.initData(SUB_ID_1, context, {})
+ delay(100)
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isTrue()
+ }
+
+ @Test
+ fun isDsdsConditionSatisfied_insertPsimAndNoEsimNoMep_returnFalse() = runBlocking {
+ mockTelephonyManager.stub {
+ on { getActiveModemCount() } doReturn 1
+ on { uiccCardsInfo } doReturn noMepUiccCardInfoList
+ }
+ mockSubscriptionManager.stub {
+ on { activeSubscriptionInfoList } doReturn listOf()
+ }
+ simOnboardingService.initData(SUB_ID_1, context, {})
+ delay(100)
+
+ assertThat(simOnboardingService.isDsdsConditionSatisfied()).isFalse()
+ }
+
private companion object {
const val SUB_ID_1 = 1
+ const val SUB_ID_2 = 2
+ const val SUB_ID_3 = 3
+ const val SUB_ID_4 = 4
const val DISPLAY_NAME_1 = "Sub 1"
val SUB_INFO_1: SubscriptionInfo = SubscriptionInfo.Builder().apply {
setId(SUB_ID_1)
setDisplayName(DISPLAY_NAME_1)
}.build()
+
+ val SUB_INFO_2: SubscriptionInfo = SubscriptionInfo.Builder().apply {
+ setId(SUB_ID_2)
+ setEmbedded(true)
+ }.build()
+
+ val SUB_INFO_3: SubscriptionInfo = SubscriptionInfo.Builder().apply {
+ setId(SUB_ID_3)
+ setEmbedded(true)
+ }.build()
+
+ val SUB_INFO_4: SubscriptionInfo = SubscriptionInfo.Builder().apply {
+ setId(SUB_ID_4)
+ }.build()
+
+ private const val REMOVABLE_CARD_ID_1: Int = 25
+ private const val REMOVABLE_CARD_ID_2: Int = 26
+ private const val EUICC_CARD_ID_3: Int = 27
+ private const val EUICC_CARD_ID_4: Int = 28
+
+ val noMepUiccCardInfoList: List<UiccCardInfo> = listOf(
+ createUiccCardInfo(
+ isEuicc = true,
+ cardId = EUICC_CARD_ID_3,
+ physicalSlotIndex = 0,
+ isRemovable = false,
+ isMultipleEnabledProfileSupported = false,
+ logicalSlotIndex = -1,
+ portIndex = -1
+ ),
+ createUiccCardInfo(
+ isEuicc = false,
+ cardId = REMOVABLE_CARD_ID_1,
+ physicalSlotIndex = 1,
+ isRemovable = true,
+ isMultipleEnabledProfileSupported = false,
+ logicalSlotIndex = -1,
+ portIndex = -1
+ )
+ )
+ val mepUiccCardInfoList: List<UiccCardInfo> = listOf(
+ createUiccCardInfo(
+ isEuicc = true,
+ cardId = EUICC_CARD_ID_3,
+ physicalSlotIndex = 0,
+ isRemovable = false,
+ logicalSlotIndex = -1,
+ portIndex = -1
+ ),
+ createUiccCardInfo(
+ isEuicc = false,
+ cardId = REMOVABLE_CARD_ID_1,
+ physicalSlotIndex = 1,
+ isRemovable = true,
+ logicalSlotIndex = -1,
+ portIndex = -1
+ )
+ )
+
+ private fun createUiccCardInfo(
+ isEuicc: Boolean,
+ cardId: Int,
+ physicalSlotIndex: Int,
+ isRemovable: Boolean,
+ logicalSlotIndex: Int,
+ portIndex: Int,
+ isMultipleEnabledProfileSupported:Boolean = true,
+ ): UiccCardInfo {
+ return UiccCardInfo(
+ isEuicc, /* isEuicc */
+ cardId, /* cardId */
+ null, /* eid */
+ physicalSlotIndex, /* physicalSlotIndex */
+ isRemovable, /* isRemovable */
+ isMultipleEnabledProfileSupported, /* isMultipleEnabledProfileSupported */
+ listOf(
+ UiccPortInfo(
+ "123451234567890", /* iccId */
+ portIndex, /* portIdx */
+ logicalSlotIndex, /* logicalSlotIdx */
+ true /* isActive */
+ )
+ )
+ )
+ }
}
}
\ No newline at end of file
diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnTypesTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnTypesTest.kt
index ce0d0f5..13b5167 100644
--- a/tests/spa_unit/src/com/android/settings/network/apn/ApnTypesTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnTypesTest.kt
@@ -91,6 +91,68 @@
assertThat(apnType).isEqualTo("default,mms,supl,hipri,fota,cbs,xcap")
}
+ @Test
+ fun hasAllApnTypes_allString() {
+ val apnTypes = listOf(ApnSetting.TYPE_ALL_STRING)
+
+ val hasAllApnTypes = ApnTypes.hasAllApnTypes(apnTypes)
+
+ assertThat(hasAllApnTypes).isTrue()
+ }
+
+ @Test
+ fun hasAllApnTypes_allTypes() {
+ val apnTypes = listOf(
+ ApnSetting.TYPE_DEFAULT_STRING,
+ ApnSetting.TYPE_MMS_STRING,
+ ApnSetting.TYPE_SUPL_STRING,
+ ApnSetting.TYPE_DUN_STRING,
+ ApnSetting.TYPE_HIPRI_STRING,
+ ApnSetting.TYPE_FOTA_STRING,
+ ApnSetting.TYPE_IMS_STRING,
+ ApnSetting.TYPE_CBS_STRING,
+ ApnSetting.TYPE_IA_STRING,
+ ApnSetting.TYPE_EMERGENCY_STRING,
+ ApnSetting.TYPE_MCX_STRING,
+ ApnSetting.TYPE_XCAP_STRING,
+ ApnSetting.TYPE_VSIM_STRING,
+ ApnSetting.TYPE_BIP_STRING,
+ ApnSetting.TYPE_ENTERPRISE_STRING,
+ ApnSetting.TYPE_OEM_PAID_STRING,
+ ApnSetting.TYPE_OEM_PRIVATE_STRING,
+ )
+
+ val hasAllApnTypes = ApnTypes.hasAllApnTypes(apnTypes)
+
+ assertThat(hasAllApnTypes).isTrue()
+ }
+
+ @Test
+ fun hasAllApnTypes_allTypesExceptDefault() {
+ val apnTypes = listOf(
+ ApnSetting.TYPE_MMS_STRING,
+ ApnSetting.TYPE_SUPL_STRING,
+ ApnSetting.TYPE_DUN_STRING,
+ ApnSetting.TYPE_HIPRI_STRING,
+ ApnSetting.TYPE_FOTA_STRING,
+ ApnSetting.TYPE_IMS_STRING,
+ ApnSetting.TYPE_CBS_STRING,
+ ApnSetting.TYPE_IA_STRING,
+ ApnSetting.TYPE_EMERGENCY_STRING,
+ ApnSetting.TYPE_MCX_STRING,
+ ApnSetting.TYPE_XCAP_STRING,
+ ApnSetting.TYPE_VSIM_STRING,
+ ApnSetting.TYPE_BIP_STRING,
+ ApnSetting.TYPE_ENTERPRISE_STRING,
+ ApnSetting.TYPE_OEM_PAID_STRING,
+ ApnSetting.TYPE_OEM_PRIVATE_STRING,
+ )
+
+ val hasAllApnTypes = ApnTypes.hasAllApnTypes(apnTypes)
+
+ assertThat(hasAllApnTypes).isFalse()
+ }
+
private companion object {
const val APN_TYPE = "type"
}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
index 4d53260..75c1913 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
@@ -17,6 +17,7 @@
package com.android.settings.network.telephony
import android.content.Context
+import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
import android.telephony.TelephonyManager
import android.telephony.data.ApnSetting
@@ -26,6 +27,7 @@
import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
import com.google.common.truth.Truth.assertThat
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.doReturn
@@ -63,6 +65,21 @@
getDefaultDataSubId = { defaultDataSubId },
)
+ @Before
+ fun setUp() {
+ CarrierConfigRepository.resetForTest()
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_1_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = true,
+ )
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_2_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = true,
+ )
+ }
+
@Test
fun getAvailabilityStatus_invalidSubscription_unavailable() {
controller.init(INVALID_SUBSCRIPTION_ID)
@@ -165,6 +182,27 @@
}
@Test
+ fun getAvailabilityStatus_carrierConfigEnabledMmsFalse_unavailable() {
+ defaultDataSubId = SUB_2_ID
+ mockTelephonyManager2.stub {
+ on { isDataEnabled } doReturn false
+ on {
+ isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+ } doReturn true
+ }
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_2_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = false,
+ )
+ controller.init(SUB_2_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+ }
+
+ @Test
fun searchIsAvailable_notDefaultDataAndDataOnAndAutoDataSwitchOn_unavailable() {
mockTelephonyManager1.stub {
on { isDataEnabled } doReturn true
@@ -201,6 +239,27 @@
}
@Test
+ fun searchIsAvailable_carrierConfigEnabledMmsFalse_unavailable() {
+ defaultDataSubId = SUB_2_ID
+ mockTelephonyManager2.stub {
+ on { isDataEnabled } doReturn false
+ on {
+ isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+ } doReturn true
+ }
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_2_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = false,
+ )
+ controller.init(SUB_2_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+ }
+
+ @Test
fun isChecked_whenMmsNotAlwaysAllowed_returnFalse() {
mockTelephonyManager2.stub {
on {
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/UiccSlotRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/UiccSlotRepositoryTest.kt
index 96aa151..911e1d1 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/UiccSlotRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/UiccSlotRepositoryTest.kt
@@ -44,7 +44,7 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isFalse()
}
@@ -61,7 +61,7 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isFalse()
}
@@ -78,7 +78,7 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isTrue()
}
@@ -95,7 +95,7 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isTrue()
}
@@ -116,7 +116,7 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isFalse()
}
@@ -137,13 +137,13 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isTrue()
}
@Test
- fun anyRemovablePhysicalSimEnabled_activePsim_returnsTrue() {
+ fun anyRemovablePhysicalSimSlotActiveAndInserted_activePsim_returnsTrue() {
mockTelephonyManager.stub {
on { uiccSlotsInfo } doReturn
arrayOf(
@@ -152,13 +152,13 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isTrue()
}
@Test
- fun anyRemovablePhysicalSimEnabled_inactivePsim_returnsFalse() {
+ fun anyRemovablePhysicalSimSlotActiveAndInserted_inactivePsim_returnsFalse() {
mockTelephonyManager.stub {
on { uiccSlotsInfo } doReturn
arrayOf(
@@ -167,13 +167,13 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isFalse()
}
@Test
- fun anyRemovablePhysicalSimEnabled_activeEsimAndActivePsim_returnsTrue() {
+ fun anyRemovablePhysicalSimSlotActiveAndInserted_activeEsimAndActivePsim_returnsTrue() {
mockTelephonyManager.stub {
on { uiccSlotsInfo } doReturn
arrayOf(
@@ -184,13 +184,13 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isTrue()
}
@Test
- fun anyRemovablePhysicalSimEnabled_activeEsimAndInactivePsim_returnsFalse() {
+ fun anyRemovablePhysicalSimSlotActiveAndInserted_activeEsimAndInactivePsim_returnsFalse() {
mockTelephonyManager.stub {
on { uiccSlotsInfo } doReturn
arrayOf(
@@ -201,16 +201,16 @@
)
}
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isFalse()
}
@Test
- fun anyRemovablePhysicalSimEnabled_uiccSlotInfoIsNull_returnsFalse() {
+ fun anyRemovablePhysicalSimSlotActiveAndInserted_uiccSlotInfoIsNull_returnsFalse() {
mockTelephonyManager.stub { on { uiccSlotsInfo } doReturn arrayOf(null) }
- val result = repository.anyRemovablePhysicalSimEnabled()
+ val result = repository.anyRemovablePhysicalSimSlotActiveAndInserted()
assertThat(result).isFalse()
}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/mode/NetworkModesTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/mode/NetworkModesTest.kt
new file mode 100644
index 0000000..799ac0f
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/mode/NetworkModesTest.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2024 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.settings.network.telephony.mode
+
+import android.telephony.TelephonyManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class NetworkModesTest {
+
+ @Test
+ fun addNrToLteNetworkMode_lteOnly() {
+ val nrNetworkMode =
+ NetworkModes.addNrToLteNetworkMode(TelephonyManager.NETWORK_MODE_LTE_ONLY)
+
+ assertThat(nrNetworkMode).isEqualTo(TelephonyManager.NETWORK_MODE_NR_LTE)
+ }
+
+ @Test
+ fun addNrToLteNetworkMode_lteCdmaEvdo() {
+ val nrNetworkMode =
+ NetworkModes.addNrToLteNetworkMode(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO)
+
+ assertThat(nrNetworkMode).isEqualTo(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO)
+ }
+
+ @Test
+ fun reduceNrToLteNetworkMode_nrLte() {
+ val lteNetworkMode =
+ NetworkModes.reduceNrToLteNetworkMode(TelephonyManager.NETWORK_MODE_NR_LTE)
+
+ assertThat(lteNetworkMode).isEqualTo(TelephonyManager.NETWORK_MODE_LTE_ONLY)
+ }
+
+ @Test
+ fun reduceNrToLteNetworkMode_nrLteCdmaEvdo() {
+ val lteNetworkMode =
+ NetworkModes.reduceNrToLteNetworkMode(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO)
+
+ assertThat(lteNetworkMode).isEqualTo(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO)
+ }
+}
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index be43f8e..07df3c8 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -26,11 +26,14 @@
"androidx.test.ext.junit",
"androidx.test.rules",
"flag-junit",
+ "kotlin-test",
+ "mockito-kotlin2",
"mockito-target-minus-junit4",
"platform-test-annotations",
"platform-test-rules",
"truth",
"kotlinx_coroutines_test",
+ "SettingsLibPreference-testutils",
"Settings-testutils2",
"servicestests-utils",
// Don't add SettingsLib libraries here - you can use them directly as they are in the
diff --git a/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java b/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java
index 342212a..4c07555 100644
--- a/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java
+++ b/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java
@@ -331,9 +331,7 @@
.isEqualTo(getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_UNSET, mPackageName));
}
- @Test
- public void testGetUserMinAspectRatioEntry_enabledFullscreenOverride_returnsFullscreen() {
- setIsOverrideToFullscreenEnabled(true);
+ private void assertUnsetIsFullscreen() {
// Fullscreen option is pre-selected
assertThat(getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_UNSET, mPackageName))
.isEqualTo(ResourcesUtils.getResourcesString(
@@ -347,9 +345,7 @@
"user_aspect_ratio_app_default"));
}
- @Test
- public void testGetUserMinAspectRatioEntry_disabledFullscreenOverride_returnsUnchanged() {
- setIsOverrideToFullscreenEnabled(false);
+ private void assertUnsetIsAppDefault() {
// Fullscreen option is not pre-selected
assertThat(getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_UNSET, mPackageName))
.isEqualTo(ResourcesUtils.getResourcesString(
@@ -358,9 +354,43 @@
}
@Test
- public void testIsOverrideToFullscreenEnabled_returnsTrue()
+ public void testGetUserMinAspectRatioEntry_enabledFullscreenCompatChange_returnsFullscreen() {
+ setIsOverrideToFullscreenEnabledBecauseCompatChange(true);
+ assertUnsetIsFullscreen();
+ }
+
+ @Test
+ public void testGetUserMinAspectRatioEntry_enabledFullscreenOverrideUniRes_returnsFullscreen() {
+ setIsOverrideToFullscreenEnabledBecauseUniversalResizeable(true);
+ assertUnsetIsFullscreen();
+ }
+
+ @Test
+ public void testGetUserMinAspectRatioEntry_noFullscreenCompatChange_returnsUnchanged() {
+ setIsOverrideToFullscreenEnabledBecauseCompatChange(false);
+ assertUnsetIsAppDefault();
+ }
+
+ @Test
+ public void testGetUserMinAspectRatioEntry_noFullscreenUnivRes_returnsUnchanged() {
+ setIsOverrideToFullscreenEnabledBecauseUniversalResizeable(false);
+ assertUnsetIsAppDefault();
+ }
+
+ @Test
+ public void testIsOverrideToFullscreenEnabledCompatChange_returnsTrue()
throws PackageManager.NameNotFoundException {
- setIsOverrideToFullscreenEnabled(true);
+ setIsOverrideToFullscreenEnabledBecauseCompatChange(true);
+ assertTrue(mUtils.isOverrideToFullscreenEnabled(mPackageName, mContext.getUserId()));
+
+ mockProperty(PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE, true);
+ assertTrue(mUtils.isOverrideToFullscreenEnabled(mPackageName, mContext.getUserId()));
+ }
+
+ @Test
+ public void testIsOverrideToFullscreenEnabledUnivRes_returnsTrue()
+ throws PackageManager.NameNotFoundException {
+ setIsOverrideToFullscreenEnabledBecauseUniversalResizeable(true);
assertTrue(mUtils.isOverrideToFullscreenEnabled(mPackageName, mContext.getUserId()));
mockProperty(PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE, true);
@@ -370,7 +400,7 @@
@Test
public void testIsOverrideToFullscreenEnabled_optOut_returnsFalse()
throws PackageManager.NameNotFoundException {
- setIsOverrideToFullscreenEnabled(true);
+ setIsOverrideToFullscreenEnabledBecauseCompatChange(true);
mockProperty(PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE, false);
assertFalse(mUtils.isOverrideToFullscreenEnabled(mPackageName, mContext.getUserId()));
}
@@ -382,6 +412,12 @@
}
@Test
+ public void testIsOverrideToFullscreenEnabledUnivRes_flagDisabled_returnsFalse() {
+ mUtils.setFullscreenCompatChange(true);
+ assertFalse(mUtils.isOverrideToFullscreenEnabled(mPackageName, mContext.getUserId()));
+ }
+
+ @Test
public void testIsOverrideToFullscreenEnabled_optionDisabled_returnsFalse() {
mUtils.setFullscreenCompatChange(true);
when(mUtils.hasAspectRatioOption(USER_MIN_ASPECT_RATIO_FULLSCREEN, mPackageName))
@@ -389,7 +425,7 @@
assertFalse(mUtils.isOverrideToFullscreenEnabled(mPackageName, mContext.getUserId()));
}
- private void setIsOverrideToFullscreenEnabled(boolean enabled) {
+ private void setIsOverrideToFullscreenEnabledBecauseCompatChange(boolean enabled) {
if (enabled) {
mSetFlagsRule.enableFlags(FLAG_USER_MIN_ASPECT_RATIO_APP_DEFAULT);
mUtils = new FakeUserAspectRatioManager(mContext, mIPm);
@@ -399,6 +435,16 @@
.thenReturn(enabled);
}
+ private void setIsOverrideToFullscreenEnabledBecauseUniversalResizeable(boolean enabled) {
+ if (enabled) {
+ mSetFlagsRule.enableFlags(FLAG_USER_MIN_ASPECT_RATIO_APP_DEFAULT);
+ mUtils = new FakeUserAspectRatioManager(mContext, mIPm);
+ }
+ mUtils.setUniversalResizeable(enabled);
+ when(mUtils.hasAspectRatioOption(USER_MIN_ASPECT_RATIO_FULLSCREEN, mPackageName))
+ .thenReturn(enabled);
+ }
+
private void enableAllDefaultAspectRatioOptions() {
final int[] aspectRatioOptions = new int[] {
USER_MIN_ASPECT_RATIO_UNSET,
@@ -457,6 +503,7 @@
private static class FakeUserAspectRatioManager extends UserAspectRatioManager {
private boolean mFullscreenCompatChange = false;
+ private boolean mIsUniversalResizeable = false;
private FakeUserAspectRatioManager(@NonNull Context context, IPackageManager pm) {
super(context, pm);
@@ -467,8 +514,17 @@
return mFullscreenCompatChange;
}
+ @Override
+ boolean isUniversalResizeable(String pkgName, int userId) {
+ return mIsUniversalResizeable;
+ }
+
void setFullscreenCompatChange(boolean enabled) {
mFullscreenCompatChange = enabled;
}
+
+ void setUniversalResizeable(boolean enabled) {
+ mIsUniversalResizeable = enabled;
+ }
}
}
diff --git a/tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
index 7e942d9..9a09bf1 100644
--- a/tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
@@ -93,7 +93,7 @@
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
when(mBiometricManager.canAuthenticate(mContext.getUserId(),
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ BiometricManager.Authenticators.IDENTITY_CHECK))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE);
mFactory = FakeFeatureFactory.setupForTest();
@@ -213,7 +213,7 @@
public void onActivityResult_confirmPasswordRequestCompleted_launchBiometricPrompt() {
when(mUserManager.isAdminUser()).thenReturn(true);
when(mBiometricManager.canAuthenticate(mContext.getUserId(),
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ BiometricManager.Authenticators.IDENTITY_CHECK))
.thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
final boolean activityResultHandled = mController.onActivityResult(
@@ -233,8 +233,8 @@
public void onActivityResult_confirmPasswordRequestCompleted_mandatoryBiometricsError() {
when(mUserManager.isAdminUser()).thenReturn(true);
when(mBiometricManager.canAuthenticate(mContext.getUserId(),
- BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
- .thenReturn(BiometricManager.BIOMETRIC_ERROR_MANDATORY_NOT_ACTIVE);
+ BiometricManager.Authenticators.IDENTITY_CHECK))
+ .thenReturn(BiometricManager.BIOMETRIC_ERROR_IDENTITY_CHECK_NOT_ACTIVE);
final boolean activityResultHandled = mController.onActivityResult(
BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
diff --git a/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt b/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt
index a8c5e68..70e6de1 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt
@@ -30,6 +30,7 @@
import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor
import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor
import com.android.settings.biometrics.fingerprint2.lib.model.Default
+import com.android.settings.biometrics.fingerprint2.lib.model.Orientation
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel
@@ -111,6 +112,8 @@
override val isEnabled: Boolean
get() = true
override fun announce(clazz: Class<*>, announcement: CharSequence?) {}
+ override fun interrupt() {
+ }
}
foldStateInteractor =
object : FoldStateInteractor {
@@ -128,6 +131,7 @@
override val rotationFromDefault: Flow<Int> = flowOf(Surface.ROTATION_0)
override fun getRotationFromDefault(rotation: Int): Int = rotation
+ override val orientationChanged: Flow<Orientation> = flowOf(Orientation.Portrait)
}
underTest =
FingerprintEnrollFindSensorViewModel(
diff --git a/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java b/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java
index 6675d5a..3faa52e 100644
--- a/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java
+++ b/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java
@@ -19,10 +19,7 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import android.os.Looper;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -48,17 +45,6 @@
}
@Test
- public void addFirmwareUpdateCategory_defaultValue_returnsFalse() {
- if (Looper.myLooper() == null) {
- Looper.prepare();
- }
- PreferenceManager preferenceManager = new PreferenceManager(mContext);
- PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
-
- assertThat(mFeatureProvider.addFirmwareUpdateCategory(mContext, screen)).isFalse();
- }
-
- @Test
public void getActionKeyIcon_defaultValue_returnsNull() {
assertThat(mFeatureProvider.getActionKeyIcon(mContext)).isNull();
}
diff --git a/tests/unit/src/com/android/settings/language/LanguageSettingScreenTest.kt b/tests/unit/src/com/android/settings/language/LanguageSettingScreenTest.kt
new file mode 100644
index 0000000..7b519a2
--- /dev/null
+++ b/tests/unit/src/com/android/settings/language/LanguageSettingScreenTest.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2024 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.settings.language
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.pm.PackageManager
+import android.content.res.Resources
+import com.android.settings.Settings.LanguageSettingsActivity
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Assert
+import org.junit.Test
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+class LanguageSettingScreenTest: CatalystScreenTestCase() {
+ override val preferenceScreenCreator = LanguageSettingScreen()
+
+ override val flagName: String
+ get() = Flags.FLAG_CATALYST_LANGUAGE_SETTING
+
+ @Test
+ fun key() {
+ assertThat(preferenceScreenCreator.key).isEqualTo(LanguageSettingScreen.KEY)
+ }
+
+ override fun migration() {}
+}
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java
index 246fad6..8b44c98 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java
@@ -31,7 +31,7 @@
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.android.settings.widget.TickButtonPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
import org.junit.Ignore;
@@ -53,10 +53,10 @@
private PreferenceCategory mPreferenceCategory;
private PreferenceScreen mPreferenceScreen;
private TermsOfAddressFeminineController mController;
- private TickButtonPreference mFemininePreference;
- private TickButtonPreference mMasculinePreference;
- private TickButtonPreference mNotSpecifiedPreference;
- private TickButtonPreference mNeutralPreference;
+ private SelectorWithWidgetPreference mFemininePreference;
+ private SelectorWithWidgetPreference mMasculinePreference;
+ private SelectorWithWidgetPreference mNotSpecifiedPreference;
+ private SelectorWithWidgetPreference mNeutralPreference;
private GrammaticalInflectionManager mGrammaticalInflectionManager;
@Before
@@ -74,13 +74,13 @@
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_CATEGORY_TERMS_OF_ADDRESS);
- mNotSpecifiedPreference = new TickButtonPreference(mContext);
+ mNotSpecifiedPreference = new SelectorWithWidgetPreference(mContext);
mNotSpecifiedPreference.setKey(KEY_NOT_SPECIFIED);
- mFemininePreference = new TickButtonPreference(mContext);
+ mFemininePreference = new SelectorWithWidgetPreference(mContext);
mFemininePreference.setKey(KEY_FEMININE);
- mMasculinePreference = new TickButtonPreference(mContext);
+ mMasculinePreference = new SelectorWithWidgetPreference(mContext);
mMasculinePreference.setKey(KEY_MASCULINE);
- mNeutralPreference = new TickButtonPreference(mContext);
+ mNeutralPreference = new SelectorWithWidgetPreference(mContext);
mNeutralPreference.setKey(KEY_NEUTRAL);
mPreferenceScreen.addPreference(mPreferenceCategory);
mPreferenceScreen.addPreference(mNotSpecifiedPreference);
@@ -95,8 +95,8 @@
@Test
@Ignore("b/339543490")
public void displayPreference_setGrammaticalGenderIsFeminine_FeminineIsSelected() {
- TickButtonPreference selectedPreference =
- (TickButtonPreference) mPreferenceScreen.getPreference(2);
+ SelectorWithWidgetPreference selectedPreference =
+ (SelectorWithWidgetPreference) mPreferenceScreen.getPreference(2);
selectedPreference.performClick();
assertThat(selectedPreference.getKey()).isEqualTo(KEY_FEMININE);
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java
index f5ed395..62ba899 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java
@@ -31,7 +31,7 @@
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.android.settings.widget.TickButtonPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
import org.junit.Ignore;
@@ -53,10 +53,10 @@
private PreferenceCategory mPreferenceCategory;
private PreferenceScreen mPreferenceScreen;
private TermsOfAddressMasculineController mController;
- private TickButtonPreference mFemininePreference;
- private TickButtonPreference mMasculinePreference;
- private TickButtonPreference mNotSpecifiedPreference;
- private TickButtonPreference mNeutralPreference;
+ private SelectorWithWidgetPreference mFemininePreference;
+ private SelectorWithWidgetPreference mMasculinePreference;
+ private SelectorWithWidgetPreference mNotSpecifiedPreference;
+ private SelectorWithWidgetPreference mNeutralPreference;
private GrammaticalInflectionManager mGrammaticalInflectionManager;
@Before
@@ -74,13 +74,13 @@
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_CATEGORY_TERMS_OF_ADDRESS);
- mNotSpecifiedPreference = new TickButtonPreference(mContext);
+ mNotSpecifiedPreference = new SelectorWithWidgetPreference(mContext);
mNotSpecifiedPreference.setKey(KEY_NOT_SPECIFIED);
- mFemininePreference = new TickButtonPreference(mContext);
+ mFemininePreference = new SelectorWithWidgetPreference(mContext);
mFemininePreference.setKey(KEY_FEMININE);
- mMasculinePreference = new TickButtonPreference(mContext);
+ mMasculinePreference = new SelectorWithWidgetPreference(mContext);
mMasculinePreference.setKey(KEY_MASCULINE);
- mNeutralPreference = new TickButtonPreference(mContext);
+ mNeutralPreference = new SelectorWithWidgetPreference(mContext);
mNeutralPreference.setKey(KEY_NEUTRAL);
mPreferenceScreen.addPreference(mPreferenceCategory);
mPreferenceScreen.addPreference(mNotSpecifiedPreference);
@@ -95,8 +95,8 @@
@Test
@Ignore("b/339543490")
public void displayPreference_setGrammaticalGenderIsMasculine_MasculineIsSelected() {
- TickButtonPreference selectedPreference =
- (TickButtonPreference) mPreferenceScreen.getPreference(3);
+ SelectorWithWidgetPreference selectedPreference =
+ (SelectorWithWidgetPreference) mPreferenceScreen.getPreference(3);
selectedPreference.performClick();
assertThat(selectedPreference.getKey()).isEqualTo(KEY_MASCULINE);
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java
index 0e53198..8fd836b 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java
@@ -31,7 +31,7 @@
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.android.settings.widget.TickButtonPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
import org.junit.Ignore;
@@ -53,10 +53,10 @@
private PreferenceCategory mPreferenceCategory;
private PreferenceScreen mPreferenceScreen;
private TermsOfAddressNeutralController mController;
- private TickButtonPreference mFemininePreference;
- private TickButtonPreference mMasculinePreference;
- private TickButtonPreference mNotSpecifiedPreference;
- private TickButtonPreference mNeutralPreference;
+ private SelectorWithWidgetPreference mFemininePreference;
+ private SelectorWithWidgetPreference mMasculinePreference;
+ private SelectorWithWidgetPreference mNotSpecifiedPreference;
+ private SelectorWithWidgetPreference mNeutralPreference;
private GrammaticalInflectionManager mGrammaticalInflectionManager;
@Before
@@ -74,13 +74,13 @@
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_CATEGORY_TERMS_OF_ADDRESS);
- mNotSpecifiedPreference = new TickButtonPreference(mContext);
+ mNotSpecifiedPreference = new SelectorWithWidgetPreference(mContext);
mNotSpecifiedPreference.setKey(KEY_NOT_SPECIFIED);
- mFemininePreference = new TickButtonPreference(mContext);
+ mFemininePreference = new SelectorWithWidgetPreference(mContext);
mFemininePreference.setKey(KEY_FEMININE);
- mMasculinePreference = new TickButtonPreference(mContext);
+ mMasculinePreference = new SelectorWithWidgetPreference(mContext);
mMasculinePreference.setKey(KEY_MASCULINE);
- mNeutralPreference = new TickButtonPreference(mContext);
+ mNeutralPreference = new SelectorWithWidgetPreference(mContext);
mNeutralPreference.setKey(KEY_NEUTRAL);
mPreferenceScreen.addPreference(mPreferenceCategory);
mPreferenceScreen.addPreference(mNotSpecifiedPreference);
@@ -95,8 +95,8 @@
@Test
@Ignore("b/339543490")
public void displayPreference_setGrammaticalGenderIsNotSpecified_NeutralIsSelected() {
- TickButtonPreference selectedPreference =
- (TickButtonPreference) mPreferenceScreen.getPreference(4);
+ SelectorWithWidgetPreference selectedPreference =
+ (SelectorWithWidgetPreference) mPreferenceScreen.getPreference(4);
selectedPreference.performClick();
assertThat(selectedPreference.getKey()).isEqualTo(KEY_NEUTRAL);
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java
index 96bac08..4e9c3ee 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java
@@ -31,7 +31,7 @@
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.android.settings.widget.TickButtonPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
import org.junit.Ignore;
@@ -53,10 +53,10 @@
private PreferenceCategory mPreferenceCategory;
private PreferenceScreen mPreferenceScreen;
private TermsOfAddressNotSpecifiedController mController;
- private TickButtonPreference mFemininePreference;
- private TickButtonPreference mMasculinePreference;
- private TickButtonPreference mNotSpecifiedPreference;
- private TickButtonPreference mNeutralPreference;
+ private SelectorWithWidgetPreference mFemininePreference;
+ private SelectorWithWidgetPreference mMasculinePreference;
+ private SelectorWithWidgetPreference mNotSpecifiedPreference;
+ private SelectorWithWidgetPreference mNeutralPreference;
private GrammaticalInflectionManager mGrammaticalInflectionManager;
@Before
@@ -74,13 +74,13 @@
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_CATEGORY_TERMS_OF_ADDRESS);
- mNotSpecifiedPreference = new TickButtonPreference(mContext);
+ mNotSpecifiedPreference = new SelectorWithWidgetPreference(mContext);
mNotSpecifiedPreference.setKey(KEY_NOT_SPECIFIED);
- mFemininePreference = new TickButtonPreference(mContext);
+ mFemininePreference = new SelectorWithWidgetPreference(mContext);
mFemininePreference.setKey(KEY_FEMININE);
- mMasculinePreference = new TickButtonPreference(mContext);
+ mMasculinePreference = new SelectorWithWidgetPreference(mContext);
mMasculinePreference.setKey(KEY_MASCULINE);
- mNeutralPreference = new TickButtonPreference(mContext);
+ mNeutralPreference = new SelectorWithWidgetPreference(mContext);
mNeutralPreference.setKey(KEY_NEUTRAL);
mPreferenceScreen.addPreference(mPreferenceCategory);
mPreferenceScreen.addPreference(mNotSpecifiedPreference);
@@ -95,8 +95,8 @@
@Test
@Ignore("b/339543490")
public void displayPreference_setGrammaticalGenderIsNotSpecified_NotSpecifiedIsSelected() {
- TickButtonPreference selectedPreference =
- (TickButtonPreference) mPreferenceScreen.getPreference(1);
+ SelectorWithWidgetPreference selectedPreference =
+ (SelectorWithWidgetPreference) mPreferenceScreen.getPreference(1);
selectedPreference.performClick();
assertThat(selectedPreference.getKey()).isEqualTo(KEY_NOT_SPECIFIED);
diff --git a/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java
index ee239ba..7a6a99a 100644
--- a/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java
@@ -34,7 +34,6 @@
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings;
-import android.provider.SettingsSlicesContract;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
@@ -102,7 +101,7 @@
controller.displayPreference(mScreen);
- verify(mPreference).setDependency(SettingsSlicesContract.KEY_AIRPLANE_MODE);
+ verify(mPreference).setDependency(Settings.Global.AIRPLANE_MODE_ON);
}
@Test
diff --git a/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
index ab57f4b..54b78c7 100644
--- a/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
@@ -52,7 +52,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.network.CarrierConfigCache;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
@@ -149,7 +148,7 @@
@Test
public void updateState_selectedOn5gItem() {
mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE);
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
mController.init(SUB_ID, mFragmentManager);
@@ -161,14 +160,13 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(
- TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
}
@UiThreadTest
@Test
public void updateState_disAllowed5g_5gOptionHidden() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE);
mController.init(SUB_ID, mFragmentManager);
@@ -188,7 +186,7 @@
@UiThreadTest
@Test
public void updateState_disAllowed5g_selectOn4gOption() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE);
mController.init(SUB_ID, mFragmentManager);
@@ -200,14 +198,13 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(
- TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
}
@UiThreadTest
@Test
public void updateState_NrEnableBoolFalse_5gOptionHidden() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA);
mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE);
@@ -221,8 +218,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
assertThat(mPreference.getEntryValues())
.asList()
.doesNotContain(
@@ -264,14 +260,13 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
}
@UiThreadTest
@Test
public void updateState_updateByNetworkMode() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
// NETWORK_MODE_TDSCDMA_GSM_WCDMA = RAF_TD_SCDMA | GSM | WCDMA
when(mTelephonyManager.getAllowedNetworkTypesForReason(
@@ -280,14 +275,14 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
assertThat(mPreference.getSummary()).isEqualTo("3G");
}
@UiThreadTest
@Test
public void updateState_updateByNetworkMode_useDefaultValue() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
// NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = LTE | CDMA | EVDO | GSM | WCDMA
when(mTelephonyManager.getAllowedNetworkTypesForReason(
@@ -296,41 +291,41 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
}
@UiThreadTest
@Test
public void onPreferenceChange_updateSuccess() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
doReturn(true).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
RadioAccessFamily.getRafFromNetworkType(
- TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+ TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
mController.updateState(mPreference);
mController.onViewCreated(new TestLifecycleOwner());
mController.onPreferenceChange(mPreference,
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
}
@UiThreadTest
@Test
public void onPreferenceChange_updateFail() {
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
doReturn(false).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
RadioAccessFamily.getRafFromNetworkType(
- TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
+ TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
mController.updateState(mPreference);
mController.onViewCreated(new TestLifecycleOwner());
mController.onPreferenceChange(mPreference,
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
assertThat(mPreference.getValue()).isNotEqualTo(
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
}
@UiThreadTest
@@ -341,7 +336,7 @@
PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
mPreference.setKey(KEY);
screen.addPreference(mPreference);
- mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+ mockEnabledNetworkMode(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
// NETWORK_MODE_TDSCDMA_GSM_WCDMA = RAF_TD_SCDMA | GSM | WCDMA
when(mTelephonyManager.getAllowedNetworkTypesForReason(
@@ -353,7 +348,7 @@
mLifecycle.handleLifecycleEvent(ON_START);
assertThat(Integer.parseInt(mPreference.getValue())).isEqualTo(
- TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+ TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
assertThat(mPreference.getSummary()).isEqualTo("3G");
}
@@ -412,20 +407,19 @@
}
private void mockEnabledNetworkMode(int networkMode) {
- if (networkMode == TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA) {
+ if (networkMode == TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA) {
mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, true);
- } else if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA
- || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) {
+ } else if (networkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA
+ || networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) {
mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true);
- } else if (networkMode == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA) {
+ } else if (networkMode == TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA) {
mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, true);
- } else if (networkMode == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA
- || networkMode
- == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA) {
+ } else if (networkMode == TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA
+ || networkMode == TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA) {
mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true);
diff --git a/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
index 663945d..d397291 100644
--- a/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
@@ -40,7 +40,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.network.CarrierConfigCache;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
import com.android.settings.testutils.ResourcesUtils;
import org.junit.Before;
@@ -99,7 +98,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getValue()).isEqualTo(
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
assertThat(mPreference.getSummary()).isEqualTo(
ResourcesUtils.getResourcesString(mContext,
"preferred_network_mode_tdscdma_gsm_wcdma_summary"));
@@ -108,11 +107,10 @@
@Test
public void onPreferenceChange_updateNetworkMode() {
mController.onPreferenceChange(mPreference,
- String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
+ String.valueOf(TelephonyManager.NETWORK_MODE_LTE_TDSCDMA));
verify(mTelephonyManager, times(1)).setAllowedNetworkTypesForReason(
TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER,
- RadioAccessFamily.getRafFromNetworkType(
- TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
+ RadioAccessFamily.getRafFromNetworkType(TelephonyManager.NETWORK_MODE_LTE_TDSCDMA));
}
}
diff --git a/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java
index 3b72cba..1881e01 100644
--- a/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java
+++ b/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java
@@ -25,16 +25,15 @@
import android.os.Looper;
import android.provider.Settings;
-import com.android.internal.app.LocalePicker;
-import com.android.settings.widget.TickButtonPreference;
-
-import androidx.preference.PreferenceManager;
-import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
+import com.android.internal.app.LocalePicker;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -91,8 +90,9 @@
@Test
public void displayPreference_setSelectPreferredFirstDayOfWeekIsDefault() {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(0);
- pref.performClick();
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(0);
+ pref.onClick();
String record = Settings.System.getString(
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
@@ -103,8 +103,9 @@
@Test
public void displayPreference_setSelectPreferredFirstDayOfWeekIsSunday() {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(1);
- pref.performClick();
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(1);
+ pref.onClick();
String record = Settings.System.getString(
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
@@ -114,8 +115,9 @@
@Test
public void displayPreference_setSelectPreferredFirstDayOfWeekIsMonday() {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(2);
- pref.performClick();
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(2);
+ pref.onClick();
String record = Settings.System.getString(
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
diff --git a/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java
index 50e21fe..96d1335 100644
--- a/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java
+++ b/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java
@@ -38,10 +38,11 @@
import com.android.internal.app.LocalePicker;
import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.widget.TickButtonPreference;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.After;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import java.util.Locale;
@@ -82,7 +83,8 @@
NumberingSystemItemController.ARG_VALUE_LANGUAGE_SELECT);
bundle.putString(
NumberingSystemItemController.KEY_SELECTED_LANGUAGE, Locale.US.toLanguageTag());
- TickButtonPreference preference = new TickButtonPreference(mApplicationContext);
+ SelectorWithWidgetPreference preference =
+ new SelectorWithWidgetPreference(mApplicationContext);
preference.setKey("I_am_the_key");
mPreferenceScreen.addPreference(preference);
mController = new NumberingSystemItemController(mApplicationContext, bundle);
@@ -104,13 +106,15 @@
@Test
@UiThreadTest
+ @Ignore("b/377633438")
public void handlePreferenceTreeClick_numbersSelect_preferenceHasTick() {
Bundle bundle = new Bundle();
bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
NumberingSystemItemController.ARG_VALUE_NUMBERING_SYSTEM_SELECT);
bundle.putString(
NumberingSystemItemController.KEY_SELECTED_LANGUAGE, Locale.US.toLanguageTag());
- TickButtonPreference preference = new TickButtonPreference(mApplicationContext);
+ SelectorWithWidgetPreference preference =
+ new SelectorWithWidgetPreference(mApplicationContext);
preference.setKey("test_key");
mPreferenceScreen.addPreference(preference);
mController = new NumberingSystemItemController(mApplicationContext, bundle);
@@ -133,8 +137,10 @@
NumberingSystemItemController.ARG_VALUE_NUMBERING_SYSTEM_SELECT);
bundle.putString(
NumberingSystemItemController.KEY_SELECTED_LANGUAGE, "ar-BH");
- TickButtonPreference defaultPreference = new TickButtonPreference(mApplicationContext);
- TickButtonPreference numberPreference = new TickButtonPreference(mApplicationContext);
+ SelectorWithWidgetPreference defaultPreference =
+ new SelectorWithWidgetPreference(mApplicationContext);
+ SelectorWithWidgetPreference numberPreference =
+ new SelectorWithWidgetPreference(mApplicationContext);
defaultPreference.setKey("default");
numberPreference.setKey("latn");
mPreferenceScreen.addPreference(defaultPreference);
diff --git a/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java
index 0417443..deedb64 100644
--- a/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java
+++ b/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java
@@ -17,6 +17,7 @@
package com.android.settings.regionalpreferences;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.spy;
import android.content.Context;
@@ -24,16 +25,15 @@
import android.os.Looper;
import android.provider.Settings;
-import com.android.internal.app.LocalePicker;
-import com.android.settings.widget.TickButtonPreference;
-
-import androidx.preference.PreferenceManager;
-import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
+import com.android.internal.app.LocalePicker;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -88,8 +88,9 @@
@Test
public void displayPreference_setSelectPreferredTemperatureUnitIsDefault() {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(0);
- pref.performClick();
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(0);
+ pref.onClick();
String record = Settings.System.getString(
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
@@ -101,8 +102,9 @@
@Test
public void displayPreference_setSelectPreferredTemperatureUnitIsCelsius() {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(1);
- pref.performClick();
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(1);
+ pref.onClick();
String record = Settings.System.getString(
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
@@ -112,8 +114,9 @@
@Test
public void displayPreference_setSelectPreferredTemperatureUnitIsFahrenhe() {
- TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(2);
- pref.performClick();
+ SelectorWithWidgetPreference pref =
+ (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(2);
+ pref.onClick();
String record = Settings.System.getString(
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
diff --git a/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java b/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
index 0e51733..a3f82b5 100644
--- a/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
+++ b/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
@@ -31,6 +31,7 @@
import android.content.Intent;
import android.content.pm.PackageManager;
+import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
@@ -90,6 +91,7 @@
}
@Test
+ @UiThreadTest
public void noAvailableAlternativeFragmentAvailable_defaultFragmentSet() {
when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
.thenReturn(false);
@@ -99,6 +101,7 @@
}
@Test
+ @UiThreadTest
public void alternativeFragmentAvailable_alternativeFragmentSet() {
when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
.thenReturn(true);
@@ -110,6 +113,7 @@
}
@Test
+ @UiThreadTest
public void noAvailableAlternativeFragmentAvailable_alternativeFragmentNotValid() {
when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
.thenReturn(false);
@@ -118,6 +122,7 @@
}
@Test
+ @UiThreadTest
public void alternativeFragmentAvailable_alternativeFragmentIsValid() {
when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
.thenReturn(true);
@@ -128,6 +133,7 @@
}
@Test
+ @UiThreadTest
public void onCreate_whenSafetyCenterEnabled_redirectsToSafetyCenter() {
when(mSafetyCenterManagerWrapper.isEnabled(any(Context.class))).thenReturn(true);
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
@@ -139,6 +145,7 @@
}
@Test
+ @UiThreadTest
public void onCreate_whenSafetyCenterDisabled_doesntRedirectToSafetyCenter() {
when(mSafetyCenterManagerWrapper.isEnabled(any(Context.class))).thenReturn(false);